[Xfce4-commits] <xfce4-settings:master> Merge remote-tracking branch 'origin/peter/circularscrolling'

Peter de Ridder noreply at xfce.org
Thu May 10 23:32:04 CEST 2012


Updating branch refs/heads/master
         to 6ae352f5413dfd68d90eeeb0dafa297c19e7f4a0 (commit)
       from 2db06b91919a8d3cf208a777c20acdbfe4bc533d (commit)

commit 6ae352f5413dfd68d90eeeb0dafa297c19e7f4a0
Merge: 2db06b9 a14ce71
Author: Peter de Ridder <peter at xfce.org>
Date:   Thu May 10 23:27:20 2012 +0200

    Merge remote-tracking branch 'origin/peter/circularscrolling'

commit a14ce7113757844aecb5dc29ca656aaf7017ef8b
Author: Peter de Ridder <peter at xfce.org>
Date:   Thu May 3 23:50:01 2012 +0200

    Changed scrolling mode for touchpads to a combobox.

commit 267b4df56f48449d2e9c478554053d26ea3eeb0a
Author: Peter de Ridder <peter at xfce.org>
Date:   Tue May 1 20:50:53 2012 +0200

    Added circular scrolling for touchpads.

 dialogs/mouse-settings/main.c             |  146 +++++++++++++++++++++-------
 dialogs/mouse-settings/mouse-dialog.glade |   75 ++++++++-------
 2 files changed, 151 insertions(+), 70 deletions(-)

diff --git a/dialogs/mouse-settings/main.c b/dialogs/mouse-settings/main.c
index 86230c5..f4b475b 100644
--- a/dialogs/mouse-settings/main.c
+++ b/dialogs/mouse-settings/main.c
@@ -790,17 +790,21 @@ mouse_settings_synaptics_set_tap_to_click (GtkBuilder *builder)
 static void
 mouse_settings_synaptics_hscroll_sensitive (GtkBuilder *builder)
 {
+    gint      active;
     gboolean  sensitive = FALSE;
     GObject  *object;
 
-    object = gtk_builder_get_object (builder, "synaptics-scroll-edge");
+    /* Values for active:
+     * -1 no selection
+     *  0 disabled
+     *  1 edge scrolling
+     *  2 two-finger scrolling
+     *  3 circular scrolling
+     */
+    object = gtk_builder_get_object (builder, "synaptics-scroll");
+    active = gtk_combo_box_get_active (GTK_COMBO_BOX (object));
     if (gtk_widget_get_sensitive (GTK_WIDGET (object))
-        && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object)))
-        sensitive = TRUE;
-
-    object = gtk_builder_get_object (builder, "synaptics-scroll-two");
-    if (gtk_widget_get_sensitive (GTK_WIDGET (object))
-        && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object)))
+        && active > 0)
         sensitive = TRUE;
 
     object = gtk_builder_get_object (builder, "synaptics-scroll-horiz");
@@ -812,45 +816,62 @@ mouse_settings_synaptics_hscroll_sensitive (GtkBuilder *builder)
 
 #ifdef DEVICE_PROPERTIES
 static void
-mouse_settings_synaptics_set_scrolling (GtkWidget  *widget,
-                                        GtkBuilder *builder)
+mouse_settings_synaptics_set_scrolling (GtkComboBox *combobox,
+                                        GtkBuilder  *builder)
 {
     gint      edge_scroll[3] = { 0, 0, 0 };
     gint      two_scroll[2] = { 0, 0 };
+    gint      circ_scroll = 0;
+    gint      circ_trigger = 0;
     GObject  *object;
     gboolean  horizontal = FALSE;
+    gint      active;
     gchar    *name = NULL, *prop;
 
     if (locked > 0)
         return;
 
-    /*  skip double event if a radio button is toggled */
-    if (GTK_IS_RADIO_BUTTON (widget)
-        && !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
-        return;
-
     mouse_settings_synaptics_hscroll_sensitive (builder);
 
     object = gtk_builder_get_object (builder, "synaptics-scroll-horiz");
     if (gtk_widget_get_sensitive (GTK_WIDGET (object)))
         horizontal = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object));
 
-    object = gtk_builder_get_object (builder, "synaptics-scroll-edge");
-    if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object))
-        && gtk_widget_get_sensitive (GTK_WIDGET (object)))
+    /* Values for active:
+     * -1 no selection
+     *  0 disabled
+     *  1 edge scrolling
+     *  2 two-finger scrolling
+     *  3 circular scrolling
+     */
+    object = gtk_builder_get_object (builder, "synaptics-scroll");
+    active = gtk_combo_box_get_active (GTK_COMBO_BOX (object));
+    if (!gtk_widget_get_sensitive (GTK_WIDGET (object)))
+        active = -1;
+
+
+    if (active == 1)
     {
         edge_scroll[0] = TRUE;
         edge_scroll[1] = horizontal;
     }
 
-    object = gtk_builder_get_object (builder, "synaptics-scroll-two");
-    if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (object))
-        && gtk_widget_get_sensitive (GTK_WIDGET (object)))
+    if (active == 2)
     {
         two_scroll[0] = TRUE;
         two_scroll[1] = horizontal;
     }
 
+    if (active == 3)
+    {
+        circ_scroll = TRUE;
+        if (horizontal)
+        {
+            circ_trigger = 3;
+            edge_scroll[1] = TRUE;
+        }
+    }
+
     if (mouse_settings_device_get_selected (builder, NULL, &name))
     {
         /* 3 values: vertical, horizontal, corner. */
@@ -869,6 +890,16 @@ mouse_settings_synaptics_set_scrolling (GtkWidget  *widget,
                                   G_TYPE_INT, &two_scroll[1],
                                   G_TYPE_INVALID);
         g_free (prop);
+
+        /* 1 value: circular. */
+        prop = g_strconcat ("/", name, "/Properties/Synaptics_Circular_Scrolling", NULL);
+        xfconf_channel_set_int (pointers_channel, prop, circ_scroll);
+        g_free (prop);
+
+        /* 1 value: location. */
+        prop = g_strconcat ("/", name, "/Properties/Synaptics_Circular_Scrolling_Trigger", NULL);
+        xfconf_channel_set_int (pointers_channel, prop, circ_trigger);
+        g_free (prop);
     }
 
     g_free (name);
@@ -879,6 +910,24 @@ mouse_settings_synaptics_set_scrolling (GtkWidget  *widget,
 
 #ifdef DEVICE_PROPERTIES
 static void
+mouse_settings_synaptics_set_scroll_horiz (GtkWidget  *widget,
+                                           GtkBuilder *builder)
+{
+    GObject  *object;
+
+    if (locked > 0)
+        return;
+
+    object = gtk_builder_get_object (builder, "synaptics-scroll");
+
+    mouse_settings_synaptics_set_scrolling (GTK_COMBO_BOX (object), builder);
+}
+#endif
+
+
+
+#ifdef DEVICE_PROPERTIES
+static void
 mouse_settings_device_set_enabled (GtkToggleButton *button,
                                    GtkBuilder      *builder)
 {
@@ -934,6 +983,7 @@ mouse_settings_device_selection_changed (GtkBuilder *builder)
     Atom               synaptics_tap_prop;
     Atom               synaptics_edge_scroll_prop;
     Atom               synaptics_two_scroll_prop;
+    Atom               synaptics_circ_scroll_prop;
     Atom               device_enabled_prop;
     Atom               wacom_rotation_prop;
     gint               is_enabled = -1;
@@ -942,6 +992,9 @@ mouse_settings_device_selection_changed (GtkBuilder *builder)
     gint               synaptics_edge_hscroll = -1;
     gint               synaptics_two_scroll = -1;
     gint               synaptics_two_hscroll = -1;
+    gint               synaptics_circ_scroll = -1;
+    gint               synaptics_scroll_mode = 0;
+    GtkTreeIter        iter;
     gint               wacom_rotation = -1;
     Atom              *props;
     gint               nprops;
@@ -1047,6 +1100,7 @@ mouse_settings_device_selection_changed (GtkBuilder *builder)
         synaptics_tap_prop = XInternAtom (xdisplay, "Synaptics Tap Action", True);
         synaptics_edge_scroll_prop = XInternAtom (xdisplay, "Synaptics Edge Scrolling", True);
         synaptics_two_scroll_prop = XInternAtom (xdisplay, "Synaptics Two-Finger Scrolling", True);
+        synaptics_circ_scroll_prop = XInternAtom (xdisplay, "Synaptics Circular Scrolling", True);
         wacom_rotation_prop = XInternAtom (xdisplay, "Wacom Rotation", True);
 
         /* check if this is a synaptics or wacom device */
@@ -1068,6 +1122,8 @@ mouse_settings_device_selection_changed (GtkBuilder *builder)
                     synaptics_edge_scroll = mouse_settings_device_get_int_property (device, props[i], 0, &synaptics_edge_hscroll);
                 else if (props[i] == synaptics_two_scroll_prop)
                     synaptics_two_scroll = mouse_settings_device_get_int_property (device, props[i], 0, &synaptics_two_hscroll);
+                else if (props[i] == synaptics_circ_scroll_prop)
+                    synaptics_circ_scroll = mouse_settings_device_get_int_property (device, props[i], 0, NULL);
                 else if (props[i] == wacom_rotation_prop)
                     wacom_rotation = mouse_settings_device_get_int_property (device, props[i], 0, NULL);
             }
@@ -1120,16 +1176,34 @@ mouse_settings_device_selection_changed (GtkBuilder *builder)
         gtk_widget_set_sensitive (GTK_WIDGET (object), synaptics_tap_to_click != -1);
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (object), synaptics_tap_to_click > 0);
 
-        object = gtk_builder_get_object (builder, "synaptics-scroll-no");
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (object), synaptics_edge_scroll == -1 && synaptics_two_scroll == -1);
+        /* Values for synaptics_scroll_mode:
+         * -1 no selection
+         *  0 disabled
+         *  1 edge scrolling
+         *  2 two-finger scrolling
+         *  3 circular scrolling
+         */
+        if (synaptics_edge_scroll > 0)
+            synaptics_scroll_mode = 1;
 
-        object = gtk_builder_get_object (builder, "synaptics-scroll-edge");
-        gtk_widget_set_sensitive (GTK_WIDGET (object), synaptics_edge_scroll != -1);
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (object), synaptics_edge_scroll > 0);
+        if (synaptics_two_scroll > 0)
+            synaptics_scroll_mode = 2;
 
-        object = gtk_builder_get_object (builder, "synaptics-scroll-two");
-        gtk_widget_set_sensitive (GTK_WIDGET (object), synaptics_two_scroll != -1);
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (object), synaptics_two_scroll > 0);
+        if (synaptics_circ_scroll > 0)
+            synaptics_scroll_mode = 3;
+
+        object = gtk_builder_get_object (builder, "synaptics-scroll-store");
+        if (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (object), &iter, NULL, 1))
+            gtk_list_store_set (GTK_LIST_STORE (object), &iter, 1, synaptics_edge_scroll != -1, -1);
+
+        if (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (object), &iter, NULL, 2))
+            gtk_list_store_set (GTK_LIST_STORE (object), &iter, 1, synaptics_two_scroll != -1, -1);
+
+        if (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (object), &iter, NULL, 3))
+            gtk_list_store_set (GTK_LIST_STORE (object), &iter, 1, synaptics_circ_scroll != -1, -1);
+
+        object = gtk_builder_get_object (builder, "synaptics-scroll");
+        gtk_combo_box_set_active (GTK_COMBO_BOX (object), synaptics_scroll_mode);
 
         object = gtk_builder_get_object (builder, "synaptics-scroll-horiz");
         mouse_settings_synaptics_hscroll_sensitive (builder);
@@ -1508,9 +1582,6 @@ main (gint argc, gchar **argv)
     XExtensionVersion *version = NULL;
 #ifdef DEVICE_PROPERTIES
     gchar             *syndaemon;
-    guint              i;
-    const gchar       *synaptics_scroll[] = { "synaptics-scroll-no", "synaptics-scroll-edge",
-                                              "synaptics-scroll-two", "synaptics-scroll-horiz" };
 #endif
 
     /* setup translation domain */
@@ -1643,12 +1714,13 @@ main (gint argc, gchar **argv)
             g_signal_connect_swapped (G_OBJECT (object), "toggled",
                                       G_CALLBACK (mouse_settings_synaptics_set_tap_to_click), builder);
 
-            for (i = 0; i < G_N_ELEMENTS (synaptics_scroll); i++)
-            {
-                object = gtk_builder_get_object (builder, synaptics_scroll[i]);
-                g_signal_connect (G_OBJECT (object), "toggled",
-                                  G_CALLBACK (mouse_settings_synaptics_set_scrolling), builder);
-            }
+            object = gtk_builder_get_object (builder, "synaptics-scroll");
+            g_signal_connect (G_OBJECT (object), "changed",
+                              G_CALLBACK (mouse_settings_synaptics_set_scrolling), builder);
+
+            object = gtk_builder_get_object (builder, "synaptics-scroll-horiz");
+            g_signal_connect (G_OBJECT (object), "toggled",
+                              G_CALLBACK (mouse_settings_synaptics_set_scroll_horiz), builder);
 
             object = gtk_builder_get_object (builder, "wacom-mode");
             g_signal_connect (G_OBJECT (object), "changed",
diff --git a/dialogs/mouse-settings/mouse-dialog.glade b/dialogs/mouse-settings/mouse-dialog.glade
index d67efcb..c92f3ca 100644
--- a/dialogs/mouse-settings/mouse-dialog.glade
+++ b/dialogs/mouse-settings/mouse-dialog.glade
@@ -517,15 +517,13 @@
                                         <property name="can_focus">False</property>
                                         <property name="spacing">12</property>
                                         <child>
-                                          <object class="GtkRadioButton" id="synaptics-scroll-no">
-                                            <property name="label" translatable="yes">Di_sabled</property>
+                                          <object class="GtkLabel" id="label23">
                                             <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="use_action_appearance">False</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="xalign">0</property>
+                                            <property name="label" translatable="yes">Scro_lling mode:</property>
                                             <property name="use_underline">True</property>
-                                            <property name="active">True</property>
-                                            <property name="draw_indicator">True</property>
+                                            <property name="mnemonic_widget">synaptics-scroll</property>
                                           </object>
                                           <packing>
                                             <property name="expand">False</property>
@@ -534,37 +532,22 @@
                                           </packing>
                                         </child>
                                         <child>
-                                          <object class="GtkRadioButton" id="synaptics-scroll-edge">
-                                            <property name="label" translatable="yes">Edge scro_lling</property>
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="use_action_appearance">False</property>
-                                            <property name="use_underline">True</property>
-                                            <property name="draw_indicator">True</property>
-                                            <property name="group">synaptics-scroll-no</property>
-                                          </object>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">True</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkRadioButton" id="synaptics-scroll-two">
-                                            <property name="label" translatable="yes">Two-_finger scrolling</property>
+                                          <object class="GtkComboBox" id="synaptics-scroll">
                                             <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">False</property>
-                                            <property name="use_action_appearance">False</property>
-                                            <property name="use_underline">True</property>
-                                            <property name="draw_indicator">True</property>
-                                            <property name="group">synaptics-scroll-no</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="model">synaptics-scroll-store</property>
+                                            <child>
+                                              <object class="GtkCellRendererText" id="cellrenderertext3"/>
+                                              <attributes>
+                                                <attribute name="text">0</attribute>
+                                                <attribute name="sensitive">1</attribute>
+                                              </attributes>
+                                            </child>
                                           </object>
                                           <packing>
                                             <property name="expand">True</property>
                                             <property name="fill">True</property>
-                                            <property name="position">2</property>
+                                            <property name="position">1</property>
                                           </packing>
                                         </child>
                                       </object>
@@ -1163,6 +1146,32 @@
     <property name="step_increment">1</property>
     <property name="page_increment">11</property>
   </object>
+  <object class="GtkListStore" id="synaptics-scroll-store">
+    <columns>
+      <!-- column-name title -->
+      <column type="gchararray"/>
+      <!-- column-name sensitive -->
+      <column type="gboolean"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Disabled</col>
+        <col id="1">True</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Edge scrolling</col>
+        <col id="1">True</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Two-finger scrolling</col>
+        <col id="1">True</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Circular scrolling</col>
+        <col id="1">True</col>
+      </row>
+    </data>
+  </object>
   <object class="GtkListStore" id="wacom-mode-store">
     <columns>
       <!-- column-name mode -->


More information about the Xfce4-commits mailing list