From f5eb204741dcb65c8fd0fa24485aa1d0c61e3cc0 Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Mon, 19 Jan 2015 18:45:13 +0100 Subject: [PATCH] mouse: Switch to new peripherals settings schema Most peripherals settings have been moved to gsettings-desktop-schemas. There are some semantic differences: * pointer and touchpad speed is now a single value in the [-1..1] range (from "unaccelerated" to "fast"). A value of 0 is the default; * touchpad enabled is now an enum which can be enabled, disabled or disabled-on-external-mouse. This patch keeps the same UI so the last value is the same as disabled in the UI and can't be set for now; * disable while typing is now always enabled so the checkbox has been removed; * horizontal scrolling is always enabled when two finger scroll is disabled. It wasn't in the UI but we no longer need to set it since it doesn't exist anymore. https://bugzilla.gnome.org/show_bug.cgi?id=743194 --- panels/mouse/gnome-mouse-properties.c | 98 ++++++++++++++++---------- panels/mouse/gnome-mouse-properties.ui | 47 +++--------- 2 files changed, 70 insertions(+), 75 deletions(-) diff --git a/panels/mouse/gnome-mouse-properties.c b/panels/mouse/gnome-mouse-properties.c index 56d0d351a..3e45ec848 100644 --- a/panels/mouse/gnome-mouse-properties.c +++ b/panels/mouse/gnome-mouse-properties.c @@ -30,6 +30,8 @@ #include #include +#include + #include "gnome-mouse-properties.h" #include "gsd-input-helper.h" @@ -49,6 +51,7 @@ struct _CcMousePropertiesPrivate GtkBuilder *builder; GSettings *mouse_settings; + GSettings *gsd_mouse_settings; GSettings *touchpad_settings; GdkDeviceManager *device_manager; @@ -92,7 +95,6 @@ scrollmethod_changed_event (GtkToggleButton *button, CcMousePropertiesPrivate *d method = GSD_TOUCHPAD_SCROLL_METHOD_EDGE_SCROLLING; g_settings_set_enum (d->touchpad_settings, "scroll-method", method); - g_settings_set_boolean (d->touchpad_settings, "horiz-scroll-enabled", TRUE); } static void @@ -144,43 +146,58 @@ synaptics_check_capabilities (CcMousePropertiesPrivate *d) XFreeDeviceList (devicelist); } -static void -pointer_speed_scale_event (GtkRange *scale, CcMousePropertiesPrivate *d) +static gboolean +get_touchpad_enabled (GSettings *settings) { - gdouble value; - GSettings *settings; - GtkAdjustment *adjustment; + GDesktopDeviceSendEvents send_events; - if (GTK_WIDGET (scale) == WID ("pointer_speed_scale")) - settings = d->mouse_settings; - else - settings = d->touchpad_settings; + send_events = g_settings_get_enum (settings, "send-events"); - adjustment = gtk_range_get_adjustment (scale); - value = gtk_adjustment_get_upper (adjustment) - gtk_range_get_value (scale) + 1; - g_settings_set_int (settings, "motion-threshold", value); + return send_events == G_DESKTOP_DEVICE_SEND_EVENTS_ENABLED; } static gboolean show_touchpad_enabling_switch (GSettings *touchpad_settings) { - gboolean enabled; - if (!touchpad_is_present()) return FALSE; /* Lets show the button when the mouse/touchscreen is present */ if (mouse_is_present() || touchscreen_is_present()) return TRUE; - + /* Lets also show when touch pad is disabled. */ - enabled = g_settings_get_boolean (touchpad_settings, "touchpad-enabled"); - if (!enabled) + if (!get_touchpad_enabled (touchpad_settings)) return TRUE; - + return FALSE; } +static gboolean +touchpad_enabled_get_mapping (GValue *value, + GVariant *variant, + gpointer user_data) +{ + gboolean enabled; + + enabled = g_strcmp0 (g_variant_get_string (variant, NULL), "enabled") == 0; + g_value_set_boolean (value, enabled); + + return TRUE; +} + +static GVariant * +touchpad_enabled_set_mapping (const GValue *value, + const GVariantType *type, + gpointer user_data) +{ + gboolean enabled; + + enabled = g_value_get_boolean (value); + + return g_variant_new_string (enabled ? "enabled" : "disabled"); +} + /* Set up the property editors in the dialog. */ static void setup_dialog (CcMousePropertiesPrivate *d) @@ -199,7 +216,7 @@ setup_dialog (CcMousePropertiesPrivate *d) G_CALLBACK (orientation_radio_button_release_event), NULL); /* Double-click time */ - g_settings_bind (d->mouse_settings, "double-click", + g_settings_bind (d->gsd_mouse_settings, "double-click", gtk_range_get_adjustment (GTK_RANGE (WID ("double_click_scale"))), "value", G_SETTINGS_BIND_DEFAULT); @@ -207,42 +224,43 @@ setup_dialog (CcMousePropertiesPrivate *d) mouse_present = mouse_is_present (); gtk_widget_set_visible (WID ("mouse_vbox"), mouse_present); - g_settings_bind (d->mouse_settings, "motion-acceleration", + gtk_scale_add_mark (GTK_SCALE (WID ("pointer_speed_scale")), 0, + GTK_POS_TOP, NULL); + g_settings_bind (d->mouse_settings, "speed", gtk_range_get_adjustment (GTK_RANGE (WID ("pointer_speed_scale"))), "value", G_SETTINGS_BIND_DEFAULT); - g_signal_connect (WID ("pointer_speed_scale"), "value-changed", - G_CALLBACK (pointer_speed_scale_event), d); - /* Trackpad page */ touchpad_present = touchpad_is_present (); gtk_widget_set_visible (WID ("touchpad_vbox"), touchpad_present); gtk_widget_set_visible (WID ("touchpad_enabled_switch"), show_touchpad_enabling_switch (d->touchpad_settings)); - g_settings_bind (d->touchpad_settings, "touchpad-enabled", - WID ("touchpad_enabled_switch"), "active", - G_SETTINGS_BIND_DEFAULT); - g_settings_bind (d->touchpad_settings, "touchpad-enabled", - WID ("touchpad_options_box"), "sensitive", - G_SETTINGS_BIND_GET); + g_settings_bind_with_mapping (d->touchpad_settings, "send-events", + WID ("touchpad_enabled_switch"), "active", + G_SETTINGS_BIND_DEFAULT, + touchpad_enabled_get_mapping, + touchpad_enabled_set_mapping, + NULL, NULL); + g_settings_bind_with_mapping (d->touchpad_settings, "send-events", + WID ("touchpad_options_box"), "sensitive", + G_SETTINGS_BIND_GET, + touchpad_enabled_get_mapping, + touchpad_enabled_set_mapping, + NULL, NULL); - g_settings_bind (d->touchpad_settings, "disable-while-typing", - WID ("disable_w_typing_toggle"), "active", - G_SETTINGS_BIND_DEFAULT); g_settings_bind (d->touchpad_settings, "tap-to-click", WID ("tap_to_click_toggle"), "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (d->touchpad_settings, "natural-scroll", WID ("natural_scroll_toggle"), "active", G_SETTINGS_BIND_DEFAULT); - g_settings_bind (d->touchpad_settings, "motion-acceleration", + gtk_scale_add_mark (GTK_SCALE (WID ("touchpad_pointer_speed_scale")), 0, + GTK_POS_TOP, NULL); + g_settings_bind (d->touchpad_settings, "speed", gtk_range_get_adjustment (GTK_RANGE (WID ("touchpad_pointer_speed_scale"))), "value", G_SETTINGS_BIND_DEFAULT); - g_signal_connect (WID ("touchpad_pointer_speed_scale"), "value-changed", - G_CALLBACK (pointer_speed_scale_event), d); - if (touchpad_present) { synaptics_check_capabilities (d); setup_scrollmethod_radios (d); @@ -310,6 +328,7 @@ cc_mouse_properties_finalize (GObject *object) CcMousePropertiesPrivate *d = CC_MOUSE_PROPERTIES (object)->priv; g_clear_object (&d->mouse_settings); + g_clear_object (&d->gsd_mouse_settings); g_clear_object (&d->touchpad_settings); g_clear_object (&d->builder); @@ -346,8 +365,9 @@ cc_mouse_properties_init (CcMouseProperties *object) "/org/gnome/control-center/mouse/gnome-mouse-properties.ui", &error); - d->mouse_settings = g_settings_new ("org.gnome.settings-daemon.peripherals.mouse"); - d->touchpad_settings = g_settings_new ("org.gnome.settings-daemon.peripherals.touchpad"); + d->mouse_settings = g_settings_new ("org.gnome.desktop.peripherals.mouse"); + d->gsd_mouse_settings = g_settings_new ("org.gnome.settings-daemon.peripherals.mouse"); + d->touchpad_settings = g_settings_new ("org.gnome.desktop.peripherals.touchpad"); d->device_manager = gdk_display_get_device_manager (gdk_display_get_default ()); d->device_added_id = g_signal_connect (d->device_manager, "device-added", diff --git a/panels/mouse/gnome-mouse-properties.ui b/panels/mouse/gnome-mouse-properties.ui index a45b142ea..a40bc500d 100644 --- a/panels/mouse/gnome-mouse-properties.ui +++ b/panels/mouse/gnome-mouse-properties.ui @@ -2,18 +2,12 @@ - 1 - 10 - 6 - 1 - 1 + -1 + 1 - 1 - 10 - 6 - 1 - 1 + -1 + 1 100 @@ -317,12 +311,13 @@ - + + horizontal True True adjustment1 False - right + False True @@ -488,12 +483,13 @@ - + + horizontal True True adjustment11 False - right + False True @@ -539,27 +535,6 @@ False 5 10 - - - Disable while _typing - False - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - none - True - True - True - - - 0 - 0 - 1 - 1 - - Tap to _click @@ -575,7 +550,7 @@ 0 - 1 + 0 1 1