Support disabling overscroll on certain edges of GtkScrolledWindow
There are certain use cases where it's desirable to not have overscroll effect on a certain edge of a scrolled window, but to instead propagate scroll events, such as:
- Showing a search bar when scrolling up from the topmost position
- Triggering a back swipe gesture when scrolling left (e.g. libhandy makes an extensive use of this with HdyLeaflet/HdyDeck in GTK3)
- Implementing a pull to refresh gesture, really same case as revealing a search bar
Currently it's not possible: when reaching the edge, GtkScrolledWindow will still stop scroll events and instead emit a separate edge-overshot signal. (which does't allow to get the offset from the edge, so it's not possible to do position-based animation)
Similarly, it's important to propagate scroll events for directions that don't have scrollbars and thus never show overscroll glow to begin with. This was the case in GTK 3, but not GTK 4. (This is only the case for scroll events; touch gestures work fine here because scrolled window will deny that event sequence).
A related case here is having nested scrolled windows, e.g. for implementing Miller columns. Right now it will only work with touchscreen.
One problem here is that there are no grabs anymore, and scroll events don't have event sequences either, so it's not possible for multiple widgets to coordinate their scrolling in a way that would work for this.