From 7c87f8f202a7743a18b8d7fdab5c66a3d54badd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Thu, 1 Nov 2012 21:01:59 +0100 Subject: [PATCH 2/5] mouse settings dialog: add touchscreen-pointer option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Andreas Müller Upstream-Status: Submitted [1] [1] https://bugzilla.xfce.org/show_bug.cgi?id=9474 --- dialogs/mouse-settings/main.c | 56 +++++++++++++++++++++++++++++ dialogs/mouse-settings/mouse-dialog.glade | 28 ++++++++++++++- 3 files changed, 422 insertions(+), 329 deletions(-) diff --git a/dialogs/mouse-settings/main.c b/dialogs/mouse-settings/main.c index f4b475b..ff08219 100644 --- a/dialogs/mouse-settings/main.c +++ b/dialogs/mouse-settings/main.c @@ -956,6 +956,50 @@ mouse_settings_device_set_enabled (GtkToggleButton *button, +#ifdef HAVE_XCURSOR +static void +mouse_settings_on_touchscreen_pointer (GtkToggleButton *button, + GtkBuilder *builder) +{ + gchar *name = NULL; + gchar *prop; + gboolean enabled; + + if (locked > 0) + return; + + if (mouse_settings_device_get_selected (builder, NULL, &name)) + { + enabled = gtk_toggle_button_get_active (button); + prop = g_strconcat ("/", name, "/TouchscreenPointer", NULL); + xfconf_channel_set_bool (pointers_channel, prop, enabled); + g_free (prop); + } + g_free (name); +} + +static void +mouse_settings_set_touchscreen_pointer (GtkBuilder *builder) +{ + gchar *name = NULL; + gchar *prop; + gboolean enabled; + GtkToggleButton *button; + + if (mouse_settings_device_get_selected (builder, NULL, &name)) + { + button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "touchscreen-pointer")); + prop = g_strconcat ("/", name, "/TouchscreenPointer", NULL); + enabled = xfconf_channel_get_bool (pointers_channel, prop, FALSE); + gtk_toggle_button_set_active (button, enabled); + g_free (prop); + } + g_free (name); +} +#endif + + + static void mouse_settings_device_selection_changed (GtkBuilder *builder) { @@ -1007,6 +1051,9 @@ mouse_settings_device_selection_changed (GtkBuilder *builder) /* get the selected item */ if (mouse_settings_device_get_selected (builder, &device, NULL)) { +#ifdef HAVE_XCURSOR + mouse_settings_set_touchscreen_pointer (builder); +#endif gdk_error_trap_push (); device_info = XListInputDevices (xdisplay, &ndevices); if (gdk_error_trap_pop () == 0 && device_info != NULL) @@ -1735,11 +1782,20 @@ main (gint argc, gchar **argv) /* populate the themes treeview */ mouse_settings_themes_populate_store (builder); + /* connect & fill touchscreen-pointer */ + object = gtk_builder_get_object (builder, "touchscreen-pointer"); + g_signal_connect (G_OBJECT (object), "toggled", + G_CALLBACK (mouse_settings_on_touchscreen_pointer), builder); + mouse_settings_set_touchscreen_pointer (builder); + /* connect the cursor size in the cursor tab */ object = gtk_builder_get_object (builder, "theme-cursor-size"); xfconf_g_property_bind (xsettings_channel, "/Gtk/CursorThemeSize", G_TYPE_INT, G_OBJECT (object), "value"); #else + /* hide touchscreen-pointer */ + object = gtk_builder_get_object (builder, "touchscreen-pointer"); + gtk_widget_hide (GTK_WIDGET (object)); /* hide the themes tab */ object = gtk_builder_get_object (builder, "themes-hbox"); gtk_widget_hide (GTK_WIDGET (object)); diff --git a/dialogs/mouse-settings/mouse-dialog.glade b/dialogs/mouse-settings/mouse-dialog.glade index d3aab0d..573c551 100644 --- a/dialogs/mouse-settings/mouse-dialog.glade +++ b/dialogs/mouse-settings/mouse-dialog.glade @@ -323,7 +323,7 @@ True False 6 - 3 + 4 2 12 6 @@ -415,6 +415,32 @@ 3 + + + True + False + 0 + 0 + 0 + + + _Touchscreen pointer + False + True + True + False + When selected, no mouse pointer is displayed for this device and gtk TouchscreenMode is activated + True + True + + + + + 2 + 3 + 4 + + -- 1.7.6.5