Re: Dealing with GTK 3.3.18 scrolling handling changes for GNOME 3.4


In order to provide some background to the ML, scroll events were being
sent to widgets with GDK_BUTTON_PRESS_MASK (no scroll mask required),
but this played odd with smooth scrolling as scrolled windows get scroll
events in 2 ways:

1) bubbled up from the child within
2) received directly via priv->overshoot_window, only if no child
handles scrolling

With the old behavior, 1) would happen on every widget that would handle
button presses, but not necessarily scrolling, so scrolling in a
viewport or textview (handling smooth scroll) with eg. buttons (handling
just button presses) would intermittently coerce smooth and non-smooth
scrolling depending on the widget below the pointer, the weighted
solutions were:

1) Requiring apps to set GDK_SMOOTH_SCROLL_MASK on *every* widget within
a scrolled window if they want smooth scrolling, or face odd behavior
2) Changing GDK so scroll events are only sent if
GDK_[SMOOTH_]SCROLL_MASK is in the evmask.

Both options required changes to applications (different sets though),
and there are likely way more applications with custom UIs within a
viewport than custom scrollable widgets out there, so 2) was chosen

On jue, 2012-03-15 at 12:52 -0400, Colin Walters wrote:
> On Thu, 2012-03-15 at 08:10 -0400, Matthias Clasen wrote:
> > Thanks for bringing these up. I'm sure there will be some more fallout
> > from the xi2 changes. I don't know if we'll be able to have perfectly
> > seamless compatibility in the scroll event case, there are some
> > complications that make that hard.
> But do you have a global sense of whether we should at this point:
> 0) Patch affected applications

I think that should be done anyway for coherence (if you expect scroll
events, setting the scroll mask shouldn't hurt). I could just count 3
custom scrollable widgets in gnome outside of gtk (webkit, g-t and
gucharmap), so it shouldn't be a big effort either.

> 1) Pursue hacks (or non-hacks?) in GTK+ to improve compatibility
> 2) Make it opt-in

Hard to come up with a compatible solution, even if smooth scrolling is


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]