New GTK Setting: "Visually Impaired Scrolling"
I would like to propose a configurable "Visually Impaired Scrolling" setting for GTK. The reason for this is a comment that I found in gtkscale.c:716
while investigating an annoyance I am experiencing:
/* All bindings (even arrow keys) are on both h/v scale, because
* blind users etc. don't care about scale orientation.
*/
The annoyance I'm dealing with is the following:
On a view that scrolls vertically and contains a gazillion GtkScales that are all horizontal and full width, it's impossible for me to scroll the view from the top to the bottom, without changing the GtkScale values. As soon as a GtkScale scrolls underneath the mouse pointer, the vertical scrolling event from the primary mouse wheel gets picked up by that GtkScale and processed as horizontal scrolling - which does make sense from the perspective of the comment above, but certainly not for anyone else.
In my case, I do have a secondary mouse wheel that explicitly sends a horizontal scroll event:
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13: wl_pointer] axis: time: 17965026; axis: 0 (vertical), value: 15.000000
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13: wl_pointer] axis: time: 17965510; axis: 0 (vertical), value: -15.000000
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] axis_stop: axis: 1 (horizontal), discrete: 1
[13: wl_pointer] axis: time: 17966404; axis: 1 (horizontal), value: 15.000000
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] axis_stop: axis: 1 (horizontal), discrete: -1
[13: wl_pointer] axis: time: 17966968; axis: 1 (horizontal), value: -15.000000
Hence my expectation would be that the horizontal GtkScales would only change values when scrolling horizontally (secondary mouse wheel), while vertical GtkScales change values when scrolling vertically (primary mouse wheel).
I understand that there probably has to be a workaround for single-scroll-wheel devices. However, completely ignoring the scroll direction unfortunately is not the right workaround in my opinion.
If you need a specific example to test this behavior check pavucontrol
. Assuming that you have multiple output devices on the outputs tab, you will very likely run into the exact same annoyance when trying to scroll the view vertically.