GNOME Bugzilla – Bug 702858
Show "edge scrolling" when 2-finger scrolling not supported
Last modified: 2013-10-18 10:46:10 UTC
I cannot select edge scrolling in the GUI when running g-c-c 3.8 ... I had to enable it using gsettings. If anything edge scrolling should be the default and not completely hidden.
Created attachment 247609 [details] Screenshot of touchpad settings
Created attachment 247610 [details] Screenshot
Created attachment 247611 [details] xinput list-props output
IRC discussion: <hadess> most touchpads support 2 finger scrolling, horizontally and vertically <hadess> drago01, but for people who aren't used to it like you are it made the touchpad act weird <hadess> so the option is still there, but not in the UI <drago01> hadess: but this toucpad does not support two finger scrolling <drago01> hadess: so the new ui basically hides all scrolling options <drago01> hadess: two finger is greyed out (because not supported) and edge scrolling is hidden <hadess> drago01, attach a screenshot to the bug, add ui-review as a keyword <drago01> hadess: ok <hadess> drago01, and attach the output of "xinput list-props" for your touchpad device <drago01> hadess: ok <hadess> drago01, it would probably make sense to show it if there's no other scrolling option <drago01> yeah that's what I am saying <bochecha_> hadess: that would be great indeed (I have a netbook which doesn't support two-finger-scroll either)
The original intent was not to expose these two ways of scrolling concurrently. In this particular case, where the blessed 2 finger scrolling is unsupported, I would be fine exposing the side scrolling toggle. I would actually favor hiding the 2 finger scroll toggle instead of insensitivizing when we don't support it. But definitely not show the side scrolling when both methods are supported. Only show 2 finger scroll toggle in that case.
*** Bug 699375 has been marked as a duplicate of this bug. ***
(In reply to comment #5) > The original intent was not to expose these two ways of scrolling concurrently. > > In this particular case, where the blessed 2 finger scrolling is unsupported, I > would be fine exposing the side scrolling toggle. For what purpose will be the "side scrolling toggle"? "Two finger scrolling toggle" toggles between two-finger and edge scrolling. Between what will be "side scrolling toggle" toggling? > I would actually favor hiding the 2 finger scroll toggle instead of > insensitivizing when we don't support it. But definitely not show the side > scrolling when both methods are supported. Only show 2 finger scroll toggle in > that case. Yes, we can hide it instead...
Created attachment 247745 [details] [review] enable edge scrolling if two-finger scroll is unavailable
(In reply to comment #7) > For what purpose will be the "side scrolling toggle"? "Two finger scrolling > toggle" toggles between two-finger and edge scrolling. Between what will be > "side scrolling toggle" toggling? My understanding was that the checkbox toggles the feature on or off, not that it changes behavior from two finger to side scrolling. That would render the whole conversation invalid.
(In reply to comment #9) > (In reply to comment #7) > That would render the whole conversation invalid. Not really because here it is grayed out and scrolling is disabled by default. So I end up with no scrolling and no UI to enable it.
(In reply to comment #10) > Not really because here it is grayed out and scrolling is disabled by default. > So I end up with no scrolling and no UI to enable it. That's precisely what reassured me that the option is only about enabling or disabling 2 finger scroll.
(In reply to comment #10) > (In reply to comment #9) > > (In reply to comment #7) > > That would render the whole conversation invalid. > > Not really because here it is grayed out and scrolling is disabled by default. > So I end up with no scrolling and no UI to enable it. Yes, but the current behavioral is bug. It should be unchecked and grayed out in this case and generally it should toggle between edge/two finger scrolling. Attached patch should fix it...
*** Bug 703579 has been marked as a duplicate of this bug. ***
Review of attachment 247745 [details] [review]: Looks fine otherwise. gnome-3-8 and master? ::: plugins/mouse/gsd-mouse-manager.c @@ +749,3 @@ + if (!prop_twofinger && method == GSD_TOUCHPAD_SCROLL_METHOD_TWO_FINGER_SCROLLING) { + method = GSD_TOUCHPAD_SCROLL_METHOD_EDGE_SCROLLING; + g_settings_set_enum (manager->priv->touchpad_settings, KEY_SCROLL_METHOD, method); return; ?
(In reply to comment #14) > Review of attachment 247745 [details] [review]: > > Looks fine otherwise. > > gnome-3-8 and master? I've commited it to the both branches. commit 7ac29947a1fd7e07e053765bb9be78167e0e26d4 commit d5151b90f8d05712c16df7a6737e8ac0b68ab9fb > ::: plugins/mouse/gsd-mouse-manager.c > @@ +749,3 @@ > + if (!prop_twofinger && method == > GSD_TOUCHPAD_SCROLL_METHOD_TWO_FINGER_SCROLLING) { > + method = GSD_TOUCHPAD_SCROLL_METHOD_EDGE_SCROLLING; > + g_settings_set_enum (manager->priv->touchpad_settings, > KEY_SCROLL_METHOD, method); > > return; ? I don't think so we want return in this place.
*** Bug 705955 has been marked as a duplicate of this bug. ***
*** Bug 707593 has been marked as a duplicate of this bug. ***
Created attachment 256795 [details] screenshot This is not fixed on F20 BETA TC2 (control-center-3.10.0-1.fc20.x86_64)
Created attachment 256992 [details] [review] fix two finger scroll detection + prop_twofinger = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "Synaptics Two-Finger Scrolling", False); + if (!prop_twofinger && method == GSD_TOUCHPAD_SCROLL_METHOD_TWO_FINGER_SCROLLING) { This condition doesn't indicate two finger scroll availability correctly probably as man pages: Atom XInternAtom(Display *display, char *atom_name, Bool only_if_exists); If only_if_exists is False, the atom is created if it does not exist. So, I've attached untested patch to fix it likely...
Created attachment 256993 [details] [review] fix two finger scroll detection We can't simply change the only_if_exists property, because it isn't set scrolling properly. Attached patch with different way of detection (also untested). Could somebody prove the patch?
Review of attachment 256993 [details] [review]: I happen to have a laptop without two finger scrolling with me today and yes, this patch does fix it. Looks good ::: plugins/mouse/gsd-mouse-manager.c @@ +748,2 @@ prop_edge = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "Synaptics Edge Scrolling", False); prop_twofinger = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "Synaptics Two-Finger Scrolling", False); Please change these two calls to True for the only_if_exists parameter too. We never want to create these atoms ourselves. A separate patch though.
After 3.10.1 update in F20, this is fixed. I left it "broken" and by default with two-finger-scrolling set, after update and restart, it uses edge-scrolling and everything is ok, "Two finger scroll" is _not available_ in settings, and unchecked. Thanks ;-)
(In reply to comment #22) > After 3.10.1 update in F20, this is fixed. I left it "broken" and by default > with two-finger-scrolling set, after update and restart, it uses edge-scrolling > and everything is ok, "Two finger scroll" is _not available_ in settings, and > unchecked. > > Thanks ;-) Thanks for feedback. (In reply to comment #21) > Review of attachment 256993 [details] [review]: > > I happen to have a laptop without two finger scrolling with me today and yes, > this patch does fix it. > > Looks good > > ::: plugins/mouse/gsd-mouse-manager.c > @@ +748,2 @@ > prop_edge = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default > ()), "Synaptics Edge Scrolling", False); > prop_twofinger = XInternAtom (GDK_DISPLAY_XDISPLAY > (gdk_display_get_default ()), "Synaptics Two-Finger Scrolling", False); > > Please change these two calls to True for the only_if_exists parameter too. We > never want to create these atoms ourselves. A separate patch though. I think the False values there are intentional due to the rest of the function. For example we should to set edge scrolling also if twofinger isn't available... or am I wrong?