[gnome-control-center] mouse: Switch to new peripherals settings schema
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] mouse: Switch to new peripherals settings schema
- Date: Tue, 20 Jan 2015 14:02:59 +0000 (UTC)
commit f5eb204741dcb65c8fd0fa24485aa1d0c61e3cc0
Author: Rui Matos <tiagomatos gmail com>
Date: Mon Jan 19 18:45:13 2015 +0100
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 56d0d35..3e45ec8 100644
--- a/panels/mouse/gnome-mouse-properties.c
+++ b/panels/mouse/gnome-mouse-properties.c
@@ -30,6 +30,8 @@
#include <gnome-settings-daemon/gsd-enums.h>
#include <math.h>
+#include <gdesktop-enums.h>
+
#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 a45b142..a40bc50 100644
--- a/panels/mouse/gnome-mouse-properties.ui
+++ b/panels/mouse/gnome-mouse-properties.ui
@@ -2,18 +2,12 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkAdjustment" id="adjustment1">
- <property name="lower">1</property>
- <property name="upper">10</property>
- <property name="value">6</property>
- <property name="step_increment">1</property>
- <property name="page_increment">1</property>
+ <property name="lower">-1</property>
+ <property name="upper">1</property>
</object>
<object class="GtkAdjustment" id="adjustment11">
- <property name="lower">1</property>
- <property name="upper">10</property>
- <property name="value">6</property>
- <property name="step_increment">1</property>
- <property name="page_increment">1</property>
+ <property name="lower">-1</property>
+ <property name="upper">1</property>
</object>
<object class="GtkAdjustment" id="adjustment4">
<property name="lower">100</property>
@@ -317,12 +311,13 @@
</packing>
</child>
<child>
- <object class="GtkHScale" id="pointer_speed_scale">
+ <object class="GtkScale" id="pointer_speed_scale">
+ <property name="orientation">horizontal</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="adjustment">adjustment1</property>
<property name="draw_value">False</property>
- <property name="value_pos">right</property>
+ <property name="has_origin">False</property>
</object>
<packing>
<property name="expand">True</property>
@@ -488,12 +483,13 @@
</packing>
</child>
<child>
- <object class="GtkHScale" id="touchpad_pointer_speed_scale">
+ <object class="GtkScale" id="touchpad_pointer_speed_scale">
+ <property name="orientation">horizontal</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="adjustment">adjustment11</property>
<property name="draw_value">False</property>
- <property name="value_pos">right</property>
+ <property name="has_origin">False</property>
</object>
<packing>
<property name="expand">True</property>
@@ -540,27 +536,6 @@
<property name="row_spacing">5</property>
<property name="column_spacing">10</property>
<child>
- <object class="GtkCheckButton" id="disable_w_typing_toggle">
- <property name="label" translatable="yes">Disable while
_typing</property>
- <property name="use_action_appearance">False</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="use_action_appearance">False</property>
- <property name="relief">none</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
<object class="GtkCheckButton" id="tap_to_click_toggle">
<property name="label" translatable="yes">Tap to _click</property>
<property name="use_action_appearance">False</property>
@@ -575,7 +550,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">1</property>
+ <property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]