gpointing-device-settings r192 - in trunk: . data modules modules/common modules/gnome-settings-daemon-plugins
- From: hiikezoe svn gnome org
- To: svn-commits-list gnome org
- Subject: gpointing-device-settings r192 - in trunk: . data modules modules/common modules/gnome-settings-daemon-plugins
- Date: Mon, 9 Mar 2009 06:55:35 +0000 (UTC)
Author: hiikezoe
Date: Mon Mar 9 06:55:34 2009
New Revision: 192
URL: http://svn.gnome.org/viewvc/gpointing-device-settings?rev=192&view=rev
Log:
two finger scrolling support.
Modified:
trunk/NEWS
trunk/data/touchpad.ui.in
trunk/modules/common/gpds-touchpad-definitions.h
trunk/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c
trunk/modules/gpds-touchpad-ui.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Mon Mar 9 06:55:34 2009
@@ -1,11 +1,19 @@
============================
+GPointinDeviceSettings 1.0.1
+============================
+
+* Touchpad
+ - Continuous edge scrolling on/off
+ - Two finger scrolling on/off
+
+============================
GPointinDeviceSettings 1.0.0
============================
* Overrall
- Try to show all XExtensionPointer
- Unify plugins for gnome-settings-daemon
-* Touchpad
+* TrackPoint
- Wheel emulation button support
============================
Modified: trunk/data/touchpad.ui.in
==============================================================================
--- trunk/data/touchpad.ui.in (original)
+++ trunk/data/touchpad.ui.in Mon Mar 9 06:55:34 2009
@@ -890,6 +890,42 @@
<property name="fill">True</property>
</packing>
</child>
+ <child>
+ <object class="GtkCheckButton" id="two_finger_vertical_scrolling">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Enable vertical scrolling when dragging with two fingers</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="two_finger_horizontal_scrolling">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Enable horizontal scrolling when dragging with two fingers</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
</object>
</child>
</object>
Modified: trunk/modules/common/gpds-touchpad-definitions.h
==============================================================================
--- trunk/modules/common/gpds-touchpad-definitions.h (original)
+++ trunk/modules/common/gpds-touchpad-definitions.h Mon Mar 9 06:55:34 2009
@@ -20,19 +20,21 @@
#ifndef __GPDS_TOUCHPAD_GCONF_H__
#define __GPDS_TOUCHPAD_GCONF_H__
-#define GPDS_TOUCHPAD_EDGES_KEY "edges"
-#define GPDS_TOUCHPAD_FINGER_KEY "finger"
-#define GPDS_TOUCHPAD_OFF_KEY "off"
-#define GPDS_TOUCHPAD_TAP_TIME_KEY "tap_time"
-#define GPDS_TOUCHPAD_TAP_FAST_TAP_KEY "tap_fast_tap"
-#define GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_DISTANCE_KEY "horizontal_scrolling_distance"
-#define GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_KEY "horizontal_scrolling"
-#define GPDS_TOUCHPAD_VERTICAL_SCROLLING_DISTANCE_KEY "vertical_scrolling_distance"
-#define GPDS_TOUCHPAD_VERTICAL_SCROLLING_KEY "vertical_scrolling"
-#define GPDS_TOUCHPAD_CONTINUOUS_EDGE_SCROLLING_KEY "continuous_edge_scrolling"
-#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_KEY "circular_scrolling"
-#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_DISTANCE_KEY "circular_scrolling_distance"
-#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_TRIGGER_KEY "circular_scrolling_trigger"
+#define GPDS_TOUCHPAD_EDGES_KEY "edges"
+#define GPDS_TOUCHPAD_FINGER_KEY "finger"
+#define GPDS_TOUCHPAD_OFF_KEY "off"
+#define GPDS_TOUCHPAD_TAP_TIME_KEY "tap_time"
+#define GPDS_TOUCHPAD_TAP_FAST_TAP_KEY "tap_fast_tap"
+#define GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_DISTANCE_KEY "horizontal_scrolling_distance"
+#define GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_KEY "horizontal_scrolling"
+#define GPDS_TOUCHPAD_VERTICAL_SCROLLING_DISTANCE_KEY "vertical_scrolling_distance"
+#define GPDS_TOUCHPAD_VERTICAL_SCROLLING_KEY "vertical_scrolling"
+#define GPDS_TOUCHPAD_TWO_FINGER_VERTICAL_SCROLLING_KEY "two_finger_vertical_scrolling"
+#define GPDS_TOUCHPAD_TWO_FINGER_HORIZONTAL_SCROLLING_KEY "two_finger_horizontal_scrolling"
+#define GPDS_TOUCHPAD_CONTINUOUS_EDGE_SCROLLING_KEY "continuous_edge_scrolling"
+#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_KEY "circular_scrolling"
+#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_DISTANCE_KEY "circular_scrolling_distance"
+#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_TRIGGER_KEY "circular_scrolling_trigger"
#endif /* __GPDS_TOUCHPAD_GCONF_H__ */
/*
Modified: trunk/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c
==============================================================================
--- trunk/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c (original)
+++ trunk/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c Mon Mar 9 06:55:34 2009
@@ -134,6 +134,30 @@
}
static void
+set_two_finger_scrolling (GsdPointingDeviceManager *manager,
+ GpdsXInput *xinput,
+ GConfClient *gconf)
+{
+ gboolean h_enable, v_enable;
+ gint properties[2];
+
+ if (!gpds_gconf_get_boolean(gconf, GPDS_TOUCHPAD_TWO_FINGER_VERTICAL_SCROLLING_KEY, &v_enable))
+ return;
+ if (!gpds_gconf_get_boolean(gconf, GPDS_TOUCHPAD_TWO_FINGER_HORIZONTAL_SCROLLING_KEY, &h_enable))
+ return;
+
+ properties[0] = v_enable ? 1 : 0;
+ properties[1] = h_enable ? 1 : 0;
+
+ gpds_xinput_set_int_properties(xinput,
+ gpds_touchpad_xinput_get_name(GPDS_TOUCHPAD_TWO_FINGER_SCROLLING),
+ gpds_touchpad_xinput_get_format_type(GPDS_TOUCHPAD_TWO_FINGER_SCROLLING),
+ NULL,
+ properties,
+ 2);
+}
+
+static void
set_horizontal_and_vertical_scrolling_distance (GsdPointingDeviceManager *manager,
GpdsXInput *xinput,
GConfClient *gconf)
@@ -180,6 +204,7 @@
set_horizontal_and_vertical_scrolling_distance(manager, xinput, gconf);
set_circular_scrolling(manager, xinput, gconf);
set_circular_scrolling_trigger(manager, xinput, gconf);
+ set_two_finger_scrolling(manager, xinput, gconf);
g_object_unref(gconf);
g_object_unref(xinput);
@@ -219,6 +244,9 @@
!strcmp(key, GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_KEY) ||
!strcmp(key, GPDS_TOUCHPAD_CONTINUOUS_EDGE_SCROLLING_KEY)) {
set_edge_scrolling(manager, xinput, client);
+ } else if (!strcmp(key, GPDS_TOUCHPAD_TWO_FINGER_VERTICAL_SCROLLING_KEY) ||
+ !strcmp(key, GPDS_TOUCHPAD_TWO_FINGER_HORIZONTAL_SCROLLING_KEY)) {
+ set_two_finger_scrolling(manager, xinput, client);
}
break;
case GCONF_VALUE_INT:
Modified: trunk/modules/gpds-touchpad-ui.c
==============================================================================
--- trunk/modules/gpds-touchpad-ui.c (original)
+++ trunk/modules/gpds-touchpad-ui.c Mon Mar 9 06:55:34 2009
@@ -164,7 +164,7 @@
}
static void
-set_edge_scroll_toggle_property (GpdsXInput *xinput, GtkBuilder *builder)
+set_edge_scrolling_toggle_property (GpdsXInput *xinput, GtkBuilder *builder)
{
GError *error = NULL;
GObject *object;
@@ -195,6 +195,35 @@
}
static void
+set_two_finger_scrolling_toggle_property (GpdsXInput *xinput, GtkBuilder *builder)
+{
+ GError *error = NULL;
+ GObject *object;
+ gint properties[2];
+
+ object = gtk_builder_get_object(builder, "two_finger_vertical_scrolling");
+ properties[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(object)) ? 1 :0;
+
+ object = gtk_builder_get_object(builder, "two_finger_horizontal_scrolling");
+ properties[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(object)) ? 1 :0;
+
+ object = gtk_builder_get_object(builder, "continuous_edge_scrolling");
+ properties[2] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(object)) ? 1 :0;
+
+ if (!gpds_xinput_set_int_properties(xinput,
+ gpds_touchpad_xinput_get_name(GPDS_TOUCHPAD_TWO_FINGER_SCROLLING),
+ gpds_touchpad_xinput_get_format_type(GPDS_TOUCHPAD_TWO_FINGER_SCROLLING),
+ &error,
+ properties,
+ 2)) {
+ if (error) {
+ show_error(error);
+ g_error_free(error);
+ }
+ }
+}
+
+static void
set_range_property (GpdsXInput *xinput, GtkRange *range, GpdsTouchpadProperty property)
{
GError *error = NULL;
@@ -301,36 +330,6 @@
}
static void
-cb_vertical_scrolling_toggled (GtkToggleButton *button, gpointer user_data)
-{
- GpdsTouchpadUI *ui = GPDS_TOUCHPAD_UI(user_data);
- GtkBuilder *builder;
- gboolean check;
-
- builder = gpds_ui_get_builder(GPDS_UI(user_data));
-
- set_edge_scroll_toggle_property(ui->xinput, builder);
-
- check = gtk_toggle_button_get_active(button);
- gpds_ui_set_gconf_bool(GPDS_UI(ui), GPDS_TOUCHPAD_VERTICAL_SCROLLING_KEY, check);
-}
-
-static void
-cb_horizontal_scrolling_toggled (GtkToggleButton *button, gpointer user_data)
-{
- GpdsTouchpadUI *ui = GPDS_TOUCHPAD_UI(user_data);
- GtkBuilder *builder;
- gboolean check;
-
- builder = gpds_ui_get_builder(GPDS_UI(user_data));
-
- set_edge_scroll_toggle_property(ui->xinput, builder);
-
- check = gtk_toggle_button_get_active(button);
- gpds_ui_set_gconf_bool(GPDS_UI(ui), GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_KEY, check);
-}
-
-static void
cb_vertical_scrolling_scale_value_changed (GtkRange *range, gpointer user_data)
{
GpdsTouchpadUI *ui = GPDS_TOUCHPAD_UI(user_data);
@@ -360,21 +359,41 @@
gpds_ui_set_gconf_int(GPDS_UI(ui), GPDS_TOUCHPAD_VERTICAL_SCROLLING_DISTANCE_KEY, (gint)distance);
}
-static void
-cb_continuous_edge_scrolling_toggled (GtkToggleButton *button, gpointer user_data)
-{
- GpdsTouchpadUI *ui = GPDS_TOUCHPAD_UI(user_data);
- GtkBuilder *builder;
- gboolean check;
-
- builder = gpds_ui_get_builder(GPDS_UI(user_data));
-
- set_edge_scroll_toggle_property(ui->xinput, builder);
-
- check = gtk_toggle_button_get_active(button);
- gpds_ui_set_gconf_bool(GPDS_UI(ui), GPDS_TOUCHPAD_CONTINUOUS_EDGE_SCROLLING_KEY, check);
+#define DEFINE_EDGE_SCROLLING_CALLBACK(type, TYPE) \
+static void \
+cb_ ## type ## _scrolling_toggled (GtkToggleButton *button, \
+ gpointer user_data) \
+{ \
+ GpdsTouchpadUI *ui = GPDS_TOUCHPAD_UI(user_data); \
+ GtkBuilder *builder; \
+ gboolean check; \
+ builder = gpds_ui_get_builder(GPDS_UI(user_data)); \
+ set_edge_scrolling_toggle_property(ui->xinput, builder); \
+ check = gtk_toggle_button_get_active(button); \
+ gpds_ui_set_gconf_bool(GPDS_UI(ui), GPDS_TOUCHPAD_ ## TYPE ## _SCROLLING_KEY, check); \
+}
+
+DEFINE_EDGE_SCROLLING_CALLBACK(vertical, VERTICAL)
+DEFINE_EDGE_SCROLLING_CALLBACK(horizontal, HORIZONTAL)
+DEFINE_EDGE_SCROLLING_CALLBACK(continuous_edge, CONTINUOUS_EDGE)
+
+#define DEFINE_TWO_FINGER_SCROLLING_CALLBACK(direction, DIRECTION) \
+static void \
+cb_two_finger_ ## direction ## _scrolling_toggled (GtkToggleButton *button, \
+ gpointer user_data) \
+{ \
+ GpdsTouchpadUI *ui = GPDS_TOUCHPAD_UI(user_data); \
+ GtkBuilder *builder; \
+ gboolean check; \
+ builder = gpds_ui_get_builder(GPDS_UI(user_data)); \
+ set_two_finger_scrolling_toggle_property(ui->xinput, builder); \
+ check = gtk_toggle_button_get_active(button); \
+ gpds_ui_set_gconf_bool(GPDS_UI(ui), GPDS_TOUCHPAD_TWO_FINGER_ ## DIRECTION ## _SCROLLING_KEY, check); \
}
+DEFINE_TWO_FINGER_SCROLLING_CALLBACK(vertical, VERTICAL)
+DEFINE_TWO_FINGER_SCROLLING_CALLBACK(horizontal, HORIZONTAL)
+
static void
set_circular_scrolling_trigger_button_state (GpdsTouchpadUI *ui,
GpdsTouchpadCircularScrollingTrigger trigger)
@@ -536,6 +555,8 @@
CONNECT(vertical_scrolling_scale, value_changed);
CONNECT(horizontal_scrolling, toggled);
CONNECT(horizontal_scrolling_scale, value_changed);
+ CONNECT(two_finger_vertical_scrolling, toggled);
+ CONNECT(two_finger_horizontal_scrolling, toggled);
/* cirlular scrolling trigger */
CONNECT(trigger_top_toggle, button_press_event);
@@ -623,8 +644,8 @@
}
static void
-set_edge_scroll_property_from_preference (GpdsTouchpadUI *ui,
- GtkBuilder *builder)
+set_edge_scrolling_property_from_preference (GpdsTouchpadUI *ui,
+ GtkBuilder *builder)
{
GObject *object;
gint *values;
@@ -662,6 +683,38 @@
}
static void
+set_two_finger_scrolling_property_from_preference (GpdsTouchpadUI *ui,
+ GtkBuilder *builder)
+{
+ GObject *object;
+ gint *values;
+ gulong n_values;
+ gboolean enable;
+
+ if (!get_integer_properties(ui->xinput, GPDS_TOUCHPAD_TWO_FINGER_SCROLLING,
+ &values, &n_values)) {
+ return;
+ }
+
+ if (n_values != 2) {
+ g_free(values);
+ return;
+ }
+
+ if (!gpds_ui_get_gconf_bool(GPDS_UI(ui), GPDS_TOUCHPAD_TWO_FINGER_VERTICAL_SCROLLING_KEY, &enable))
+ enable = (values[0] == 1);
+ object = gtk_builder_get_object(builder, "two_finger_vertical_scrolling");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(object), enable);
+
+ if (!gpds_ui_get_gconf_bool(GPDS_UI(ui), GPDS_TOUCHPAD_TWO_FINGER_HORIZONTAL_SCROLLING_KEY, &enable))
+ enable = (values[0] == 1);
+ object = gtk_builder_get_object(builder, "two_finger_horizontal_scrolling");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(object), enable);
+
+ g_free(values);
+}
+
+static void
set_scroll_distance_property_from_preference (GpdsTouchpadUI *ui,
GtkBuilder *builder)
{
@@ -767,9 +820,10 @@
builder,
"faster_tapping_check");
set_circular_scrolling_property_from_preference(touchpad_ui, builder);
- set_edge_scroll_property_from_preference(touchpad_ui, builder);
+ set_edge_scrolling_property_from_preference(touchpad_ui, builder);
set_scroll_distance_property_from_preference(touchpad_ui, builder);
set_circular_scrolling_trigger_property_from_preference(touchpad_ui, builder);
+ set_two_finger_scrolling_property_from_preference(touchpad_ui, builder);
set_touchpad_use_type_property_from_preference(touchpad_ui, builder);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]