From d6f9ec3967770ad21fd563efc60eb319d13d8b93 Mon Sep 17 00:00:00 2001 From: Daniel van Vugt Date: Fri, 16 Mar 2018 13:53:10 -0400 Subject: [PATCH] Expose touchpad settings if synaptics is in use Upstream is aggressively pushing for libinput over synaptics. However that creates a factually incorrect situation where gnome-control-center thinks there is no touchpad unless you're using the xserver-xorg-input-libinput. This patch adds support for both drivers, removing the code that would hide the touchpad settings when xserver-xorg-input-synaptics is in use. This patch is only useful in the GNOME on Xorg session. In GNOME on Wayland, libinput is used anyway. This patch requires a companion patch in mutter which GNOME has rejected. https://gitlab.gnome.org/GNOME/mutter/merge_requests/37 Gbp-Pq: Name 0004-Expose-touchpad-settings-if-synaptics-is-in-use.patch --- panels/mouse/cc-mouse-caps-helper.c | 7 +++++++ panels/mouse/gnome-mouse-properties.c | 18 ++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/panels/mouse/cc-mouse-caps-helper.c b/panels/mouse/cc-mouse-caps-helper.c index acbe9c9..108fde2 100644 --- a/panels/mouse/cc-mouse-caps-helper.c +++ b/panels/mouse/cc-mouse-caps-helper.c @@ -37,6 +37,13 @@ touchpad_check_capabilities_x11 (gboolean *have_two_finger_scrolling, unsigned long nitems, bytes_after; unsigned char *data; + if (cc_synaptics_check ()) { + *have_two_finger_scrolling = TRUE; + *have_edge_scrolling = TRUE; + *have_tap_to_click = TRUE; + return TRUE; + } + display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); prop_scroll_methods = XInternAtom (display, "libinput Scroll Methods Available", False); prop_tapping_enabled = XInternAtom (display, "libinput Tapping Enabled", False); diff --git a/panels/mouse/gnome-mouse-properties.c b/panels/mouse/gnome-mouse-properties.c index 4d0920b..7ae7f6f 100644 --- a/panels/mouse/gnome-mouse-properties.c +++ b/panels/mouse/gnome-mouse-properties.c @@ -61,7 +61,6 @@ struct _CcMousePropertiesPrivate gboolean have_mouse; gboolean have_touchpad; gboolean have_touchscreen; - gboolean have_synaptics; gboolean left_handed; GtkGesture *left_gesture; @@ -81,10 +80,6 @@ setup_touchpad_options (CcMousePropertiesPrivate *d) gboolean have_edge_scrolling; gboolean have_tap_to_click; - gtk_widget_set_visible (WID ("touchpad-frame"), !d->have_synaptics); - if (d->have_synaptics) - return; - gtk_widget_set_visible (WID ("touchpad-frame"), d->have_touchpad); if (!d->have_touchpad) return; @@ -306,7 +301,10 @@ device_changed (GsdDeviceManager *device_manager, GsdDevice *device, CcMousePropertiesPrivate *d) { - d->have_touchpad = touchpad_is_present (); + d->have_touchpad = touchpad_is_present () || cc_synaptics_check (); + /* ^^^^^^^^^^^^^^^^^^^^^ + * Workaround https://gitlab.gnome.org/GNOME/gtk/issues/97 + */ setup_touchpad_options (d); @@ -387,11 +385,11 @@ cc_mouse_properties_init (CcMouseProperties *object) G_CALLBACK (device_changed), d); d->have_mouse = mouse_is_present (); - d->have_touchpad = touchpad_is_present (); + d->have_touchpad = touchpad_is_present () || cc_synaptics_check (); + /* ^^^^^^^^^^^^^^^^^^^^^ + * Workaround https://gitlab.gnome.org/GNOME/gtk/issues/97 + */ d->have_touchscreen = touchscreen_is_present (); - d->have_synaptics = cc_synaptics_check (); - if (d->have_synaptics) - g_warning ("Detected synaptics X driver, please migrate to libinput"); d->changing_scroll = FALSE; -- 2.30.2