From 9d6f50fb73baabce06063e6f377aefd1e82a4f7d Mon Sep 17 00:00:00 2001 From: monsta Date: Tue, 3 Jan 2017 21:21:11 +0300 Subject: mouse: use input helper to detect both libinput and synaptics touchpads same as done upstream: https://git.gnome.org/browse/gnome-control-center/commit/?id=01fbd4fee0271571d8d685be124e7c6e7c48dbde --- capplets/mouse/mate-mouse-properties.c | 67 +--------------------------------- 1 file changed, 2 insertions(+), 65 deletions(-) (limited to 'capplets/mouse/mate-mouse-properties.c') diff --git a/capplets/mouse/mate-mouse-properties.c b/capplets/mouse/mate-mouse-properties.c index 732e5e8d..5d8b5ee9 100644 --- a/capplets/mouse/mate-mouse-properties.c +++ b/capplets/mouse/mate-mouse-properties.c @@ -34,6 +34,7 @@ #include "capplet-util.h" #include "activate-settings-daemon.h" #include "capplet-stock-icons.h" +#include "msd-input-helper.h" #include #include @@ -217,70 +218,6 @@ synaptics_check_capabilities (GtkBuilder *dialog) XFreeDeviceList (devicelist); } -static gboolean -have_xinput_extension (void) -{ - XExtensionVersion *version; - gboolean result; - - /* Input device properties require version 1.5 or higher */ - version = XGetExtensionVersion (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "XInputExtension"); - result = version->present && ((version->major_version * 1000 + version->minor_version) >= 1005); - XFree (version); - - return result; -} - -static gboolean -find_synaptics (void) -{ - gboolean ret = FALSE; - int numdevices, i; - XDeviceInfo *devicelist; - Atom realtype, prop; - int realformat; - unsigned long nitems, bytes_after; - unsigned char *data; - - if (!have_xinput_extension ()) - return FALSE; - - prop = XInternAtom (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), "Synaptics Off", True); - if (!prop) - return FALSE; - - devicelist = XListInputDevices (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), &numdevices); - for (i = 0; i < numdevices; i++) { - if (devicelist[i].use != IsXExtensionPointer) - continue; - - gdk_error_trap_push(); - XDevice *device = XOpenDevice (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), - devicelist[i].id); - if (gdk_error_trap_pop ()) - continue; - - gdk_error_trap_push (); - if ((XGetDeviceProperty (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), device, prop, 0, 1, False, - XA_INTEGER, &realtype, &realformat, &nitems, - &bytes_after, &data) == Success) && (realtype != None)) { - XFree (data); - ret = TRUE; - } - - gdk_error_trap_pop_ignored (); - - XCloseDevice (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), device); - - if (ret) - break; - } - - XFreeDeviceList (devicelist); - - return ret; -} - static void comboxbox_changed_callback (GtkWidget *combobox, void *data) { @@ -335,7 +272,7 @@ setup_dialog (GtkBuilder *dialog) G_SETTINGS_BIND_DEFAULT); /* Trackpad page */ - if (find_synaptics () == FALSE) + if (touchpad_is_present () == FALSE) gtk_notebook_remove_page (GTK_NOTEBOOK (WID ("prefs_widget")), -1); else { g_settings_bind (touchpad_settings, "touchpad-enabled", -- cgit v1.2.1