[gnome-settings-daemon] mouse: Force 2-finger scroll by default if available



commit 570cc8a2561728bdf4ec6c91064c618debc3e5d4
Author: Bastien Nocera <hadess hadess net>
Date:   Thu Dec 17 11:41:12 2015 +0100

    mouse: Force 2-finger scroll by default if available
    
    When the touchpad is two-finger scrolling capable, always enable it.
    
    When the touchpad only supports edge scrolling (usually older devices,
    and usually smaller devices), allow disabling the edge scrolling.
    
    This requires a newer gsettings-desktop-schemas as the scroll-method key
    was removed, and the edge-scroll-enabled key added.
    
    See https://bugzilla.gnome.org/show_bug.cgi?id=759304
    
    https://bugzilla.gnome.org/show_bug.cgi?id=759559

 plugins/mouse/gsd-mouse-manager.c |   27 ++++++++++++++++-----------
 1 files changed, 16 insertions(+), 11 deletions(-)
---
diff --git a/plugins/mouse/gsd-mouse-manager.c b/plugins/mouse/gsd-mouse-manager.c
index 4ea3f21..f2f90ba 100644
--- a/plugins/mouse/gsd-mouse-manager.c
+++ b/plugins/mouse/gsd-mouse-manager.c
@@ -67,7 +67,7 @@
 #define KEY_SPEED               "speed"
 
 /* Touchpad settings */
-#define KEY_SCROLL_METHOD                "scroll-method"
+#define KEY_EDGE_SCROLLING_ENABLED       "edge-scrolling-enabled"
 #define KEY_TAP_TO_CLICK                 "tap-to-click"
 #define KEY_SEND_EVENTS                  "send-events"
 #define KEY_NATURAL_SCROLL_ENABLED       "natural-scroll"
@@ -750,9 +750,9 @@ set_horiz_scroll (GdkDevice *device,
 }
 
 static void
-set_scroll_method (GsdMouseManager         *manager,
-                   GdkDevice               *device,
-                   GsdTouchpadScrollMethod  method)
+set_edge_scrolling_enabled (GsdMouseManager         *manager,
+                            GdkDevice               *device,
+                            gboolean                 enabled)
 {
         int rc;
         XDevice *xdevice;
@@ -760,6 +760,7 @@ set_scroll_method (GsdMouseManager         *manager,
         int act_format;
         unsigned long nitems, bytes_after;
         unsigned char *data;
+        GsdTouchpadScrollMethod method;
 
         if (xdevice_is_libinput (gdk_x11_device_get_id (device)))
                 return;
@@ -788,14 +789,18 @@ set_scroll_method (GsdMouseManager         *manager,
                                  XA_INTEGER, &act_type, &act_format, &nitems,
                                  &bytes_after, &data);
         if (rc == Success && act_type != None) {
-                if (!(data[3]) && method == GSD_TOUCHPAD_SCROLL_METHOD_TWO_FINGER_SCROLLING) {
-                        g_warning ("Two finger scroll is not supported by %s", gdk_device_get_name (device));
-                        method = GSD_TOUCHPAD_SCROLL_METHOD_EDGE_SCROLLING;
-                }
+                /* Two-finger scrolling is supported, so enable it */
+                if (data[3])
+                        method = GSD_TOUCHPAD_SCROLL_METHOD_TWO_FINGER_SCROLLING;
 
                 XFree (data);
         }
 
+        if (enabled && method != GSD_TOUCHPAD_SCROLL_METHOD_TWO_FINGER_SCROLLING)
+                method = GSD_TOUCHPAD_SCROLL_METHOD_EDGE_SCROLLING;
+        else
+                method = GSD_TOUCHPAD_SCROLL_METHOD_DISABLED;
+
         rc = XGetDeviceProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice,
                                  prop_edge, 0, 1, False,
                                  XA_INTEGER, &act_type, &act_format, &nitems,
@@ -1146,7 +1151,7 @@ set_mouse_settings (GsdMouseManager *manager,
         set_motion (manager, device);
 
         set_tap_to_click (device, g_settings_get_boolean (manager->priv->touchpad_settings, 
KEY_TAP_TO_CLICK), touchpad_left_handed);
-        set_scroll_method (manager, device, g_settings_get_enum (manager->priv->touchpad_settings, 
KEY_SCROLL_METHOD));
+        set_edge_scrolling_enabled (manager, device, g_settings_get_boolean 
(manager->priv->touchpad_settings, KEY_EDGE_SCROLLING_ENABLED));
         set_horiz_scroll (device, TRUE);
         set_natural_scroll (manager, device, g_settings_get_boolean (manager->priv->touchpad_settings, 
KEY_NATURAL_SCROLL_ENABLED));
 
@@ -1216,8 +1221,8 @@ touchpad_callback (GSettings       *settings,
                         mouse_left_handed = g_settings_get_boolean (manager->priv->mouse_settings, 
KEY_LEFT_HANDED);
                         set_tap_to_click (device, g_settings_get_boolean (settings, key),
                                           get_touchpad_handedness (manager, mouse_left_handed));
-                } else if (g_str_equal (key, KEY_SCROLL_METHOD)) {
-                        set_scroll_method (manager, device, g_settings_get_enum (settings, key));
+                } else if (g_str_equal (key, KEY_EDGE_SCROLLING_ENABLED)) {
+                        set_edge_scrolling_enabled (manager, device, g_settings_get_boolean (settings, key));
                         set_horiz_scroll (device, TRUE);
                 } else if (g_str_equal (key, KEY_SPEED)) {
                         set_motion (manager, device);


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