summaryrefslogtreecommitdiffstats
path: root/meta-xfce/recipes-xfce
diff options
context:
space:
mode:
authorAndreas Müller <schnitzeltony@googlemail.com>2012-12-23 13:02:34 +0000
committerMartin Jansa <Martin.Jansa@gmail.com>2012-12-27 16:14:21 +0100
commit8663bf9e29a2f66ae4238b5c668c0d92d00fcf38 (patch)
treedcef65dcba3cb4576b87dc675c4b466799b7138a /meta-xfce/recipes-xfce
parentf52e530ac45244bfab5a17949392f4f9d3e39312 (diff)
downloadmeta-openembedded-8663bf9e29a2f66ae4238b5c668c0d92d00fcf38.tar.gz
xfce4-settings: add a 'Touchscreen pointer' option in mouse settings
'Touchscreen pointer' can be set per pointer device. If the pointer device gets active (Press/Move/Plugin) and this option is set: * Mouse cursor is hidden during normal operation * When waiting for startup-notification a wait cursor is displayed * The gtk2 setting TouchscreenMode is set to e.g disable prelighting buttons on mouse over The changes are in use for a while now on my devices help using XFCE on touchsreen devices. The git-version of this patch series was sent to https://bugzilla.xfce.org/show_bug.cgi?id=9474 but no response was received yet. In the patch series attached here the binary cursor files 'invisible' and 'wait' were taken out of patch 0001.. because the files were not created by do_patch. Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'meta-xfce/recipes-xfce')
-rw-r--r--meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0001-add-cursor-theme-xfce-invisible.patch248
-rw-r--r--meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0002-mouse-settings-dialog-add-touchscreen-pointer-option.patch1236
-rw-r--r--meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0003-XfcePointersHelper-gets-a-pointer-to-XfceXSettingsHe.patch137
-rw-r--r--meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0004-XfceXSettingsHelper-gets-a-property-touchscreen-poin.patch251
-rw-r--r--meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0005-pointers-detect-a-change-of-pointer-device-used-and-.patch582
-rw-r--r--meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/invisiblebin0 -> 4160 bytes
-rw-r--r--meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/waitbin0 -> 126096 bytes
-rw-r--r--meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.10.0.bb18
8 files changed, 2470 insertions, 2 deletions
diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0001-add-cursor-theme-xfce-invisible.patch b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0001-add-cursor-theme-xfce-invisible.patch
new file mode 100644
index 000000000..9272081f0
--- /dev/null
+++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0001-add-cursor-theme-xfce-invisible.patch
@@ -0,0 +1,248 @@
1From 4be18d7c8f2ac72b402dcbe8385922638fcd0a89 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
3Date: Tue, 30 Oct 2012 13:14:11 +0100
4Subject: [PATCH 1/5] add cursor-theme "xfce-invisible"
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
10Upstream-Status: Submitted [1]
11[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474
12---
13 Makefile.am | 1 +
14 configure.ac | 2 +
15 cursors/Makefile.am | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++
16 cursors/index.theme | 3 +
17 6 files changed, 184 insertions(+), 0 deletions(-)
18 create mode 100644 cursors/Makefile.am
19 create mode 100644 cursors/index.theme
20
21diff --git a/Makefile.am b/Makefile.am
22index 3060bac..3f0dd1d 100644
23--- a/Makefile.am
24+++ b/Makefile.am
25@@ -1,6 +1,7 @@
26 # $Id$
27
28 SUBDIRS = \
29+ cursors \
30 dialogs \
31 xfce4-settings-manager \
32 xfce4-settings-editor \
33diff --git a/configure.ac b/configure.ac
34index 0e7907d..1378049 100644
35--- a/configure.ac
36+++ b/configure.ac
37@@ -157,6 +157,7 @@ dnl *** Optional support for Xcursor ***
38 dnl ************************************
39 XDT_CHECK_OPTIONAL_PACKAGE([XCURSOR], [xcursor], [1.1.0],
40 [xcursor], [Cursor themes support])
41+AC_SUBST(cursordir, "\${datadir}/icons/xfce-invisible/cursors")
42
43 dnl ****************************************
44 dnl *** Optional support for Libxklavier ***
45@@ -232,6 +233,7 @@ AC_SUBST([PLATFORM_LDFLAGS])
46 AC_OUTPUT([
47 Makefile
48 po/Makefile.in
49+cursors/Makefile
50 dialogs/Makefile
51 dialogs/appearance-settings/Makefile
52 dialogs/accessibility-settings/Makefile
53diff --git a/cursors/Makefile.am b/cursors/Makefile.am
54new file mode 100644
55index 0000000..c9e5a9f
56--- /dev/null
57+++ b/cursors/Makefile.am
58@@ -0,0 +1,178 @@
59+CURSOR_NAMES_INVISIBLE = \
60+ 00008160000006810000408080010102 \
61+ 028006030e0e7ebffc7f7070c0600140 \
62+ 2870a09082c103050810ffdffffe0204 \
63+ 03b6e0fcb3499374a867c041f52298f0 \
64+ 0876e1c15ff2fc01f906f1c363074c0f \
65+ 08ffe1cb5fe6fc01f906f1c063814ccf \
66+ 08ffe1e65f80fcfdf9fff11263e74c48 \
67+ 1001208387f90000800003000700f6ff \
68+ 1081e37283d90000800003c07f3ef6bf \
69+ 14fef782d02440884392942c11205230 \
70+ 208530c400c041818281048008011002 \
71+ 3085a0e285430894940527032f8b26df \
72+ 4498f0e0c1937ffe01fd06f973665830 \
73+ 5aca4d189052212118709018842178c0 \
74+ 5c6cd98b3f3ebcb1f9c7f1c204630408 \
75+ 6407b0e94181790501fd1e167b474872 \
76+ 640fb0e74195791501fd1ed57b41487f \
77+ 9081237383d90e509aa00f00170e968f \
78+ 9d800788f1b08800ae810202380a0822 \
79+ a2a266d0498c3104214a47bd64ab0fc8 \
80+ b66166c04f8c3109214a4fbd64a50fc8 \
81+ c7088f0f3e6c8088236ef8e1e3e70000 \
82+ d9ce0ab605698f320427677b458ad60b \
83+ e29285e634086352946a0e7090d73106 \
84+ f41c0e382c94c0958e07017e42b00462 \
85+ f41c0e382c97c0938e07017e42800402 \
86+ fcf1c3c7cd4491d801f1e1c78f100000 \
87+ fcf21c00b30f7e3f83fe0dfd12e71cff \
88+ alias \
89+ all-scroll \
90+ arrow \
91+ base_arrow_down \
92+ base_arrow_up \
93+ based_arrow_down \
94+ based_arrow_up \
95+ bd_double_arrow \
96+ boat \
97+ bottom_left_corner \
98+ bottom_right_corner \
99+ bottom_side \
100+ bottom_tee \
101+ cell \
102+ center_ptr \
103+ circle \
104+ closedhand \
105+ color-picker \
106+ col-resize \
107+ copy \
108+ cross \
109+ cross_reverse \
110+ crossed_circle \
111+ crosshair \
112+ default \
113+ diamond_cross \
114+ dnd-ask \
115+ dnd-copy \
116+ dnd-link \
117+ dnd-move \
118+ dnd-no-drop \
119+ dnd-none \
120+ dot \
121+ dot_box_mask \
122+ dotbox \
123+ double_arrow \
124+ down_arrow \
125+ draft_large \
126+ draft_small \
127+ draped_box \
128+ e-resize \
129+ ew-resize \
130+ exchange \
131+ fd_double_arrow \
132+ fleur \
133+ forbidden \
134+ grab \
135+ grabbing \
136+ gumby \
137+ h_double_arrow \
138+ hand \
139+ hand1 \
140+ hand2 \
141+ help \
142+ ibeam \
143+ icon \
144+ left_arrow \
145+ left_ptr \
146+ left_side \
147+ left_tee \
148+ link \
149+ ll_angle \
150+ lr_angle \
151+ move \
152+ ne-resize \
153+ nesw-resize \
154+ no-drop \
155+ not-allowed \
156+ n-resize \
157+ ns-resize \
158+ nw-resize \
159+ nwse-resize \
160+ openhand \
161+ pencil \
162+ pirate \
163+ plus \
164+ pointer \
165+ pointing_hand \
166+ question_arrow \
167+ right_arrow \
168+ right_ptr \
169+ right_side \
170+ right_tee \
171+ row-resize \
172+ sailboat \
173+ sb_down_arrow \
174+ sb_h_double_arrow \
175+ sb_left_arrow \
176+ sb_right_arrow \
177+ sb_up_arrow \
178+ sb_v_double_arrow \
179+ se-resize \
180+ size_all \
181+ size_bdiag \
182+ size_fdiag \
183+ size_hor \
184+ size_ver \
185+ sizing \
186+ shuttle \
187+ split_h \
188+ split_v \
189+ s-resize \
190+ sw-resize \
191+ target \
192+ tcross \
193+ text \
194+ top_left_arrow \
195+ top_left_corner \
196+ top_right_corner \
197+ top_side \
198+ top_tee \
199+ trek \
200+ ul_angle \
201+ up_arrow \
202+ ur_angle \
203+ vertical-text \
204+ v_double_arrow \
205+ whats_this \
206+ w-resize \
207+ X_cursor \
208+ xterm \
209+ zoom-in \
210+ zoom-out
211+
212+CURSOR_NAMES = \
213+ 3ecb610c1bf2410f44200f48c40d3599 \
214+ 08e8e1c95fe2fc01f976f1e063a24ccd \
215+ 00000000000000020006000e7e9ffc3f \
216+ half-busy \
217+ left_ptr_watch \
218+ progress \
219+ watch
220+
221+
222+EXTRA_DIST = invisible wait index.theme
223+
224+install-data-local:
225+ $(mkinstalldirs) $(DESTDIR)@cursordir@;
226+ $(INSTALL_DATA) index.theme $(DESTDIR)/@cursordir@/..
227+ $(INSTALL_DATA) invisible wait $(DESTDIR)@cursordir@/
228+ for CURSOR in $(CURSOR_NAMES_INVISIBLE); do \
229+ echo '-- Installing invisible cursor '$$CURSOR; \
230+ ln -s invisible $(DESTDIR)@cursordir@/$$CURSOR; \
231+ done
232+ for CURSOR in $(CURSOR_NAMES); do \
233+ echo '-- Installing visible cursor '$$CURSOR; \
234+ ln -s wait $(DESTDIR)@cursordir@/$$CURSOR; \
235+ done
236+
237diff --git a/cursors/index.theme b/cursors/index.theme
238new file mode 100644
239index 0000000..0c48458
240--- /dev/null
241+++ b/cursors/index.theme
242@@ -0,0 +1,3 @@
243+[Icon Theme]
244+Name=xfce-invisible
245+Example=invisible
246--
2471.7.6.5
248
diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0002-mouse-settings-dialog-add-touchscreen-pointer-option.patch b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0002-mouse-settings-dialog-add-touchscreen-pointer-option.patch
new file mode 100644
index 000000000..4151c3d78
--- /dev/null
+++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0002-mouse-settings-dialog-add-touchscreen-pointer-option.patch
@@ -0,0 +1,1236 @@
1From 7c87f8f202a7743a18b8d7fdab5c66a3d54badd5 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
3Date: Thu, 1 Nov 2012 21:01:59 +0100
4Subject: [PATCH 2/5] mouse settings dialog: add touchscreen-pointer option
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9
10Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
11Upstream-Status: Submitted [1]
12[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474
13---
14 dialogs/mouse-settings/main.c | 56 +++++++++++++++++++++++++++++
15 dialogs/mouse-settings/mouse-dialog.glade | 28 ++++++++++++++-
16 dialogs/mouse-settings/mouse-dialog_ui.h | 1056 +++++++++++++++---------------
17 3 files changed, 422 insertions(+), 329 deletions(-)
18
19diff --git a/dialogs/mouse-settings/main.c b/dialogs/mouse-settings/main.c
20index f4b475b..ff08219 100644
21--- a/dialogs/mouse-settings/main.c
22+++ b/dialogs/mouse-settings/main.c
23@@ -956,6 +956,50 @@ mouse_settings_device_set_enabled (GtkToggleButton *button,
24
25
26
27+#ifdef HAVE_XCURSOR
28+static void
29+mouse_settings_on_touchscreen_pointer (GtkToggleButton *button,
30+ GtkBuilder *builder)
31+{
32+ gchar *name = NULL;
33+ gchar *prop;
34+ gboolean enabled;
35+
36+ if (locked > 0)
37+ return;
38+
39+ if (mouse_settings_device_get_selected (builder, NULL, &name))
40+ {
41+ enabled = gtk_toggle_button_get_active (button);
42+ prop = g_strconcat ("/", name, "/TouchscreenPointer", NULL);
43+ xfconf_channel_set_bool (pointers_channel, prop, enabled);
44+ g_free (prop);
45+ }
46+ g_free (name);
47+}
48+
49+static void
50+mouse_settings_set_touchscreen_pointer (GtkBuilder *builder)
51+{
52+ gchar *name = NULL;
53+ gchar *prop;
54+ gboolean enabled;
55+ GtkToggleButton *button;
56+
57+ if (mouse_settings_device_get_selected (builder, NULL, &name))
58+ {
59+ button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "touchscreen-pointer"));
60+ prop = g_strconcat ("/", name, "/TouchscreenPointer", NULL);
61+ enabled = xfconf_channel_get_bool (pointers_channel, prop, FALSE);
62+ gtk_toggle_button_set_active (button, enabled);
63+ g_free (prop);
64+ }
65+ g_free (name);
66+}
67+#endif
68+
69+
70+
71 static void
72 mouse_settings_device_selection_changed (GtkBuilder *builder)
73 {
74@@ -1007,6 +1051,9 @@ mouse_settings_device_selection_changed (GtkBuilder *builder)
75 /* get the selected item */
76 if (mouse_settings_device_get_selected (builder, &device, NULL))
77 {
78+#ifdef HAVE_XCURSOR
79+ mouse_settings_set_touchscreen_pointer (builder);
80+#endif
81 gdk_error_trap_push ();
82 device_info = XListInputDevices (xdisplay, &ndevices);
83 if (gdk_error_trap_pop () == 0 && device_info != NULL)
84@@ -1735,11 +1782,20 @@ main (gint argc, gchar **argv)
85 /* populate the themes treeview */
86 mouse_settings_themes_populate_store (builder);
87
88+ /* connect & fill touchscreen-pointer */
89+ object = gtk_builder_get_object (builder, "touchscreen-pointer");
90+ g_signal_connect (G_OBJECT (object), "toggled",
91+ G_CALLBACK (mouse_settings_on_touchscreen_pointer), builder);
92+ mouse_settings_set_touchscreen_pointer (builder);
93+
94 /* connect the cursor size in the cursor tab */
95 object = gtk_builder_get_object (builder, "theme-cursor-size");
96 xfconf_g_property_bind (xsettings_channel, "/Gtk/CursorThemeSize",
97 G_TYPE_INT, G_OBJECT (object), "value");
98 #else
99+ /* hide touchscreen-pointer */
100+ object = gtk_builder_get_object (builder, "touchscreen-pointer");
101+ gtk_widget_hide (GTK_WIDGET (object));
102 /* hide the themes tab */
103 object = gtk_builder_get_object (builder, "themes-hbox");
104 gtk_widget_hide (GTK_WIDGET (object));
105diff --git a/dialogs/mouse-settings/mouse-dialog.glade b/dialogs/mouse-settings/mouse-dialog.glade
106index d3aab0d..573c551 100644
107--- a/dialogs/mouse-settings/mouse-dialog.glade
108+++ b/dialogs/mouse-settings/mouse-dialog.glade
109@@ -323,7 +323,7 @@
110 <property name="visible">True</property>
111 <property name="can_focus">False</property>
112 <property name="border_width">6</property>
113- <property name="n_rows">3</property>
114+ <property name="n_rows">4</property>
115 <property name="n_columns">2</property>
116 <property name="column_spacing">12</property>
117 <property name="row_spacing">6</property>
118@@ -415,6 +415,32 @@
119 <property name="bottom_attach">3</property>
120 </packing>
121 </child>
122+ <child>
123+ <object class="GtkAlignment" id="alignment8">
124+ <property name="visible">True</property>
125+ <property name="can_focus">False</property>
126+ <property name="xalign">0</property>
127+ <property name="xscale">0</property>
128+ <property name="yscale">0</property>
129+ <child>
130+ <object class="GtkCheckButton" id="touchscreen-pointer">
131+ <property name="label" translatable="yes">_Touchscreen pointer</property>
132+ <property name="use_action_appearance">False</property>
133+ <property name="visible">True</property>
134+ <property name="can_focus">True</property>
135+ <property name="receives_default">False</property>
136+ <property name="tooltip_text" translatable="yes">When selected, no mouse pointer is displayed for this device and gtk TouchscreenMode is activated</property>
137+ <property name="use_underline">True</property>
138+ <property name="draw_indicator">True</property>
139+ </object>
140+ </child>
141+ </object>
142+ <packing>
143+ <property name="right_attach">2</property>
144+ <property name="top_attach">3</property>
145+ <property name="bottom_attach">4</property>
146+ </packing>
147+ </child>
148 </object>
149 </child>
150 </object>
151diff --git a/dialogs/mouse-settings/mouse-dialog_ui.h b/dialogs/mouse-settings/mouse-dialog_ui.h
152index 9e0c267..8a68c3b 100644
153--- a/dialogs/mouse-settings/mouse-dialog_ui.h
154+++ b/dialogs/mouse-settings/mouse-dialog_ui.h
155@@ -31,545 +31,555 @@ static const char mouse_dialog_ui[] =
156 "</property></object><object class=\"GtkImage\" id=\"image5\"><property "
157 "name=\"visible\">True</property><property name=\"can_focus\">False</pro"
158 "perty><property name=\"stock\">gtk-revert-to-saved</property></object><"
159- "object class=\"XfceTitledDialog\" id=\"mouse-dialog\"><property name=\""
160- "can_focus\">False</property><property name=\"title\" translatable=\"yes"
161- "\">Mouse and Touchpad</property><property name=\"window_position\">cent"
162- "er-on-parent</property><property name=\"icon_name\">preferences-desktop"
163- "-peripherals</property><property name=\"type_hint\">dialog</property><p"
164- "roperty name=\"subtitle\" translatable=\"yes\">Configure pointer device"
165- " behavior and appearance</property><child internal-child=\"vbox\"><obje"
166- "ct class=\"GtkVBox\" id=\"dialog-vbox1\"><property name=\"visible\">Tru"
167- "e</property><property name=\"can_focus\">False</property><property name"
168- "=\"spacing\">2</property><child internal-child=\"action_area\"><object "
169- "class=\"GtkHButtonBox\" id=\"dialog-action_area1\"><property name=\"vis"
170- "ible\">True</property><property name=\"can_focus\">False</property><pro"
171- "perty name=\"layout_style\">end</property><child><object class=\"GtkBut"
172- "ton\" id=\"button1\"><property name=\"label\">gtk-close</property><prop"
173- "erty name=\"visible\">True</property><property name=\"can_focus\">True<"
174- "/property><property name=\"receives_default\">True</property><property "
175- "name=\"use_action_appearance\">False</property><property name=\"use_sto"
176- "ck\">True</property></object><packing><property name=\"expand\">False</"
177- "property><property name=\"fill\">False</property><property name=\"posit"
178- "ion\">0</property></packing></child><child><object class=\"GtkButton\" "
179- "id=\"button2\"><property name=\"label\">gtk-help</property><property na"
180- "me=\"use_action_appearance\">False</property><property name=\"visible\""
181- ">True</property><property name=\"can_focus\">True</property><property n"
182- "ame=\"receives_default\">True</property><property name=\"use_stock\">Tr"
183- "ue</property></object><packing><property name=\"expand\">False</propert"
184- "y><property name=\"fill\">False</property><property name=\"position\">0"
185- "</property><property name=\"secondary\">True</property></packing></chil"
186- "d></object><packing><property name=\"expand\">False</property><property"
187- " name=\"fill\">True</property><property name=\"pack_type\">end</propert"
188- "y><property name=\"position\">0</property></packing></child><child><obj"
189- "ect class=\"GtkNotebook\" id=\"plug-child\"><property name=\"visible\">"
190- "True</property><property name=\"can_focus\">True</property><property na"
191- "me=\"border_width\">6</property><child><object class=\"GtkVBox\" id=\"v"
192- "box1\"><property name=\"visible\">True</property><property name=\"can_f"
193- "ocus\">False</property><property name=\"border_width\">12</property><pr"
194- "operty name=\"spacing\">6</property><child><object class=\"GtkHBox\" id"
195- "=\"hbox1\"><property name=\"visible\">True</property><property name=\"c"
196- "an_focus\">False</property><property name=\"spacing\">12</property><chi"
197- "ld><object class=\"GtkLabel\" id=\"label7\"><property name=\"visible\">"
198- "True</property><property name=\"can_focus\">False</property><property n"
199- "ame=\"label\" translatable=\"yes\">De_vice:</property><property name=\""
200- "use_underline\">True</property><property name=\"mnemonic_widget\">devic"
201- "e-combobox</property><property name=\"angle\">0.050000000000000003</pro"
202- "perty></object><packing><property name=\"expand\">False</property><prop"
203- "erty name=\"fill\">True</property><property name=\"position\">0</proper"
204- "ty></packing></child><child><object class=\"GtkComboBox\" id=\"device-c"
205- "ombobox\"><property name=\"visible\">True</property><property name=\"ca"
206- "n_focus\">False</property></object><packing><property name=\"expand\">T"
207- "rue</property><property name=\"fill\">True</property><property name=\"p"
208- "osition\">1</property></packing></child></object><packing><property nam"
209- "e=\"expand\">False</property><property name=\"fill\">True</property><pr"
210- "operty name=\"position\">0</property></packing></child><child><object c"
211- "lass=\"GtkCheckButton\" id=\"device-enabled\"><property name=\"label\" "
212- "translatable=\"yes\">_Enable this device</property><property name=\"vis"
213- "ible\">True</property><property name=\"can_focus\">True</property><prop"
214- "erty name=\"receives_default\">False</property><property name=\"use_act"
215- "ion_appearance\">False</property><property name=\"use_underline\">True<"
216- "/property><property name=\"draw_indicator\">True</property></object><pa"
217- "cking><property name=\"expand\">False</property><property name=\"fill\""
218- ">True</property><property name=\"position\">1</property></packing></chi"
219- "ld><child><object class=\"GtkNotebook\" id=\"device-notebook\"><propert"
220- "y name=\"visible\">True</property><property name=\"can_focus\">True</pr"
221- "operty><child><object class=\"GtkVBox\" id=\"device-box\"><property nam"
222- "e=\"visible\">True</property><property name=\"can_focus\">False</proper"
223- "ty><property name=\"border_width\">6</property><property name=\"spacing"
224- "\">6</property><child><object class=\"GtkFrame\" id=\"frame1\"><propert"
225- "y name=\"visible\">True</property><property name=\"can_focus\">False</p"
226- "roperty><property name=\"label_xalign\">0</property><property name=\"sh"
227- "adow_type\">none</property><child><object class=\"GtkAlignment\" id=\"a"
228- "lignment1\"><property name=\"visible\">True</property><property name=\""
229- "can_focus\">False</property><property name=\"left_padding\">12</propert"
230- "y><child><object class=\"GtkVBox\" id=\"vbox12\"><property name=\"visib"
231- "le\">True</property><property name=\"can_focus\">False</property><prope"
232- "rty name=\"border_width\">6</property><property name=\"spacing\">6</pro"
233- "perty><child><object class=\"GtkHBox\" id=\"hbox3\"><property name=\"vi"
234- "sible\">True</property><property name=\"can_focus\">False</property><pr"
235- "operty name=\"spacing\">12</property><child><object class=\"GtkRadioBut"
236- "ton\" id=\"device-right-handed\"><property name=\"label\" translatable="
237- "\"yes\">_Right-handed</property><property name=\"visible\">True</proper"
238- "ty><property name=\"can_focus\">True</property><property name=\"receive"
239- "s_default\">False</property><property name=\"use_action_appearance\">Fa"
240- "lse</property><property name=\"use_underline\">True</property><property"
241- " name=\"active\">True</property><property name=\"draw_indicator\">True<"
242- "/property></object><packing><property name=\"expand\">False</property><"
243- "property name=\"fill\">True</property><property name=\"position\">0</pr"
244- "operty></packing></child><child><object class=\"GtkRadioButton\" id=\"d"
245- "evice-left-handed\"><property name=\"label\" translatable=\"yes\">_Left"
246- "-handed</property><property name=\"visible\">True</property><property n"
247- "ame=\"can_focus\">True</property><property name=\"receives_default\">Fa"
248- "lse</property><property name=\"use_action_appearance\">False</property>"
249- "<property name=\"use_underline\">True</property><property name=\"draw_i"
250- "ndicator\">True</property><property name=\"group\">device-right-handed<"
251- "/property></object><packing><property name=\"expand\">False</property><"
252- "property name=\"fill\">True</property><property name=\"position\">1</pr"
253- "operty></packing></child></object><packing><property name=\"expand\">Tr"
254- "ue</property><property name=\"fill\">True</property><property name=\"po"
255- "sition\">0</property></packing></child><child><object class=\"GtkCheckB"
256- "utton\" id=\"device-reverse-scrolling\"><property name=\"label\" transl"
257- "atable=\"yes\">Reverse scroll d_irection</property><property name=\"vis"
258- "ible\">True</property><property name=\"can_focus\">True</property><prop"
259- "erty name=\"receives_default\">False</property><property name=\"tooltip"
260- "_text\" translatable=\"yes\">When selected, the scroll wheel will work "
261- "in the opposite direction</property><property name=\"use_action_appeara"
262- "nce\">False</property><property name=\"use_underline\">True</property><"
263- "property name=\"draw_indicator\">True</property></object><packing><prop"
264- "erty name=\"expand\">True</property><property name=\"fill\">True</prope"
265- "rty><property name=\"position\">1</property></packing></child></object>"
266- "</child></object></child><child type=\"label\"><object class=\"GtkLabel"
267- "\" id=\"label14\"><property name=\"visible\">True</property><property n"
268- "ame=\"can_focus\">False</property><property name=\"label\" translatable"
269- "=\"yes\">Buttons</property><attributes><attribute name=\"weight\" value"
270- "=\"bold\"/></attributes></object></child></object><packing><property na"
271- "me=\"expand\">False</property><property name=\"fill\">True</property><p"
272- "roperty name=\"position\">0</property></packing></child><child><object "
273- "class=\"GtkFrame\" id=\"frame2\"><property name=\"visible\">True</prope"
274- "rty><property name=\"can_focus\">False</property><property name=\"label"
275- "_xalign\">0</property><property name=\"shadow_type\">none</property><ch"
276- "ild><object class=\"GtkAlignment\" id=\"alignment2\"><property name=\"v"
277+ "object class=\"GtkListStore\" id=\"synaptics-scroll-store\"><columns><c"
278+ "olumn type=\"gchararray\"/><column type=\"gboolean\"/></columns><data><"
279+ "row><col id=\"0\" translatable=\"yes\">Disabled</col><col id=\"1\">True"
280+ "</col></row><row><col id=\"0\" translatable=\"yes\">Edge scrolling</col"
281+ "><col id=\"1\">True</col></row><row><col id=\"0\" translatable=\"yes\">"
282+ "Two-finger scrolling</col><col id=\"1\">True</col></row><row><col id=\""
283+ "0\" translatable=\"yes\">Circular scrolling</col><col id=\"1\">True</co"
284+ "l></row></data></object><object class=\"GtkAdjustment\" id=\"theme-curs"
285+ "or-size\"><property name=\"lower\">16</property><property name=\"upper\""
286+ ">48</property><property name=\"value\">24</property><property name=\"st"
287+ "ep_increment\">1</property><property name=\"page_increment\">11</proper"
288+ "ty></object><object class=\"XfceTitledDialog\" id=\"mouse-dialog\"><pro"
289+ "perty name=\"can_focus\">False</property><property name=\"title\" trans"
290+ "latable=\"yes\">Mouse and Touchpad</property><property name=\"window_po"
291+ "sition\">center-on-parent</property><property name=\"icon_name\">prefer"
292+ "ences-desktop-peripherals</property><property name=\"type_hint\">dialog"
293+ "</property><property name=\"subtitle\" translatable=\"yes\">Configure p"
294+ "ointer device behavior and appearance</property><child internal-child=\""
295+ "vbox\"><object class=\"GtkVBox\" id=\"dialog-vbox1\"><property name=\"v"
296 "isible\">True</property><property name=\"can_focus\">False</property><p"
297- "roperty name=\"left_padding\">12</property><child><object class=\"GtkTa"
298- "ble\" id=\"table1\"><property name=\"visible\">True</property><property"
299- " name=\"can_focus\">False</property><property name=\"border_width\">6</"
300- "property><property name=\"n_rows\">3</property><property name=\"n_colum"
301- "ns\">2</property><property name=\"column_spacing\">12</property><proper"
302- "ty name=\"row_spacing\">6</property><child><object class=\"GtkLabel\" i"
303- "d=\"device-acceleration-label\"><property name=\"visible\">True</proper"
304- "ty><property name=\"can_focus\">False</property><property name=\"xalign"
305- "\">0</property><property name=\"label\" translatable=\"yes\">_Accelerat"
306- "ion:</property><property name=\"use_underline\">True</property><propert"
307- "y name=\"mnemonic_widget\">device-acceleration-scale</property></object"
308- "><packing><property name=\"x_options\">GTK_FILL</property><property nam"
309- "e=\"y_options\">GTK_FILL</property></packing></child><child><object cla"
310- "ss=\"GtkHScale\" id=\"device-acceleration-scale\"><property name=\"visi"
311- "ble\">True</property><property name=\"can_focus\">True</property><prope"
312- "rty name=\"tooltip_text\" translatable=\"yes\">The factor at which the "
313- "pointer\'s speed will increase as the mouse is moved</property><propert"
314- "y name=\"update_policy\">delayed</property><property name=\"adjustment\""
315- ">device-acceleration</property><property name=\"round_digits\">1</prope"
316- "rty><property name=\"value_pos\">right</property></object><packing><pro"
317- "perty name=\"left_attach\">1</property><property name=\"right_attach\">"
318- "2</property></packing></child><child><object class=\"GtkHScale\" id=\"d"
319- "evice-threshold-scale\"><property name=\"visible\">True</property><prop"
320- "erty name=\"can_focus\">True</property><property name=\"tooltip_text\" "
321- "translatable=\"yes\">The number of pixels the pointer must move in a sh"
322- "ort time before it starts accelerating</property><property name=\"updat"
323- "e_policy\">delayed</property><property name=\"adjustment\">device-thres"
324- "hold</property><property name=\"round_digits\">0</property><property na"
325- "me=\"digits\">0</property><property name=\"value_pos\">right</property>"
326- "</object><packing><property name=\"left_attach\">1</property><property "
327- "name=\"right_attach\">2</property><property name=\"top_attach\">1</prop"
328- "erty><property name=\"bottom_attach\">2</property></packing></child><ch"
329- "ild><object class=\"GtkLabel\" id=\"device-threshold-label\"><property "
330+ "roperty name=\"spacing\">2</property><child internal-child=\"action_are"
331+ "a\"><object class=\"GtkHButtonBox\" id=\"dialog-action_area1\"><propert"
332+ "y name=\"visible\">True</property><property name=\"can_focus\">False</p"
333+ "roperty><property name=\"layout_style\">end</property><child><object cl"
334+ "ass=\"GtkButton\" id=\"button2\"><property name=\"label\">gtk-help</pro"
335+ "perty><property name=\"use_action_appearance\">False</property><propert"
336+ "y name=\"visible\">True</property><property name=\"can_focus\">True</pr"
337+ "operty><property name=\"receives_default\">True</property><property nam"
338+ "e=\"use_stock\">True</property></object><packing><property name=\"expan"
339+ "d\">False</property><property name=\"fill\">False</property><property n"
340+ "ame=\"position\">0</property><property name=\"secondary\">True</propert"
341+ "y></packing></child><child><object class=\"GtkButton\" id=\"button1\"><"
342+ "property name=\"label\">gtk-close</property><property name=\"use_action"
343+ "_appearance\">False</property><property name=\"visible\">True</property"
344+ "><property name=\"can_focus\">True</property><property name=\"receives_"
345+ "default\">True</property><property name=\"use_stock\">True</property></"
346+ "object><packing><property name=\"expand\">False</property><property nam"
347+ "e=\"fill\">False</property><property name=\"position\">0</property></pa"
348+ "cking></child></object><packing><property name=\"expand\">False</proper"
349+ "ty><property name=\"fill\">True</property><property name=\"pack_type\">"
350+ "end</property><property name=\"position\">0</property></packing></child"
351+ "><child><object class=\"GtkNotebook\" id=\"plug-child\"><property name="
352+ "\"visible\">True</property><property name=\"can_focus\">True</property>"
353+ "<property name=\"border_width\">6</property><child><object class=\"GtkV"
354+ "Box\" id=\"vbox1\"><property name=\"visible\">True</property><property "
355+ "name=\"can_focus\">False</property><property name=\"border_width\">12</"
356+ "property><property name=\"spacing\">6</property><child><object class=\""
357+ "GtkHBox\" id=\"hbox1\"><property name=\"visible\">True</property><prope"
358+ "rty name=\"can_focus\">False</property><property name=\"spacing\">12</p"
359+ "roperty><child><object class=\"GtkLabel\" id=\"label7\"><property name="
360+ "\"visible\">True</property><property name=\"can_focus\">False</property"
361+ "><property name=\"label\" translatable=\"yes\">De_vice:</property><prop"
362+ "erty name=\"use_underline\">True</property><property name=\"mnemonic_wi"
363+ "dget\">device-combobox</property><property name=\"angle\">0.05000000000"
364+ "0000003</property></object><packing><property name=\"expand\">False</pr"
365+ "operty><property name=\"fill\">True</property><property name=\"position"
366+ "\">0</property></packing></child><child><object class=\"GtkComboBox\" i"
367+ "d=\"device-combobox\"><property name=\"visible\">True</property><proper"
368+ "ty name=\"can_focus\">False</property></object><packing><property name="
369+ "\"expand\">True</property><property name=\"fill\">True</property><prope"
370+ "rty name=\"position\">1</property></packing></child></object><packing><"
371+ "property name=\"expand\">False</property><property name=\"fill\">True</"
372+ "property><property name=\"position\">0</property></packing></child><chi"
373+ "ld><object class=\"GtkCheckButton\" id=\"device-enabled\"><property nam"
374+ "e=\"label\" translatable=\"yes\">_Enable this device</property><propert"
375+ "y name=\"use_action_appearance\">False</property><property name=\"visib"
376+ "le\">True</property><property name=\"can_focus\">True</property><proper"
377+ "ty name=\"receives_default\">False</property><property name=\"use_under"
378+ "line\">True</property><property name=\"draw_indicator\">True</property>"
379+ "</object><packing><property name=\"expand\">False</property><property n"
380+ "ame=\"fill\">True</property><property name=\"position\">1</property></p"
381+ "acking></child><child><object class=\"GtkNotebook\" id=\"device-noteboo"
382+ "k\"><property name=\"visible\">True</property><property name=\"can_focu"
383+ "s\">True</property><child><object class=\"GtkVBox\" id=\"device-box\"><"
384+ "property name=\"visible\">True</property><property name=\"can_focus\">F"
385+ "alse</property><property name=\"border_width\">6</property><property na"
386+ "me=\"spacing\">6</property><child><object class=\"GtkFrame\" id=\"frame"
387+ "1\"><property name=\"visible\">True</property><property name=\"can_focu"
388+ "s\">False</property><property name=\"label_xalign\">0</property><proper"
389+ "ty name=\"shadow_type\">none</property><child><object class=\"GtkAlignm"
390+ "ent\" id=\"alignment1\"><property name=\"visible\">True</property><prop"
391+ "erty name=\"can_focus\">False</property><property name=\"left_padding\""
392+ ">12</property><child><object class=\"GtkVBox\" id=\"vbox12\"><property "
393 "name=\"visible\">True</property><property name=\"can_focus\">False</pro"
394- "perty><property name=\"xalign\">0</property><property name=\"label\" tr"
395- "anslatable=\"yes\">_Sensitivity:</property><property name=\"use_underli"
396- "ne\">True</property><property name=\"mnemonic_widget\">device-threshold"
397- "-scale</property></object><packing><property name=\"top_attach\">1</pro"
398- "perty><property name=\"bottom_attach\">2</property><property name=\"x_o"
399- "ptions\">GTK_FILL</property></packing></child><child><object class=\"Gt"
400- "kAlignment\" id=\"alignment7\"><property name=\"visible\">True</propert"
401- "y><property name=\"can_focus\">False</property><property name=\"xalign\""
402- ">0</property><property name=\"xscale\">0</property><property name=\"ysc"
403- "ale\">0</property><child><object class=\"GtkButton\" id=\"device-reset-"
404- "feedback\"><property name=\"label\" translatable=\"yes\">Reset to De_fa"
405- "ults</property><property name=\"visible\">True</property><property name"
406- "=\"can_focus\">True</property><property name=\"receives_default\">True<"
407- "/property><property name=\"tooltip_text\" translatable=\"yes\">Set the "
408- "acceleration and sensitivity for the selected device to the default val"
409- "ues</property><property name=\"use_action_appearance\">False</property>"
410- "<property name=\"image\">image5</property><property name=\"use_underlin"
411- "e\">True</property></object></child></object><packing><property name=\""
412- "right_attach\">2</property><property name=\"top_attach\">2</property><p"
413- "roperty name=\"bottom_attach\">3</property></packing></child></object><"
414- "/child></object></child><child type=\"label\"><object class=\"GtkLabel\""
415- " id=\"label15\"><property name=\"visible\">True</property><property nam"
416- "e=\"can_focus\">False</property><property name=\"label\" translatable=\""
417- "yes\">Pointer Speed</property><attributes><attribute name=\"weight\" va"
418- "lue=\"bold\"/></attributes></object></child></object><packing><property"
419- " name=\"expand\">False</property><property name=\"fill\">True</property"
420- "><property name=\"position\">1</property></packing></child></object></c"
421- "hild><child type=\"tab\"><object class=\"GtkLabel\" id=\"label4\"><prop"
422- "erty name=\"visible\">True</property><property name=\"can_focus\">False"
423- "</property><property name=\"label\" translatable=\"yes\">B_uttons and F"
424- "eedback</property><property name=\"use_underline\">True</property></obj"
425- "ect><packing><property name=\"tab_fill\">False</property></packing></ch"
426- "ild><child><object class=\"GtkVBox\" id=\"synaptics-tab\"><property nam"
427- "e=\"visible\">True</property><property name=\"can_focus\">False</proper"
428- "ty><property name=\"border_width\">6</property><property name=\"spacing"
429- "\">6</property><child><object class=\"GtkFrame\" id=\"frame11\"><proper"
430+ "perty><property name=\"border_width\">6</property><property name=\"spac"
431+ "ing\">6</property><child><object class=\"GtkHBox\" id=\"hbox3\"><proper"
432 "ty name=\"visible\">True</property><property name=\"can_focus\">False</"
433- "property><property name=\"label_xalign\">0</property><property name=\"s"
434- "hadow_type\">none</property><child><object class=\"GtkAlignment\" id=\""
435- "alignment13\"><property name=\"visible\">True</property><property name="
436- "\"can_focus\">False</property><property name=\"left_padding\">12</prope"
437- "rty><child><object class=\"GtkVBox\" id=\"vbox11\"><property name=\"vis"
438- "ible\">True</property><property name=\"can_focus\">False</property><pro"
439- "perty name=\"border_width\">6</property><property name=\"spacing\">6</p"
440- "roperty><child><object class=\"GtkCheckButton\" id=\"synaptics-disable-"
441- "while-type\"><property name=\"label\" translatable=\"yes\">Disable to_u"
442- "chpad while typing</property><property name=\"visible\">True</property>"
443+ "property><property name=\"spacing\">12</property><child><object class=\""
444+ "GtkRadioButton\" id=\"device-right-handed\"><property name=\"label\" tr"
445+ "anslatable=\"yes\">Ri_ght-handed</property><property name=\"use_action_"
446+ "appearance\">False</property><property name=\"visible\">True</property>"
447 "<property name=\"can_focus\">True</property><property name=\"receives_d"
448- "efault\">False</property><property name=\"tooltip_text\" translatable=\""
449- "yes\">When selected, the touchpad will be disabled when the keyboard is"
450- " being used</property><property name=\"use_action_appearance\">False</p"
451- "roperty><property name=\"use_underline\">True</property><property name="
452- "\"draw_indicator\">True</property></object><packing><property name=\"ex"
453- "pand\">True</property><property name=\"fill\">True</property><property "
454- "name=\"position\">0</property></packing></child><child><object class=\""
455- "GtkCheckButton\" id=\"synaptics-tap-to-click\"><property name=\"label\""
456- " translatable=\"yes\">T_ap touchpad to click</property><property name=\""
457- "visible\">True</property><property name=\"can_focus\">True</property><p"
458- "roperty name=\"receives_default\">False</property><property name=\"use_"
459- "action_appearance\">False</property><property name=\"use_underline\">Tr"
460- "ue</property><property name=\"draw_indicator\">True</property></object>"
461- "<packing><property name=\"expand\">True</property><property name=\"fill"
462- "\">True</property><property name=\"position\">1</property></packing></c"
463- "hild></object></child></object></child><child type=\"label\"><object cl"
464- "ass=\"GtkLabel\" id=\"label16\"><property name=\"visible\">True</proper"
465- "ty><property name=\"can_focus\">False</property><property name=\"label\""
466- " translatable=\"yes\">General</property><property name=\"use_markup\">T"
467- "rue</property><attributes><attribute name=\"weight\" value=\"bold\"/></"
468- "attributes></object></child></object><packing><property name=\"expand\""
469- ">False</property><property name=\"fill\">True</property><property name="
470- "\"position\">0</property></packing></child><child><object class=\"GtkFr"
471- "ame\" id=\"frame10\"><property name=\"visible\">True</property><propert"
472- "y name=\"can_focus\">False</property><property name=\"label_xalign\">0<"
473- "/property><property name=\"shadow_type\">none</property><child><object "
474- "class=\"GtkAlignment\" id=\"alignment12\"><property name=\"visible\">Tr"
475- "ue</property><property name=\"can_focus\">False</property><property nam"
476- "e=\"left_padding\">12</property><child><object class=\"GtkVBox\" id=\"v"
477- "box10\"><property name=\"visible\">True</property><property name=\"can_"
478- "focus\">False</property><property name=\"border_width\">6</property><pr"
479- "operty name=\"spacing\">6</property><child><object class=\"GtkHBox\" id"
480- "=\"hbox4\"><property name=\"visible\">True</property><property name=\"c"
481- "an_focus\">False</property><property name=\"spacing\">12</property><chi"
482- "ld><object class=\"GtkRadioButton\" id=\"synaptics-scroll-no\"><propert"
483- "y name=\"label\" translatable=\"yes\">Di_sabled</property><property nam"
484- "e=\"visible\">True</property><property name=\"can_focus\">True</propert"
485- "y><property name=\"receives_default\">False</property><property name=\""
486- "use_action_appearance\">False</property><property name=\"use_underline\""
487- ">True</property><property name=\"active\">True</property><property name"
488- "=\"draw_indicator\">True</property></object><packing><property name=\"e"
489- "xpand\">False</property><property name=\"fill\">True</property><propert"
490+ "efault\">False</property><property name=\"use_underline\">True</propert"
491+ "y><property name=\"active\">True</property><property name=\"draw_indica"
492+ "tor\">True</property></object><packing><property name=\"expand\">False<"
493+ "/property><property name=\"fill\">True</property><property name=\"posit"
494+ "ion\">0</property></packing></child><child><object class=\"GtkRadioButt"
495+ "on\" id=\"device-left-handed\"><property name=\"label\" translatable=\""
496+ "yes\">Le_ft-handed</property><property name=\"use_action_appearance\">F"
497+ "alse</property><property name=\"visible\">True</property><property name"
498+ "=\"can_focus\">True</property><property name=\"receives_default\">False"
499+ "</property><property name=\"use_underline\">True</property><property na"
500+ "me=\"draw_indicator\">True</property><property name=\"group\">device-ri"
501+ "ght-handed</property></object><packing><property name=\"expand\">False<"
502+ "/property><property name=\"fill\">True</property><property name=\"posit"
503+ "ion\">1</property></packing></child></object><packing><property name=\""
504+ "expand\">True</property><property name=\"fill\">True</property><propert"
505 "y name=\"position\">0</property></packing></child><child><object class="
506- "\"GtkRadioButton\" id=\"synaptics-scroll-edge\"><property name=\"label\""
507- " translatable=\"yes\">Edge scro_lling</property><property name=\"visibl"
508+ "\"GtkCheckButton\" id=\"device-reverse-scrolling\"><property name=\"lab"
509+ "el\" translatable=\"yes\">Reverse scroll d_irection</property><property"
510+ " name=\"use_action_appearance\">False</property><property name=\"visibl"
511 "e\">True</property><property name=\"can_focus\">True</property><propert"
512- "y name=\"receives_default\">False</property><property name=\"use_action"
513- "_appearance\">False</property><property name=\"use_underline\">True</pr"
514- "operty><property name=\"draw_indicator\">True</property><property name="
515- "\"group\">synaptics-scroll-no</property></object><packing><property nam"
516- "e=\"expand\">False</property><property name=\"fill\">True</property><pr"
517- "operty name=\"position\">1</property></packing></child><child><object c"
518- "lass=\"GtkRadioButton\" id=\"synaptics-scroll-two\"><property name=\"la"
519- "bel\" translatable=\"yes\">Two-_finger scrolling</property><property na"
520- "me=\"visible\">True</property><property name=\"can_focus\">True</proper"
521- "ty><property name=\"receives_default\">False</property><property name=\""
522- "use_action_appearance\">False</property><property name=\"use_underline\""
523- ">True</property><property name=\"draw_indicator\">True</property><prope"
524- "rty name=\"group\">synaptics-scroll-no</property></object><packing><pro"
525- "perty name=\"expand\">True</property><property name=\"fill\">True</prop"
526- "erty><property name=\"position\">2</property></packing></child></object"
527- "><packing><property name=\"expand\">True</property><property name=\"fil"
528- "l\">True</property><property name=\"position\">0</property></packing></"
529- "child><child><object class=\"GtkCheckButton\" id=\"synaptics-scroll-hor"
530- "iz\"><property name=\"label\" translatable=\"yes\">Enable hori_zontal s"
531- "crolling</property><property name=\"visible\">True</property><property "
532- "name=\"can_focus\">True</property><property name=\"receives_default\">F"
533- "alse</property><property name=\"use_action_appearance\">False</property"
534- "><property name=\"use_underline\">True</property><property name=\"draw_"
535- "indicator\">True</property></object><packing><property name=\"expand\">"
536- "True</property><property name=\"fill\">True</property><property name=\""
537- "position\">1</property></packing></child></object></child></object></ch"
538- "ild><child type=\"label\"><object class=\"GtkLabel\" id=\"label17\"><pr"
539- "operty name=\"visible\">True</property><property name=\"can_focus\">Fal"
540- "se</property><property name=\"label\" translatable=\"yes\">Scrolling</p"
541- "roperty><property name=\"use_markup\">True</property><attributes><attri"
542- "bute name=\"weight\" value=\"bold\"/></attributes></object></child></ob"
543- "ject><packing><property name=\"expand\">False</property><property name="
544- "\"fill\">True</property><property name=\"position\">1</property></packi"
545- "ng></child></object><packing><property name=\"position\">1</property></"
546- "packing></child><child type=\"tab\"><object class=\"GtkLabel\" id=\"syn"
547- "aptics-label\"><property name=\"visible\">True</property><property name"
548- "=\"can_focus\">False</property><property name=\"label\" translatable=\""
549- "yes\">T_ouchpad</property><property name=\"use_underline\">True</proper"
550- "ty></object><packing><property name=\"position\">1</property><property "
551- "name=\"tab_fill\">False</property></packing></child><child><object clas"
552- "s=\"GtkVBox\" id=\"wacom-tab\"><property name=\"visible\">True</propert"
553+ "y name=\"receives_default\">False</property><property name=\"tooltip_te"
554+ "xt\" translatable=\"yes\">When selected, the scroll wheel will work in "
555+ "the opposite direction</property><property name=\"use_underline\">True<"
556+ "/property><property name=\"draw_indicator\">True</property></object><pa"
557+ "cking><property name=\"expand\">True</property><property name=\"fill\">"
558+ "True</property><property name=\"position\">1</property></packing></chil"
559+ "d></object></child></object></child><child type=\"label\"><object class"
560+ "=\"GtkLabel\" id=\"label14\"><property name=\"visible\">True</property>"
561+ "<property name=\"can_focus\">False</property><property name=\"label\" t"
562+ "ranslatable=\"yes\">Buttons</property><attributes><attribute name=\"wei"
563+ "ght\" value=\"bold\"/></attributes></object></child></object><packing><"
564+ "property name=\"expand\">False</property><property name=\"fill\">True</"
565+ "property><property name=\"position\">0</property></packing></child><chi"
566+ "ld><object class=\"GtkFrame\" id=\"frame2\"><property name=\"visible\">"
567+ "True</property><property name=\"can_focus\">False</property><property n"
568+ "ame=\"label_xalign\">0</property><property name=\"shadow_type\">none</p"
569+ "roperty><child><object class=\"GtkAlignment\" id=\"alignment2\"><proper"
570+ "ty name=\"visible\">True</property><property name=\"can_focus\">False</"
571+ "property><property name=\"left_padding\">12</property><child><object cl"
572+ "ass=\"GtkTable\" id=\"table1\"><property name=\"visible\">True</propert"
573 "y><property name=\"can_focus\">False</property><property name=\"border_"
574- "width\">6</property><property name=\"spacing\">6</property><child><obje"
575- "ct class=\"GtkFrame\" id=\"frame12\"><property name=\"visible\">True</p"
576- "roperty><property name=\"can_focus\">False</property><property name=\"l"
577- "abel_xalign\">0</property><property name=\"shadow_type\">none</property"
578- "><child><object class=\"GtkAlignment\" id=\"alignment14\"><property nam"
579- "e=\"visible\">True</property><property name=\"can_focus\">False</proper"
580- "ty><property name=\"left_padding\">12</property><child><object class=\""
581- "GtkTable\" id=\"table2\"><property name=\"visible\">True</property><pro"
582- "perty name=\"can_focus\">False</property><property name=\"border_width\""
583- ">6</property><property name=\"n_rows\">2</property><property name=\"n_c"
584- "olumns\">2</property><property name=\"column_spacing\">12</property><pr"
585- "operty name=\"row_spacing\">6</property><child><object class=\"GtkLabel"
586- "\" id=\"label9\"><property name=\"visible\">True</property><property na"
587- "me=\"can_focus\">False</property><property name=\"xalign\">0</property>"
588- "<property name=\"label\" translatable=\"yes\">Tr_acking mode:</property"
589- "><property name=\"use_underline\">True</property><property name=\"mnemo"
590- "nic_widget\">wacom-mode</property></object><packing><property name=\"x_"
591- "options\">GTK_FILL</property></packing></child><child><object class=\"G"
592- "tkLabel\" id=\"label10\"><property name=\"visible\">True</property><pro"
593- "perty name=\"can_focus\">False</property><property name=\"xalign\">0</p"
594- "roperty><property name=\"label\" translatable=\"yes\">_Rotation:</prope"
595- "rty><property name=\"use_underline\">True</property><property name=\"mn"
596- "emonic_widget\">wacom-rotation</property></object><packing><property na"
597- "me=\"top_attach\">1</property><property name=\"bottom_attach\">2</prope"
598- "rty><property name=\"x_options\">GTK_FILL</property></packing></child><"
599- "child><object class=\"GtkComboBox\" id=\"wacom-mode\"><property name=\""
600- "visible\">True</property><property name=\"can_focus\">False</property><"
601- "property name=\"model\">wacom-mode-store</property><child><object class"
602- "=\"GtkCellRendererText\" id=\"cellrenderertext1\"/><attributes><attribu"
603- "te name=\"text\">1</attribute></attributes></child></object><packing><p"
604- "roperty name=\"left_attach\">1</property><property name=\"right_attach\""
605- ">2</property></packing></child><child><object class=\"GtkComboBox\" id="
606- "\"wacom-rotation\"><property name=\"visible\">True</property><property "
607- "name=\"can_focus\">False</property><property name=\"model\">wacom-rotat"
608- "ion-store</property><child><object class=\"GtkCellRendererText\" id=\"c"
609- "ellrenderertext2\"/><attributes><attribute name=\"text\">1</attribute><"
610- "/attributes></child></object><packing><property name=\"left_attach\">1<"
611- "/property><property name=\"right_attach\">2</property><property name=\""
612- "top_attach\">1</property><property name=\"bottom_attach\">2</property><"
613- "/packing></child></object></child></object></child><child type=\"label\""
614- "><object class=\"GtkLabel\" id=\"label18\"><property name=\"visible\">T"
615+ "width\">6</property><property name=\"n_rows\">4</property><property nam"
616+ "e=\"n_columns\">2</property><property name=\"column_spacing\">12</prope"
617+ "rty><property name=\"row_spacing\">6</property><child><object class=\"G"
618+ "tkLabel\" id=\"device-acceleration-label\"><property name=\"visible\">T"
619 "rue</property><property name=\"can_focus\">False</property><property na"
620- "me=\"label\" translatable=\"yes\">General</property><property name=\"us"
621- "e_markup\">True</property><attributes><attribute name=\"weight\" value="
622- "\"bold\"/></attributes></object></child></object><packing><property nam"
623- "e=\"expand\">False</property><property name=\"fill\">True</property><pr"
624- "operty name=\"position\">0</property></packing></child></object><packin"
625- "g><property name=\"position\">2</property></packing></child><child type"
626- "=\"tab\"><object class=\"GtkLabel\" id=\"wacom-label\"><property name=\""
627- "visible\">True</property><property name=\"can_focus\">False</property><"
628- "property name=\"label\" translatable=\"yes\">Table_t</property><propert"
629- "y name=\"use_underline\">True</property></object><packing><property nam"
630- "e=\"position\">2</property><property name=\"tab_fill\">False</property>"
631- "</packing></child></object><packing><property name=\"expand\">True</pro"
632- "perty><property name=\"fill\">True</property><property name=\"position\""
633- ">2</property></packing></child></object></child><child type=\"tab\"><ob"
634- "ject class=\"GtkLabel\" id=\"label1\"><property name=\"visible\">True</"
635- "property><property name=\"can_focus\">False</property><property name=\""
636- "label\" translatable=\"yes\">_Devices</property><property name=\"use_un"
637- "derline\">True</property></object><packing><property name=\"tab_fill\">"
638- "False</property></packing></child><child><object class=\"GtkVBox\" id=\""
639- "vbox3\"><property name=\"visible\">True</property><property name=\"can_"
640- "focus\">False</property><property name=\"border_width\">12</property><p"
641- "roperty name=\"spacing\">6</property><child><object class=\"GtkFrame\" "
642- "id=\"frame3\"><property name=\"visible\">True</property><property name="
643- "\"can_focus\">False</property><property name=\"label_xalign\">0</proper"
644- "ty><property name=\"shadow_type\">none</property><child><object class=\""
645- "GtkAlignment\" id=\"alignment3\"><property name=\"visible\">True</prope"
646- "rty><property name=\"can_focus\">False</property><property name=\"left_"
647- "padding\">12</property><child><object class=\"GtkVBox\" id=\"vbox4\"><p"
648- "roperty name=\"visible\">True</property><property name=\"can_focus\">Fa"
649- "lse</property><property name=\"border_width\">6</property><property nam"
650- "e=\"spacing\">6</property><child><object class=\"GtkLabel\" id=\"mouse-"
651- "dnd-label\"><property name=\"visible\">True</property><property name=\""
652- "can_focus\">False</property><property name=\"xalign\">0</property><prop"
653- "erty name=\"label\" translatable=\"yes\">Th_reshold:</property><propert"
654- "y name=\"use_underline\">True</property><property name=\"mnemonic_widge"
655- "t\">dnd-threshold-scale</property></object><packing><property name=\"ex"
656- "pand\">True</property><property name=\"fill\">True</property><property "
657- "name=\"position\">0</property></packing></child><child><object class=\""
658- "GtkHScale\" id=\"dnd-threshold-scale\"><property name=\"visible\">True<"
659- "/property><property name=\"can_focus\">True</property><property name=\""
660- "tooltip_text\" translatable=\"yes\">The number of pixels the pointer mu"
661- "st move before a drag operation will start</property><property name=\"u"
662- "pdate_policy\">delayed</property><property name=\"adjustment\">dnd-thre"
663- "shold</property><property name=\"digits\">0</property><property name=\""
664- "value_pos\">right</property></object><packing><property name=\"expand\""
665- ">True</property><property name=\"fill\">True</property><property name=\""
666- "position\">1</property></packing></child></object></child></object></ch"
667- "ild><child type=\"label\"><object class=\"GtkLabel\" id=\"label6\"><pro"
668- "perty name=\"visible\">True</property><property name=\"can_focus\">Fals"
669- "e</property><property name=\"label\" translatable=\"yes\">Drag and Drop"
670- "</property><attributes><attribute name=\"weight\" value=\"bold\"/></att"
671- "ributes></object></child></object><packing><property name=\"expand\">Fa"
672- "lse</property><property name=\"fill\">True</property><property name=\"p"
673- "osition\">0</property></packing></child><child><object class=\"GtkFrame"
674- "\" id=\"frame4\"><property name=\"visible\">True</property><property na"
675- "me=\"can_focus\">False</property><property name=\"label_xalign\">0</pro"
676- "perty><property name=\"shadow_type\">none</property><child><object clas"
677- "s=\"GtkAlignment\" id=\"alignment4\"><property name=\"visible\">True</p"
678- "roperty><property name=\"can_focus\">False</property><property name=\"l"
679- "eft_padding\">12</property><child><object class=\"GtkVBox\" id=\"vbox5\""
680+ "me=\"xalign\">0</property><property name=\"label\" translatable=\"yes\""
681+ ">Acceleratio_n:</property><property name=\"use_underline\">True</proper"
682+ "ty><property name=\"mnemonic_widget\">device-acceleration-scale</proper"
683+ "ty></object><packing><property name=\"x_options\">GTK_FILL</property><p"
684+ "roperty name=\"y_options\">GTK_FILL</property></packing></child><child>"
685+ "<object class=\"GtkHScale\" id=\"device-acceleration-scale\"><property "
686+ "name=\"visible\">True</property><property name=\"can_focus\">True</prop"
687+ "erty><property name=\"tooltip_text\" translatable=\"yes\">The factor at"
688+ " which the pointer\'s speed will increase as the mouse is moved</proper"
689+ "ty><property name=\"update_policy\">delayed</property><property name=\""
690+ "adjustment\">device-acceleration</property><property name=\"round_digit"
691+ "s\">1</property><property name=\"value_pos\">right</property></object><"
692+ "packing><property name=\"left_attach\">1</property><property name=\"rig"
693+ "ht_attach\">2</property></packing></child><child><object class=\"GtkHSc"
694+ "ale\" id=\"device-threshold-scale\"><property name=\"visible\">True</pr"
695+ "operty><property name=\"can_focus\">True</property><property name=\"too"
696+ "ltip_text\" translatable=\"yes\">The number of pixels the pointer must "
697+ "move in a short time before it starts accelerating</property><property "
698+ "name=\"update_policy\">delayed</property><property name=\"adjustment\">"
699+ "device-threshold</property><property name=\"round_digits\">0</property>"
700+ "<property name=\"digits\">0</property><property name=\"value_pos\">righ"
701+ "t</property></object><packing><property name=\"left_attach\">1</propert"
702+ "y><property name=\"right_attach\">2</property><property name=\"top_atta"
703+ "ch\">1</property><property name=\"bottom_attach\">2</property></packing"
704+ "></child><child><object class=\"GtkLabel\" id=\"device-threshold-label\""
705 "><property name=\"visible\">True</property><property name=\"can_focus\""
706- ">False</property><property name=\"border_width\">6</property><property "
707- "name=\"spacing\">6</property><child><object class=\"GtkLabel\" id=\"dcl"
708- "ick-time-label\"><property name=\"visible\">True</property><property na"
709- "me=\"can_focus\">False</property><property name=\"xalign\">0</property>"
710- "<property name=\"label\" translatable=\"yes\">Ti_me:</property><propert"
711- "y name=\"use_underline\">True</property><property name=\"mnemonic_widge"
712- "t\">dclick-time-scale</property></object><packing><property name=\"expa"
713- "nd\">True</property><property name=\"fill\">True</property><property na"
714- "me=\"position\">0</property></packing></child><child><object class=\"Gt"
715- "kHScale\" id=\"dclick-time-scale\"><property name=\"visible\">True</pro"
716- "perty><property name=\"can_focus\">True</property><property name=\"tool"
717- "tip_text\" translatable=\"yes\">Two mouse clicks in less than this leng"
718- "th of time (in milliseconds) will be considered a double click</propert"
719- "y><property name=\"update_policy\">delayed</property><property name=\"a"
720- "djustment\">dclick-time</property><property name=\"digits\">0</property"
721- "><property name=\"value_pos\">right</property></object><packing><proper"
722- "ty name=\"expand\">True</property><property name=\"fill\">True</propert"
723- "y><property name=\"position\">1</property></packing></child><child><obj"
724- "ect class=\"GtkLabel\" id=\"dclick-distance-label\"><property name=\"vi"
725- "sible\">True</property><property name=\"can_focus\">False</property><pr"
726- "operty name=\"xalign\">0</property><property name=\"label\" translatabl"
727- "e=\"yes\">D_istance:</property><property name=\"use_underline\">True</p"
728- "roperty><property name=\"mnemonic_widget\">dclick-distance-scale</prope"
729- "rty></object><packing><property name=\"expand\">True</property><propert"
730- "y name=\"fill\">True</property><property name=\"position\">2</property>"
731- "</packing></child><child><object class=\"GtkHScale\" id=\"dclick-distan"
732- "ce-scale\"><property name=\"visible\">True</property><property name=\"c"
733- "an_focus\">True</property><property name=\"tooltip_text\" translatable="
734- "\"yes\">The mouse pointer cannot move farther than this distance betwee"
735- "n two clicks for them to be considered a double click</property><proper"
736- "ty name=\"update_policy\">delayed</property><property name=\"adjustment"
737- "\">dclick-distance</property><property name=\"digits\">0</property><pro"
738- "perty name=\"value_pos\">right</property></object><packing><property na"
739- "me=\"expand\">True</property><property name=\"fill\">True</property><pr"
740- "operty name=\"position\">3</property></packing></child></object></child"
741- "></object></child><child type=\"label\"><object class=\"GtkLabel\" id=\""
742- "label8\"><property name=\"visible\">True</property><property name=\"can"
743- "_focus\">False</property><property name=\"label\" translatable=\"yes\">"
744- "Double Click</property><attributes><attribute name=\"weight\" value=\"b"
745- "old\"/></attributes></object></child></object><packing><property name=\""
746- "expand\">False</property><property name=\"fill\">True</property><proper"
747- "ty name=\"position\">1</property></packing></child></object><packing><p"
748- "roperty name=\"position\">1</property></packing></child><child type=\"t"
749- "ab\"><object class=\"GtkLabel\" id=\"label2\"><property name=\"visible\""
750- ">True</property><property name=\"can_focus\">False</property><property "
751- "name=\"label\" translatable=\"yes\">_Behavior</property><property name="
752- "\"use_underline\">True</property></object><packing><property name=\"pos"
753- "ition\">1</property><property name=\"tab_fill\">False</property></packi"
754- "ng></child><child><object class=\"GtkHBox\" id=\"themes-hbox\"><propert"
755- "y name=\"visible\">True</property><property name=\"can_focus\">False</p"
756- "roperty><property name=\"border_width\">12</property><property name=\"s"
757- "pacing\">12</property><child><object class=\"GtkScrolledWindow\" id=\"s"
758- "crolledwindow2\"><property name=\"visible\">True</property><property na"
759- "me=\"can_focus\">True</property><property name=\"hscrollbar_policy\">au"
760- "tomatic</property><property name=\"vscrollbar_policy\">automatic</prope"
761- "rty><property name=\"shadow_type\">etched-in</property><child><object c"
762- "lass=\"GtkTreeView\" id=\"theme-treeview\"><property name=\"width_reque"
763- "st\">200</property><property name=\"visible\">True</property><property "
764- "name=\"can_focus\">True</property><property name=\"headers_visible\">Fa"
765- "lse</property></object></child></object><packing><property name=\"expan"
766- "d\">True</property><property name=\"fill\">True</property><property nam"
767- "e=\"position\">0</property></packing></child><child><object class=\"Gtk"
768- "VBox\" id=\"vbox9\"><property name=\"visible\">True</property><property"
769- " name=\"can_focus\">False</property><property name=\"spacing\">6</prope"
770- "rty><child><object class=\"GtkFrame\" id=\"frame5\"><property name=\"vi"
771- "sible\">True</property><property name=\"can_focus\">False</property><pr"
772- "operty name=\"label_xalign\">0</property><property name=\"shadow_type\""
773- ">none</property><child><object class=\"GtkAlignment\" id=\"alignment5\""
774+ ">False</property><property name=\"xalign\">0</property><property name=\""
775+ "label\" translatable=\"yes\">Sensitivit_y:</property><property name=\"u"
776+ "se_underline\">True</property><property name=\"mnemonic_widget\">device"
777+ "-threshold-scale</property></object><packing><property name=\"top_attac"
778+ "h\">1</property><property name=\"bottom_attach\">2</property><property "
779+ "name=\"x_options\">GTK_FILL</property></packing></child><child><object "
780+ "class=\"GtkAlignment\" id=\"alignment7\"><property name=\"visible\">Tru"
781+ "e</property><property name=\"can_focus\">False</property><property name"
782+ "=\"xalign\">0</property><property name=\"xscale\">0</property><property"
783+ " name=\"yscale\">0</property><child><object class=\"GtkButton\" id=\"de"
784+ "vice-reset-feedback\"><property name=\"label\" translatable=\"yes\">_Re"
785+ "set to Defaults</property><property name=\"use_action_appearance\">Fals"
786+ "e</property><property name=\"visible\">True</property><property name=\""
787+ "can_focus\">True</property><property name=\"receives_default\">True</pr"
788+ "operty><property name=\"tooltip_text\" translatable=\"yes\">Set the acc"
789+ "eleration and sensitivity for the selected device to the default values"
790+ "</property><property name=\"image\">image5</property><property name=\"u"
791+ "se_underline\">True</property></object></child></object><packing><prope"
792+ "rty name=\"right_attach\">2</property><property name=\"top_attach\">2</"
793+ "property><property name=\"bottom_attach\">3</property></packing></child"
794+ "><child><object class=\"GtkAlignment\" id=\"alignment8\"><property name"
795+ "=\"visible\">True</property><property name=\"can_focus\">False</propert"
796+ "y><property name=\"xalign\">0</property><property name=\"xscale\">0</pr"
797+ "operty><property name=\"yscale\">0</property><child><object class=\"Gtk"
798+ "CheckButton\" id=\"touchscreen-pointer\"><property name=\"label\" trans"
799+ "latable=\"yes\">_Touchscreen pointer</property><property name=\"use_act"
800+ "ion_appearance\">False</property><property name=\"visible\">True</prope"
801+ "rty><property name=\"can_focus\">True</property><property name=\"receiv"
802+ "es_default\">False</property><property name=\"tooltip_text\" translatab"
803+ "le=\"yes\">When selected, no mouse pointer is displayed for this device"
804+ " and gtk TouchscreenMode is activated</property><property name=\"use_un"
805+ "derline\">True</property><property name=\"draw_indicator\">True</proper"
806+ "ty></object></child></object><packing><property name=\"right_attach\">2"
807+ "</property><property name=\"top_attach\">3</property><property name=\"b"
808+ "ottom_attach\">4</property></packing></child></object></child></object>"
809+ "</child><child type=\"label\"><object class=\"GtkLabel\" id=\"label15\""
810 "><property name=\"visible\">True</property><property name=\"can_focus\""
811- ">False</property><property name=\"left_padding\">12</property><child><o"
812- "bject class=\"GtkHBox\" id=\"hbox7\"><property name=\"visible\">True</p"
813+ ">False</property><property name=\"label\" translatable=\"yes\">Pointer "
814+ "Speed</property><attributes><attribute name=\"weight\" value=\"bold\"/>"
815+ "</attributes></object></child></object><packing><property name=\"expand"
816+ "\">False</property><property name=\"fill\">True</property><property nam"
817+ "e=\"position\">1</property></packing></child></object></child><child ty"
818+ "pe=\"tab\"><object class=\"GtkLabel\" id=\"label4\"><property name=\"vi"
819+ "sible\">True</property><property name=\"can_focus\">False</property><pr"
820+ "operty name=\"label\" translatable=\"yes\">B_uttons and Feedback</prope"
821+ "rty><property name=\"use_underline\">True</property></object><packing><"
822+ "property name=\"tab_fill\">False</property></packing></child><child><ob"
823+ "ject class=\"GtkVBox\" id=\"synaptics-tab\"><property name=\"visible\">"
824+ "True</property><property name=\"can_focus\">False</property><property n"
825+ "ame=\"border_width\">6</property><property name=\"spacing\">6</property"
826+ "><child><object class=\"GtkFrame\" id=\"frame11\"><property name=\"visi"
827+ "ble\">True</property><property name=\"can_focus\">False</property><prop"
828+ "erty name=\"label_xalign\">0</property><property name=\"shadow_type\">n"
829+ "one</property><child><object class=\"GtkAlignment\" id=\"alignment13\">"
830+ "<property name=\"visible\">True</property><property name=\"can_focus\">"
831+ "False</property><property name=\"left_padding\">12</property><child><ob"
832+ "ject class=\"GtkVBox\" id=\"vbox11\"><property name=\"visible\">True</p"
833 "roperty><property name=\"can_focus\">False</property><property name=\"b"
834- "order_width\">6</property><property name=\"spacing\">12</property><chil"
835- "d><object class=\"GtkLabel\" id=\"label21\"><property name=\"visible\">"
836+ "order_width\">6</property><property name=\"spacing\">6</property><child"
837+ "><object class=\"GtkCheckButton\" id=\"synaptics-disable-while-type\"><"
838+ "property name=\"label\" translatable=\"yes\">Disable touchpad _while ty"
839+ "ping</property><property name=\"use_action_appearance\">False</property"
840+ "><property name=\"visible\">True</property><property name=\"can_focus\""
841+ ">True</property><property name=\"receives_default\">False</property><pr"
842+ "operty name=\"tooltip_text\" translatable=\"yes\">When selected, the to"
843+ "uchpad will be disabled when the keyboard is being used</property><prop"
844+ "erty name=\"use_underline\">True</property><property name=\"draw_indica"
845+ "tor\">True</property></object><packing><property name=\"expand\">True</"
846+ "property><property name=\"fill\">True</property><property name=\"positi"
847+ "on\">0</property></packing></child><child><object class=\"GtkCheckButto"
848+ "n\" id=\"synaptics-tap-to-click\"><property name=\"label\" translatable"
849+ "=\"yes\">Tap touchpad to clic_k</property><property name=\"use_action_a"
850+ "ppearance\">False</property><property name=\"visible\">True</property><"
851+ "property name=\"can_focus\">True</property><property name=\"receives_de"
852+ "fault\">False</property><property name=\"use_underline\">True</property"
853+ "><property name=\"draw_indicator\">True</property></object><packing><pr"
854+ "operty name=\"expand\">True</property><property name=\"fill\">True</pro"
855+ "perty><property name=\"position\">1</property></packing></child></objec"
856+ "t></child></object></child><child type=\"label\"><object class=\"GtkLab"
857+ "el\" id=\"label16\"><property name=\"visible\">True</property><property"
858+ " name=\"can_focus\">False</property><property name=\"label\" translatab"
859+ "le=\"yes\">General</property><property name=\"use_markup\">True</proper"
860+ "ty><attributes><attribute name=\"weight\" value=\"bold\"/></attributes>"
861+ "</object></child></object><packing><property name=\"expand\">False</pro"
862+ "perty><property name=\"fill\">True</property><property name=\"position\""
863+ ">0</property></packing></child><child><object class=\"GtkFrame\" id=\"f"
864+ "rame10\"><property name=\"visible\">True</property><property name=\"can"
865+ "_focus\">False</property><property name=\"label_xalign\">0</property><p"
866+ "roperty name=\"shadow_type\">none</property><child><object class=\"GtkA"
867+ "lignment\" id=\"alignment12\"><property name=\"visible\">True</property"
868+ "><property name=\"can_focus\">False</property><property name=\"left_pad"
869+ "ding\">12</property><child><object class=\"GtkVBox\" id=\"vbox10\"><pro"
870+ "perty name=\"visible\">True</property><property name=\"can_focus\">Fals"
871+ "e</property><property name=\"border_width\">6</property><property name="
872+ "\"spacing\">6</property><child><object class=\"GtkHBox\" id=\"hbox4\"><"
873+ "property name=\"visible\">True</property><property name=\"can_focus\">F"
874+ "alse</property><property name=\"spacing\">12</property><child><object c"
875+ "lass=\"GtkLabel\" id=\"label23\"><property name=\"visible\">True</prope"
876+ "rty><property name=\"can_focus\">False</property><property name=\"xalig"
877+ "n\">0</property><property name=\"label\" translatable=\"yes\">Scrolling"
878+ " _mode:</property><property name=\"use_underline\">True</property><prop"
879+ "erty name=\"mnemonic_widget\">synaptics-scroll</property></object><pack"
880+ "ing><property name=\"expand\">False</property><property name=\"fill\">T"
881+ "rue</property><property name=\"position\">0</property></packing></child"
882+ "><child><object class=\"GtkComboBox\" id=\"synaptics-scroll\"><property"
883+ " name=\"visible\">True</property><property name=\"can_focus\">False</pr"
884+ "operty><property name=\"model\">synaptics-scroll-store</property><child"
885+ "><object class=\"GtkCellRendererText\" id=\"cellrenderertext3\"/><attri"
886+ "butes><attribute name=\"sensitive\">1</attribute><attribute name=\"text"
887+ "\">0</attribute></attributes></child></object><packing><property name=\""
888+ "expand\">True</property><property name=\"fill\">True</property><propert"
889+ "y name=\"position\">1</property></packing></child></object><packing><pr"
890+ "operty name=\"expand\">True</property><property name=\"fill\">True</pro"
891+ "perty><property name=\"position\">0</property></packing></child><child>"
892+ "<object class=\"GtkCheckButton\" id=\"synaptics-scroll-horiz\"><propert"
893+ "y name=\"label\" translatable=\"yes\">Enable hori_zontal scrolling</pro"
894+ "perty><property name=\"use_action_appearance\">False</property><propert"
895+ "y name=\"visible\">True</property><property name=\"can_focus\">True</pr"
896+ "operty><property name=\"receives_default\">False</property><property na"
897+ "me=\"use_underline\">True</property><property name=\"draw_indicator\">T"
898+ "rue</property></object><packing><property name=\"expand\">True</propert"
899+ "y><property name=\"fill\">True</property><property name=\"position\">1<"
900+ "/property></packing></child></object></child></object></child><child ty"
901+ "pe=\"label\"><object class=\"GtkLabel\" id=\"label17\"><property name=\""
902+ "visible\">True</property><property name=\"can_focus\">False</property><"
903+ "property name=\"label\" translatable=\"yes\">Scrolling</property><prope"
904+ "rty name=\"use_markup\">True</property><attributes><attribute name=\"we"
905+ "ight\" value=\"bold\"/></attributes></object></child></object><packing>"
906+ "<property name=\"expand\">False</property><property name=\"fill\">True<"
907+ "/property><property name=\"position\">1</property></packing></child></o"
908+ "bject><packing><property name=\"position\">1</property></packing></chil"
909+ "d><child type=\"tab\"><object class=\"GtkLabel\" id=\"synaptics-label\""
910+ "><property name=\"visible\">True</property><property name=\"can_focus\""
911+ ">False</property><property name=\"label\" translatable=\"yes\">T_ouchpa"
912+ "d</property><property name=\"use_underline\">True</property></object><p"
913+ "acking><property name=\"position\">1</property><property name=\"tab_fil"
914+ "l\">False</property></packing></child><child><object class=\"GtkVBox\" "
915+ "id=\"wacom-tab\"><property name=\"visible\">True</property><property na"
916+ "me=\"can_focus\">False</property><property name=\"border_width\">6</pro"
917+ "perty><property name=\"spacing\">6</property><child><object class=\"Gtk"
918+ "Frame\" id=\"frame12\"><property name=\"visible\">True</property><prope"
919+ "rty name=\"can_focus\">False</property><property name=\"label_xalign\">"
920+ "0</property><property name=\"shadow_type\">none</property><child><objec"
921+ "t class=\"GtkAlignment\" id=\"alignment14\"><property name=\"visible\">"
922 "True</property><property name=\"can_focus\">False</property><property n"
923- "ame=\"label\" translatable=\"yes\">Cursor _size:</property><property na"
924- "me=\"use_underline\">True</property><property name=\"mnemonic_widget\">"
925- "spin1</property></object><packing><property name=\"expand\">False</prop"
926- "erty><property name=\"fill\">True</property><property name=\"position\""
927- ">0</property></packing></child><child><object class=\"GtkSpinButton\" i"
928- "d=\"spin1\"><property name=\"visible\">True</property><property name=\""
929- "can_focus\">True</property><property name=\"primary_icon_activatable\">"
930- "False</property><property name=\"secondary_icon_activatable\">False</pr"
931- "operty><property name=\"primary_icon_sensitive\">True</property><proper"
932- "ty name=\"secondary_icon_sensitive\">True</property><property name=\"ad"
933- "justment\">theme-cursor-size</property><property name=\"snap_to_ticks\""
934- ">True</property><property name=\"numeric\">True</property></object><pac"
935- "king><property name=\"expand\">False</property><property name=\"fill\">"
936- "True</property><property name=\"position\">1</property></packing></chil"
937+ "ame=\"left_padding\">12</property><child><object class=\"GtkTable\" id="
938+ "\"table2\"><property name=\"visible\">True</property><property name=\"c"
939+ "an_focus\">False</property><property name=\"border_width\">6</property>"
940+ "<property name=\"n_rows\">2</property><property name=\"n_columns\">2</p"
941+ "roperty><property name=\"column_spacing\">12</property><property name=\""
942+ "row_spacing\">6</property><child><object class=\"GtkLabel\" id=\"label9"
943+ "\"><property name=\"visible\">True</property><property name=\"can_focus"
944+ "\">False</property><property name=\"xalign\">0</property><property name"
945+ "=\"label\" translatable=\"yes\">Trac_king mode:</property><property nam"
946+ "e=\"use_underline\">True</property><property name=\"mnemonic_widget\">w"
947+ "acom-mode</property></object><packing><property name=\"x_options\">GTK_"
948+ "FILL</property></packing></child><child><object class=\"GtkLabel\" id=\""
949+ "label10\"><property name=\"visible\">True</property><property name=\"ca"
950+ "n_focus\">False</property><property name=\"xalign\">0</property><proper"
951+ "ty name=\"label\" translatable=\"yes\">_Rotation:</property><property n"
952+ "ame=\"use_underline\">True</property><property name=\"mnemonic_widget\""
953+ ">wacom-rotation</property></object><packing><property name=\"top_attach"
954+ "\">1</property><property name=\"bottom_attach\">2</property><property n"
955+ "ame=\"x_options\">GTK_FILL</property></packing></child><child><object c"
956+ "lass=\"GtkComboBox\" id=\"wacom-mode\"><property name=\"visible\">True<"
957+ "/property><property name=\"can_focus\">False</property><property name=\""
958+ "model\">wacom-mode-store</property><child><object class=\"GtkCellRender"
959+ "erText\" id=\"cellrenderertext1\"/><attributes><attribute name=\"text\""
960+ ">1</attribute></attributes></child></object><packing><property name=\"l"
961+ "eft_attach\">1</property><property name=\"right_attach\">2</property></"
962+ "packing></child><child><object class=\"GtkComboBox\" id=\"wacom-rotatio"
963+ "n\"><property name=\"visible\">True</property><property name=\"can_focu"
964+ "s\">False</property><property name=\"model\">wacom-rotation-store</prop"
965+ "erty><child><object class=\"GtkCellRendererText\" id=\"cellrenderertext"
966+ "2\"/><attributes><attribute name=\"text\">1</attribute></attributes></c"
967+ "hild></object><packing><property name=\"left_attach\">1</property><prop"
968+ "erty name=\"right_attach\">2</property><property name=\"top_attach\">1<"
969+ "/property><property name=\"bottom_attach\">2</property></packing></chil"
970 "d></object></child></object></child><child type=\"label\"><object class"
971- "=\"GtkLabel\" id=\"label20\"><property name=\"visible\">True</property>"
972+ "=\"GtkLabel\" id=\"label18\"><property name=\"visible\">True</property>"
973 "<property name=\"can_focus\">False</property><property name=\"label\" t"
974- "ranslatable=\"yes\">Size</property><attributes><attribute name=\"weight"
975- "\" value=\"bold\"/></attributes></object></child></object><packing><pro"
976- "perty name=\"expand\">False</property><property name=\"fill\">True</pro"
977- "perty><property name=\"position\">0</property></packing></child><child>"
978- "<object class=\"GtkFrame\" id=\"frame6\"><property name=\"visible\">Tru"
979+ "ranslatable=\"yes\">General</property><property name=\"use_markup\">Tru"
980+ "e</property><attributes><attribute name=\"weight\" value=\"bold\"/></at"
981+ "tributes></object></child></object><packing><property name=\"expand\">F"
982+ "alse</property><property name=\"fill\">True</property><property name=\""
983+ "position\">0</property></packing></child></object><packing><property na"
984+ "me=\"position\">2</property></packing></child><child type=\"tab\"><obje"
985+ "ct class=\"GtkLabel\" id=\"wacom-label\"><property name=\"visible\">Tru"
986 "e</property><property name=\"can_focus\">False</property><property name"
987- "=\"label_xalign\">0</property><property name=\"shadow_type\">none</prop"
988- "erty><child><object class=\"GtkAlignment\" id=\"alignment6\"><property "
989- "name=\"visible\">True</property><property name=\"can_focus\">False</pro"
990- "perty><property name=\"border_width\">6</property><property name=\"xali"
991- "gn\">0</property><property name=\"yalign\">0</property><property name=\""
992- "xscale\">0</property><property name=\"yscale\">0</property><property na"
993- "me=\"top_padding\">6</property><property name=\"bottom_padding\">6</pro"
994- "perty><property name=\"left_padding\">18</property><property name=\"rig"
995- "ht_padding\">6</property><child><object class=\"GtkImage\" id=\"theme-p"
996- "review\"><property name=\"visible\">True</property><property name=\"can"
997- "_focus\">False</property><property name=\"stock\">gtk-missing-image</pr"
998- "operty></object></child></object></child><child type=\"label\"><object "
999- "class=\"GtkLabel\" id=\"label22\"><property name=\"visible\">True</prop"
1000+ "=\"label\" translatable=\"yes\">Tab_let</property><property name=\"use_"
1001+ "underline\">True</property></object><packing><property name=\"position\""
1002+ ">2</property><property name=\"tab_fill\">False</property></packing></ch"
1003+ "ild></object><packing><property name=\"expand\">True</property><propert"
1004+ "y name=\"fill\">True</property><property name=\"position\">2</property>"
1005+ "</packing></child></object></child><child type=\"tab\"><object class=\""
1006+ "GtkLabel\" id=\"label1\"><property name=\"visible\">True</property><pro"
1007+ "perty name=\"can_focus\">False</property><property name=\"label\" trans"
1008+ "latable=\"yes\">_Devices</property><property name=\"use_underline\">Tru"
1009+ "e</property></object><packing><property name=\"tab_fill\">False</proper"
1010+ "ty></packing></child><child><object class=\"GtkVBox\" id=\"vbox3\"><pro"
1011+ "perty name=\"visible\">True</property><property name=\"can_focus\">Fals"
1012+ "e</property><property name=\"border_width\">12</property><property name"
1013+ "=\"spacing\">6</property><child><object class=\"GtkFrame\" id=\"frame3\""
1014+ "><property name=\"visible\">True</property><property name=\"can_focus\""
1015+ ">False</property><property name=\"label_xalign\">0</property><property "
1016+ "name=\"shadow_type\">none</property><child><object class=\"GtkAlignment"
1017+ "\" id=\"alignment3\"><property name=\"visible\">True</property><propert"
1018+ "y name=\"can_focus\">False</property><property name=\"left_padding\">12"
1019+ "</property><child><object class=\"GtkVBox\" id=\"vbox4\"><property name"
1020+ "=\"visible\">True</property><property name=\"can_focus\">False</propert"
1021+ "y><property name=\"border_width\">6</property><property name=\"spacing\""
1022+ ">6</property><child><object class=\"GtkLabel\" id=\"mouse-dnd-label\"><"
1023+ "property name=\"visible\">True</property><property name=\"can_focus\">F"
1024+ "alse</property><property name=\"xalign\">0</property><property name=\"l"
1025+ "abel\" translatable=\"yes\">Th_reshold:</property><property name=\"use_"
1026+ "underline\">True</property><property name=\"mnemonic_widget\">dnd-thres"
1027+ "hold-scale</property></object><packing><property name=\"expand\">True</"
1028+ "property><property name=\"fill\">True</property><property name=\"positi"
1029+ "on\">0</property></packing></child><child><object class=\"GtkHScale\" i"
1030+ "d=\"dnd-threshold-scale\"><property name=\"visible\">True</property><pr"
1031+ "operty name=\"can_focus\">True</property><property name=\"tooltip_text\""
1032+ " translatable=\"yes\">The number of pixels the pointer must move before"
1033+ " a drag operation will start</property><property name=\"update_policy\""
1034+ ">delayed</property><property name=\"adjustment\">dnd-threshold</propert"
1035+ "y><property name=\"digits\">0</property><property name=\"value_pos\">ri"
1036+ "ght</property></object><packing><property name=\"expand\">True</propert"
1037+ "y><property name=\"fill\">True</property><property name=\"position\">1<"
1038+ "/property></packing></child></object></child></object></child><child ty"
1039+ "pe=\"label\"><object class=\"GtkLabel\" id=\"label6\"><property name=\""
1040+ "visible\">True</property><property name=\"can_focus\">False</property><"
1041+ "property name=\"label\" translatable=\"yes\">Drag and Drop</property><a"
1042+ "ttributes><attribute name=\"weight\" value=\"bold\"/></attributes></obj"
1043+ "ect></child></object><packing><property name=\"expand\">False</property"
1044+ "><property name=\"fill\">True</property><property name=\"position\">0</"
1045+ "property></packing></child><child><object class=\"GtkFrame\" id=\"frame"
1046+ "4\"><property name=\"visible\">True</property><property name=\"can_focu"
1047+ "s\">False</property><property name=\"label_xalign\">0</property><proper"
1048+ "ty name=\"shadow_type\">none</property><child><object class=\"GtkAlignm"
1049+ "ent\" id=\"alignment4\"><property name=\"visible\">True</property><prop"
1050+ "erty name=\"can_focus\">False</property><property name=\"left_padding\""
1051+ ">12</property><child><object class=\"GtkVBox\" id=\"vbox5\"><property n"
1052+ "ame=\"visible\">True</property><property name=\"can_focus\">False</prop"
1053+ "erty><property name=\"border_width\">6</property><property name=\"spaci"
1054+ "ng\">6</property><child><object class=\"GtkLabel\" id=\"dclick-time-lab"
1055+ "el\"><property name=\"visible\">True</property><property name=\"can_foc"
1056+ "us\">False</property><property name=\"xalign\">0</property><property na"
1057+ "me=\"label\" translatable=\"yes\">Ti_me:</property><property name=\"use"
1058+ "_underline\">True</property><property name=\"mnemonic_widget\">dclick-t"
1059+ "ime-scale</property></object><packing><property name=\"expand\">True</p"
1060+ "roperty><property name=\"fill\">True</property><property name=\"positio"
1061+ "n\">0</property></packing></child><child><object class=\"GtkHScale\" id"
1062+ "=\"dclick-time-scale\"><property name=\"visible\">True</property><prope"
1063+ "rty name=\"can_focus\">True</property><property name=\"tooltip_text\" t"
1064+ "ranslatable=\"yes\">Two mouse clicks in less than this length of time ("
1065+ "in milliseconds) will be considered a double click</property><property "
1066+ "name=\"update_policy\">delayed</property><property name=\"adjustment\">"
1067+ "dclick-time</property><property name=\"digits\">0</property><property n"
1068+ "ame=\"value_pos\">right</property></object><packing><property name=\"ex"
1069+ "pand\">True</property><property name=\"fill\">True</property><property "
1070+ "name=\"position\">1</property></packing></child><child><object class=\""
1071+ "GtkLabel\" id=\"dclick-distance-label\"><property name=\"visible\">True"
1072+ "</property><property name=\"can_focus\">False</property><property name="
1073+ "\"xalign\">0</property><property name=\"label\" translatable=\"yes\">D_"
1074+ "istance:</property><property name=\"use_underline\">True</property><pro"
1075+ "perty name=\"mnemonic_widget\">dclick-distance-scale</property></object"
1076+ "><packing><property name=\"expand\">True</property><property name=\"fil"
1077+ "l\">True</property><property name=\"position\">2</property></packing></"
1078+ "child><child><object class=\"GtkHScale\" id=\"dclick-distance-scale\"><"
1079+ "property name=\"visible\">True</property><property name=\"can_focus\">T"
1080+ "rue</property><property name=\"tooltip_text\" translatable=\"yes\">The "
1081+ "mouse pointer cannot move farther than this distance between two clicks"
1082+ " for them to be considered a double click</property><property name=\"up"
1083+ "date_policy\">delayed</property><property name=\"adjustment\">dclick-di"
1084+ "stance</property><property name=\"digits\">0</property><property name=\""
1085+ "value_pos\">right</property></object><packing><property name=\"expand\""
1086+ ">True</property><property name=\"fill\">True</property><property name=\""
1087+ "position\">3</property></packing></child></object></child></object></ch"
1088+ "ild><child type=\"label\"><object class=\"GtkLabel\" id=\"label8\"><pro"
1089+ "perty name=\"visible\">True</property><property name=\"can_focus\">Fals"
1090+ "e</property><property name=\"label\" translatable=\"yes\">Double Click<"
1091+ "/property><attributes><attribute name=\"weight\" value=\"bold\"/></attr"
1092+ "ibutes></object></child></object><packing><property name=\"expand\">Fal"
1093+ "se</property><property name=\"fill\">True</property><property name=\"po"
1094+ "sition\">1</property></packing></child></object><packing><property name"
1095+ "=\"position\">1</property></packing></child><child type=\"tab\"><object"
1096+ " class=\"GtkLabel\" id=\"label2\"><property name=\"visible\">True</prop"
1097 "erty><property name=\"can_focus\">False</property><property name=\"labe"
1098- "l\" translatable=\"yes\">Preview</property><attributes><attribute name="
1099- "\"weight\" value=\"bold\"/></attributes></object></child></object><pack"
1100- "ing><property name=\"expand\">False</property><property name=\"fill\">T"
1101- "rue</property><property name=\"position\">1</property></packing></child"
1102- "></object><packing><property name=\"expand\">False</property><property "
1103- "name=\"fill\">True</property><property name=\"position\">1</property></"
1104- "packing></child></object><packing><property name=\"position\">2</proper"
1105- "ty></packing></child><child type=\"tab\"><object class=\"GtkLabel\" id="
1106- "\"label3\"><property name=\"visible\">True</property><property name=\"c"
1107- "an_focus\">False</property><property name=\"label\" translatable=\"yes\""
1108- ">T_heme</property><property name=\"use_underline\">True</property></obj"
1109- "ect><packing><property name=\"position\">2</property><property name=\"t"
1110- "ab_fill\">False</property></packing></child></object><packing><property"
1111- " name=\"expand\">True</property><property name=\"fill\">True</property>"
1112- "<property name=\"position\">1</property></packing></child></object></ch"
1113- "ild><action-widgets><action-widget response=\"0\">button1</action-widge"
1114- "t><action-widget response=\"-11\">button2</action-widget></action-widge"
1115- "ts></object><object class=\"GtkAdjustment\" id=\"theme-cursor-size\"><p"
1116- "roperty name=\"lower\">16</property><property name=\"upper\">48</proper"
1117- "ty><property name=\"value\">24</property><property name=\"step_incremen"
1118- "t\">1</property><property name=\"page_increment\">11</property></object"
1119- "><object class=\"GtkListStore\" id=\"wacom-mode-store\"><columns><colum"
1120- "n type=\"gchararray\"/><column type=\"gchararray\"/></columns><data><ro"
1121- "w><col id=\"0\">ABSOLUTE</col><col id=\"1\" translatable=\"yes\">Pen (a"
1122- "bsolute)</col></row><row><col id=\"0\">RELATIVE</col><col id=\"1\" tran"
1123- "slatable=\"yes\">Mouse (relative)</col></row></data></object><object cl"
1124- "ass=\"GtkListStore\" id=\"wacom-rotation-store\"><columns><column type="
1125- "\"gint\"/><column type=\"gchararray\"/></columns><data><row><col id=\"0"
1126- "\">0</col><col id=\"1\" translatable=\"yes\">None (right-handed)</col><"
1127- "/row><row><col id=\"0\">3</col><col id=\"1\" translatable=\"yes\">Half "
1128- "(left-handed)</col></row><row><col id=\"0\">1</col><col id=\"1\" transl"
1129- "atable=\"yes\">Clockwise</col></row><row><col id=\"0\">2</col><col id=\""
1130- "1\" translatable=\"yes\">Counterclockwise</col></row></data></object></"
1131- "interface>"
1132+ "l\" translatable=\"yes\">_Behavior</property><property name=\"use_under"
1133+ "line\">True</property></object><packing><property name=\"position\">1</"
1134+ "property><property name=\"tab_fill\">False</property></packing></child>"
1135+ "<child><object class=\"GtkHBox\" id=\"themes-hbox\"><property name=\"vi"
1136+ "sible\">True</property><property name=\"can_focus\">False</property><pr"
1137+ "operty name=\"border_width\">12</property><property name=\"spacing\">12"
1138+ "</property><child><object class=\"GtkScrolledWindow\" id=\"scrolledwind"
1139+ "ow2\"><property name=\"visible\">True</property><property name=\"can_fo"
1140+ "cus\">True</property><property name=\"hscrollbar_policy\">automatic</pr"
1141+ "operty><property name=\"vscrollbar_policy\">automatic</property><proper"
1142+ "ty name=\"shadow_type\">etched-in</property><child><object class=\"GtkT"
1143+ "reeView\" id=\"theme-treeview\"><property name=\"width_request\">200</p"
1144+ "roperty><property name=\"visible\">True</property><property name=\"can_"
1145+ "focus\">True</property><property name=\"headers_visible\">False</proper"
1146+ "ty></object></child></object><packing><property name=\"expand\">True</p"
1147+ "roperty><property name=\"fill\">True</property><property name=\"positio"
1148+ "n\">0</property></packing></child><child><object class=\"GtkVBox\" id=\""
1149+ "vbox9\"><property name=\"visible\">True</property><property name=\"can_"
1150+ "focus\">False</property><property name=\"spacing\">6</property><child><"
1151+ "object class=\"GtkFrame\" id=\"frame5\"><property name=\"visible\">True"
1152+ "</property><property name=\"can_focus\">False</property><property name="
1153+ "\"label_xalign\">0</property><property name=\"shadow_type\">none</prope"
1154+ "rty><child><object class=\"GtkAlignment\" id=\"alignment5\"><property n"
1155+ "ame=\"visible\">True</property><property name=\"can_focus\">False</prop"
1156+ "erty><property name=\"left_padding\">12</property><child><object class="
1157+ "\"GtkHBox\" id=\"hbox7\"><property name=\"visible\">True</property><pro"
1158+ "perty name=\"can_focus\">False</property><property name=\"border_width\""
1159+ ">6</property><property name=\"spacing\">12</property><child><object cla"
1160+ "ss=\"GtkLabel\" id=\"label21\"><property name=\"visible\">True</propert"
1161+ "y><property name=\"can_focus\">False</property><property name=\"label\""
1162+ " translatable=\"yes\">Cursor si_ze:</property><property name=\"use_unde"
1163+ "rline\">True</property><property name=\"mnemonic_widget\">spin1</proper"
1164+ "ty></object><packing><property name=\"expand\">False</property><propert"
1165+ "y name=\"fill\">True</property><property name=\"position\">0</property>"
1166+ "</packing></child><child><object class=\"GtkSpinButton\" id=\"spin1\"><"
1167+ "property name=\"visible\">True</property><property name=\"can_focus\">T"
1168+ "rue</property><property name=\"primary_icon_activatable\">False</proper"
1169+ "ty><property name=\"secondary_icon_activatable\">False</property><prope"
1170+ "rty name=\"primary_icon_sensitive\">True</property><property name=\"sec"
1171+ "ondary_icon_sensitive\">True</property><property name=\"adjustment\">th"
1172+ "eme-cursor-size</property><property name=\"snap_to_ticks\">True</proper"
1173+ "ty><property name=\"numeric\">True</property></object><packing><propert"
1174+ "y name=\"expand\">False</property><property name=\"fill\">True</propert"
1175+ "y><property name=\"position\">1</property></packing></child></object></"
1176+ "child></object></child><child type=\"label\"><object class=\"GtkLabel\""
1177+ " id=\"label20\"><property name=\"visible\">True</property><property nam"
1178+ "e=\"can_focus\">False</property><property name=\"label\" translatable=\""
1179+ "yes\">Size</property><attributes><attribute name=\"weight\" value=\"bol"
1180+ "d\"/></attributes></object></child></object><packing><property name=\"e"
1181+ "xpand\">False</property><property name=\"fill\">True</property><propert"
1182+ "y name=\"position\">0</property></packing></child><child><object class="
1183+ "\"GtkFrame\" id=\"frame6\"><property name=\"visible\">True</property><p"
1184+ "roperty name=\"can_focus\">False</property><property name=\"label_xalig"
1185+ "n\">0</property><property name=\"shadow_type\">none</property><child><o"
1186+ "bject class=\"GtkAlignment\" id=\"alignment6\"><property name=\"visible"
1187+ "\">True</property><property name=\"can_focus\">False</property><propert"
1188+ "y name=\"border_width\">6</property><property name=\"xalign\">0</proper"
1189+ "ty><property name=\"yalign\">0</property><property name=\"xscale\">0</p"
1190+ "roperty><property name=\"yscale\">0</property><property name=\"top_padd"
1191+ "ing\">6</property><property name=\"bottom_padding\">6</property><proper"
1192+ "ty name=\"left_padding\">18</property><property name=\"right_padding\">"
1193+ "6</property><child><object class=\"GtkImage\" id=\"theme-preview\"><pro"
1194+ "perty name=\"visible\">True</property><property name=\"can_focus\">Fals"
1195+ "e</property><property name=\"stock\">gtk-missing-image</property></obje"
1196+ "ct></child></object></child><child type=\"label\"><object class=\"GtkLa"
1197+ "bel\" id=\"label22\"><property name=\"visible\">True</property><propert"
1198+ "y name=\"can_focus\">False</property><property name=\"label\" translata"
1199+ "ble=\"yes\">Preview</property><attributes><attribute name=\"weight\" va"
1200+ "lue=\"bold\"/></attributes></object></child></object><packing><property"
1201+ " name=\"expand\">False</property><property name=\"fill\">True</property"
1202+ "><property name=\"position\">1</property></packing></child></object><pa"
1203+ "cking><property name=\"expand\">False</property><property name=\"fill\""
1204+ ">True</property><property name=\"position\">1</property></packing></chi"
1205+ "ld></object><packing><property name=\"position\">2</property></packing>"
1206+ "</child><child type=\"tab\"><object class=\"GtkLabel\" id=\"label3\"><p"
1207+ "roperty name=\"visible\">True</property><property name=\"can_focus\">Fa"
1208+ "lse</property><property name=\"label\" translatable=\"yes\">_Theme</pro"
1209+ "perty><property name=\"use_underline\">True</property></object><packing"
1210+ "><property name=\"position\">2</property><property name=\"tab_fill\">Fa"
1211+ "lse</property></packing></child></object><packing><property name=\"expa"
1212+ "nd\">True</property><property name=\"fill\">True</property><property na"
1213+ "me=\"position\">1</property></packing></child></object></child><action-"
1214+ "widgets><action-widget response=\"-11\">button2</action-widget><action-"
1215+ "widget response=\"0\">button1</action-widget></action-widgets></object>"
1216+ "<object class=\"GtkListStore\" id=\"wacom-mode-store\"><columns><column"
1217+ " type=\"gchararray\"/><column type=\"gchararray\"/></columns><data><row"
1218+ "><col id=\"0\">ABSOLUTE</col><col id=\"1\" translatable=\"yes\">Pen (ab"
1219+ "solute)</col></row><row><col id=\"0\">RELATIVE</col><col id=\"1\" trans"
1220+ "latable=\"yes\">Mouse (relative)</col></row></data></object><object cla"
1221+ "ss=\"GtkListStore\" id=\"wacom-rotation-store\"><columns><column type=\""
1222+ "gint\"/><column type=\"gchararray\"/></columns><data><row><col id=\"0\""
1223+ ">0</col><col id=\"1\" translatable=\"yes\">None (right-handed)</col></r"
1224+ "ow><row><col id=\"0\">3</col><col id=\"1\" translatable=\"yes\">Half (l"
1225+ "eft-handed)</col></row><row><col id=\"0\">1</col><col id=\"1\" translat"
1226+ "able=\"yes\">Clockwise</col></row><row><col id=\"0\">2</col><col id=\"1"
1227+ "\" translatable=\"yes\">Counterclockwise</col></row></data></object></i"
1228+ "nterface>"
1229 };
1230
1231-static const unsigned mouse_dialog_ui_length = 37918u;
1232+static const unsigned mouse_dialog_ui_length = 38582u;
1233
1234--
12351.7.6.5
1236
diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0003-XfcePointersHelper-gets-a-pointer-to-XfceXSettingsHe.patch b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0003-XfcePointersHelper-gets-a-pointer-to-XfceXSettingsHe.patch
new file mode 100644
index 000000000..eff052b68
--- /dev/null
+++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0003-XfcePointersHelper-gets-a-pointer-to-XfceXSettingsHe.patch
@@ -0,0 +1,137 @@
1From a3b0218137c8796fbb7bd6d852dc8ab5895a65cb Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
3Date: Sat, 3 Nov 2012 18:32:01 +0100
4Subject: [PATCH 3/5] XfcePointersHelper gets a pointer to XfceXSettingsHelper
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9
10Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
11Upstream-Status: Submitted [1]
12[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474
13---
14 xfsettingsd/main.c | 2 +-
15 xfsettingsd/pointers.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++
16 2 files changed, 56 insertions(+), 1 deletions(-)
17
18diff --git a/xfsettingsd/main.c b/xfsettingsd/main.c
19index 55c4183..99982f7 100644
20--- a/xfsettingsd/main.c
21+++ b/xfsettingsd/main.c
22@@ -273,7 +273,7 @@ main (gint argc, gchar **argv)
23 #ifdef HAVE_XRANDR
24 displays_helper = g_object_new (XFCE_TYPE_DISPLAYS_HELPER, NULL);
25 #endif
26- pointer_helper = g_object_new (XFCE_TYPE_POINTERS_HELPER, NULL);
27+ pointer_helper = g_object_new (XFCE_TYPE_POINTERS_HELPER, "xsettings-helper", xsettings_helper, NULL);
28 keyboards_helper = g_object_new (XFCE_TYPE_KEYBOARDS_HELPER, NULL);
29 accessibility_helper = g_object_new (XFCE_TYPE_ACCESSIBILITY_HELPER, NULL);
30 shortcuts_helper = g_object_new (XFCE_TYPE_KEYBOARD_SHORTCUTS_HELPER, NULL);
31diff --git a/xfsettingsd/pointers.c b/xfsettingsd/pointers.c
32index e7192e7..62ebc60 100644
33--- a/xfsettingsd/pointers.c
34+++ b/xfsettingsd/pointers.c
35@@ -47,8 +47,16 @@
36
37 #define XFCONF_TYPE_G_VALUE_ARRAY (dbus_g_type_get_collection ("GPtrArray", G_TYPE_VALUE))
38
39+/* Property identifiers */
40+enum
41+{
42+ PROP_0,
43+ PROP_XSETTINGS_HELPER,
44+};
45+
46
47
48+static void xfce_pointers_helper_constructed (GObject *object);
49 static void xfce_pointers_helper_finalize (GObject *object);
50 static void xfce_pointers_helper_syndaemon_stop (XfcePointersHelper *helper);
51 static void xfce_pointers_helper_syndaemon_check (XfcePointersHelper *helper);
52@@ -63,6 +71,10 @@ static GdkFilterReturn xfce_pointers_helper_event_filter (GdkXEvent
53 GdkEvent *gdk_event,
54 gpointer user_data);
55 #endif
56+static void xfce_pointers_helper_set_property (GObject *object,
57+ guint prop_id,
58+ const GValue *value,
59+ GParamSpec *pspec);
60
61
62
63@@ -75,6 +87,8 @@ struct _XfcePointersHelper
64 {
65 GObject __parent__;
66
67+ GObject *xsettings_helper;
68+
69 /* xfconf channel */
70 XfconfChannel *channel;
71
72@@ -108,7 +122,18 @@ xfce_pointers_helper_class_init (XfcePointersHelperClass *klass)
73 {
74 GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
75
76+ gobject_class->constructed = xfce_pointers_helper_constructed;
77 gobject_class->finalize = xfce_pointers_helper_finalize;
78+ gobject_class->set_property = xfce_pointers_helper_set_property;
79+
80+ g_object_class_install_property (gobject_class,
81+ PROP_XSETTINGS_HELPER,
82+ g_param_spec_object ("xsettings-helper",
83+ "xsettings-helper",
84+ "xsettings-helper",
85+ G_TYPE_OBJECT,
86+ G_PARAM_CONSTRUCT_ONLY |
87+ G_PARAM_WRITABLE));
88 }
89
90
91@@ -116,6 +141,15 @@ xfce_pointers_helper_class_init (XfcePointersHelperClass *klass)
92 static void
93 xfce_pointers_helper_init (XfcePointersHelper *helper)
94 {
95+ /* All initialisation is done at xfce_pointers_helper_constructed */
96+}
97+
98+
99+
100+static void
101+xfce_pointers_helper_constructed (GObject *object)
102+{
103+ XfcePointersHelper *helper = XFCE_POINTERS_HELPER (object);
104 XExtensionVersion *version = NULL;
105 Display *xdisplay;
106 #ifdef DEVICE_HOTPLUGGING
107@@ -181,6 +215,27 @@ xfce_pointers_helper_init (XfcePointersHelper *helper)
108
109
110 static void
111+xfce_pointers_helper_set_property (GObject *object,
112+ guint prop_id,
113+ const GValue *value,
114+ GParamSpec *pspec)
115+{
116+ XfcePointersHelper *helper = XFCE_POINTERS_HELPER (object);
117+
118+ switch (prop_id)
119+ {
120+ case PROP_XSETTINGS_HELPER:
121+ helper->xsettings_helper = g_value_get_object (value);
122+ break;
123+ default:
124+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
125+ break;
126+ }
127+}
128+
129+
130+
131+static void
132 xfce_pointers_helper_finalize (GObject *object)
133 {
134 xfce_pointers_helper_syndaemon_stop (XFCE_POINTERS_HELPER (object));
135--
1361.7.6.5
137
diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0004-XfceXSettingsHelper-gets-a-property-touchscreen-poin.patch b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0004-XfceXSettingsHelper-gets-a-property-touchscreen-poin.patch
new file mode 100644
index 000000000..180ccfd55
--- /dev/null
+++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0004-XfceXSettingsHelper-gets-a-property-touchscreen-poin.patch
@@ -0,0 +1,251 @@
1From 878fe1287a4c73f67dd2b51d1d7c450097aeffa7 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
3Date: Thu, 20 Dec 2012 16:49:18 +0100
4Subject: [PATCH 4/5] XfceXSettingsHelper gets a property
5 "touchscreen-pointer"
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10When this property is set, it overrides overrides cursor theme to
11"xfce-invisible" and sets /Gtk/TouchscreenMode.
12
13Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
14Upstream-Status: Submitted [1]
15[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474
16---
17 xfsettingsd/xsettings.c | 122 ++++++++++++++++++++++++++++++++++++++++++++-
18 xfsettingsd/xsettings.xml | 1 +
19 2 files changed, 122 insertions(+), 1 deletions(-)
20
21diff --git a/xfsettingsd/xsettings.c b/xfsettingsd/xsettings.c
22index 7657465..76bcea1 100644
23--- a/xfsettingsd/xsettings.c
24+++ b/xfsettingsd/xsettings.c
25@@ -73,6 +73,15 @@ typedef struct _XfceXSettingsNotify XfceXSettingsNotify;
26
27
28
29+/* Property identifiers */
30+enum
31+{
32+ PROP_0,
33+ PROP_TOUCHSCREEN_POINTER,
34+};
35+
36+
37+
38 static void xfce_xsettings_helper_finalize (GObject *object);
39 static void xfce_xsettings_helper_fc_free (XfceXSettingsHelper *helper);
40 static gboolean xfce_xsettings_helper_fc_init (gpointer data);
41@@ -86,6 +95,10 @@ static void xfce_xsettings_helper_load (XfceXSettingsHelper *helper)
42 static void xfce_xsettings_helper_screen_free (XfceXSettingsScreen *screen);
43 static void xfce_xsettings_helper_notify_xft (XfceXSettingsHelper *helper);
44 static void xfce_xsettings_helper_notify (XfceXSettingsHelper *helper);
45+static void xfce_xsettings_helper_set_property (GObject *object,
46+ guint prop_id,
47+ const GValue *value,
48+ GParamSpec *pspec);
49
50
51
52@@ -120,6 +133,13 @@ struct _XfceXSettingsHelper
53 GPtrArray *fc_monitors;
54 guint fc_notify_timeout_id;
55 guint fc_init_id;
56+
57+ /* keeper for touchscreen cursor theme / last set */
58+ GValue *touchscreen_cursor_value;
59+ GValue *lastset_cursor_value;
60+
61+ /* properties */
62+ gboolean touchscreen_pointer;
63 };
64
65 struct _XfceXSetting
66@@ -157,6 +177,16 @@ xfce_xsettings_helper_class_init (XfceXSettingsHelperClass *klass)
67
68 gobject_class = G_OBJECT_CLASS (klass);
69 gobject_class->finalize = xfce_xsettings_helper_finalize;
70+ gobject_class->set_property = xfce_xsettings_helper_set_property;
71+
72+ g_object_class_install_property (gobject_class,
73+ PROP_TOUCHSCREEN_POINTER,
74+ g_param_spec_boolean ("touchscreen-pointer",
75+ "touchscreen-pointer",
76+ "touchscreen-pointer",
77+ FALSE,
78+ G_PARAM_WRITABLE |
79+ G_PARAM_STATIC_STRINGS));
80 }
81
82
83@@ -169,6 +199,13 @@ xfce_xsettings_helper_init (XfceXSettingsHelper *helper)
84 helper->settings = g_hash_table_new_full (g_str_hash, g_str_equal,
85 g_free, xfce_xsettings_helper_setting_free);
86
87+ helper->lastset_cursor_value = g_new0 (GValue, 1);
88+ g_value_init(helper->lastset_cursor_value, G_TYPE_STRING);
89+ g_value_set_string (helper->lastset_cursor_value, "default");
90+ helper->touchscreen_cursor_value = g_new0 (GValue, 1);
91+ g_value_init(helper->touchscreen_cursor_value, G_TYPE_STRING);
92+ g_value_set_string (helper->touchscreen_cursor_value, "xfce-invisible");
93+
94 xfce_xsettings_helper_load (helper);
95
96 g_signal_connect (G_OBJECT (helper->channel), "property-changed",
97@@ -202,6 +239,9 @@ xfce_xsettings_helper_finalize (GObject *object)
98
99 g_hash_table_destroy (helper->settings);
100
101+ g_free (helper->lastset_cursor_value);
102+ g_free (helper->touchscreen_cursor_value);
103+
104 (*G_OBJECT_CLASS (xfce_xsettings_helper_parent_class)->finalize) (object);
105 }
106
107@@ -387,6 +427,61 @@ xfce_xsettings_helper_notify_xft_idle (gpointer data)
108
109
110
111+static void
112+xfce_xsettings_helper_set_property (GObject *object,
113+ guint prop_id,
114+ const GValue *value,
115+ GParamSpec *pspec)
116+{
117+ gboolean touchscreen_pointer;
118+ XfceXSetting *setting_theme, *setting_touchscreen;
119+ XfceXSettingsHelper *helper = XFCE_XSETTINGS_HELPER (object);
120+ GtkSettings *gtk_settings;
121+ GValue bool_val = { 0, };
122+
123+ switch (prop_id)
124+ {
125+ case PROP_TOUCHSCREEN_POINTER:
126+ touchscreen_pointer = g_value_get_boolean (value);
127+ if (helper->touchscreen_pointer != touchscreen_pointer)
128+ {
129+ helper->touchscreen_pointer = touchscreen_pointer;
130+ /* Update touchscreen-mode */
131+ xfconf_channel_set_bool (helper->channel, "/Gtk/TouchscreenMode", touchscreen_pointer);
132+ /* Update cursor */
133+ setting_theme = g_hash_table_lookup (helper->settings, "/Gtk/CursorThemeName");
134+ if (G_LIKELY (setting_theme != NULL))
135+ {
136+ /* update the serial */
137+ setting_theme->last_change_serial = helper->serial;
138+ /* update value */
139+ g_value_reset (setting_theme->value);
140+ g_value_copy (touchscreen_pointer ?
141+ helper->touchscreen_cursor_value :
142+ helper->lastset_cursor_value,
143+ setting_theme->value);
144+ }
145+ else
146+ g_critical("Setting not found for /Gtk/CursorThemeName");
147+
148+ if (G_LIKELY (setting_touchscreen != NULL || setting_theme != NULL))
149+ {
150+ /* schedule xsettings update */
151+ if (helper->notify_idle_id == 0)
152+ helper->notify_idle_id = g_idle_add (xfce_xsettings_helper_notify_idle, helper);
153+ if (helper->notify_xft_idle_id == 0)
154+ helper->notify_xft_idle_id = g_idle_add (xfce_xsettings_helper_notify_xft_idle, helper);
155+ }
156+ }
157+ break;
158+ default:
159+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
160+ break;
161+ }
162+}
163+
164+
165+
166 static gboolean
167 xfce_xsettings_helper_prop_valid (const gchar *prop_name,
168 const GValue *value)
169@@ -413,6 +508,28 @@ xfce_xsettings_helper_prop_valid (const gchar *prop_name,
170
171
172
173+static void
174+xfce_xsettings_helper_check_cursor (const gchar *prop_name,
175+ GValue *value,
176+ XfceXSettingsHelper *helper)
177+{
178+ if (g_strcmp0 (prop_name, "/Gtk/CursorThemeName") == 0)
179+ {
180+ /* Keep last cursor theme set */
181+ g_value_reset (helper->lastset_cursor_value);
182+ g_value_copy (value, helper->lastset_cursor_value);
183+
184+ /* invisible replacement required ? */
185+ if (helper->touchscreen_pointer)
186+ {
187+ g_value_reset (value);
188+ g_value_copy (helper->touchscreen_cursor_value, value);
189+ }
190+ }
191+}
192+
193+
194+
195 static gboolean
196 xfce_xsettings_helper_prop_load (gchar *prop_name,
197 GValue *value,
198@@ -426,6 +543,7 @@ xfce_xsettings_helper_prop_load (gchar *prop_name,
199
200 setting = g_slice_new0 (XfceXSetting);
201 setting->value = value;
202+ xfce_xsettings_helper_check_cursor (prop_name, setting->value, helper);
203 setting->last_change_serial = helper->serial;
204
205 xfsettings_dbg_filtered (XFSD_DEBUG_XSETTINGS, "prop \"%s\" loaded (type=%s)",
206@@ -462,6 +580,7 @@ xfce_xsettings_helper_prop_changed (XfconfChannel *channel,
207 * it first */
208 g_value_reset (setting->value);
209 g_value_copy (value, setting->value);
210+ xfce_xsettings_helper_check_cursor (prop_name, setting->value, helper);
211
212 /* update the serial */
213 setting->last_change_serial = helper->serial;
214@@ -475,6 +594,7 @@ xfce_xsettings_helper_prop_changed (XfconfChannel *channel,
215
216 g_value_init (setting->value, G_VALUE_TYPE (value));
217 g_value_copy (value, setting->value);
218+ xfce_xsettings_helper_check_cursor (prop_name, setting->value, helper);
219
220 g_hash_table_insert (helper->settings, g_strdup (prop_name), setting);
221 }
222@@ -649,6 +769,7 @@ xfce_xsettings_helper_notify_xft (XfceXSettingsHelper *helper)
223 XfceXSetting *setting;
224 guint i;
225 GValue bool_val = { 0, };
226+
227 const gchar *props[][2] =
228 {
229 /* { xfconf name}, { xft name } */
230@@ -700,7 +821,6 @@ xfce_xsettings_helper_notify_xft (XfceXSettingsHelper *helper)
231 PropModeReplace,
232 (guchar *) resource->str,
233 resource->len);
234-
235 XCloseDisplay (xdisplay);
236
237 if (gdk_error_trap_pop () != 0)
238diff --git a/xfsettingsd/xsettings.xml b/xfsettingsd/xsettings.xml
239index 0a579d6..baa413c 100644
240--- a/xfsettingsd/xsettings.xml
241+++ b/xfsettingsd/xsettings.xml
242@@ -41,5 +41,6 @@
243 <property name="MenuBarAccel" type="string" value="F10"/>
244 <property name="CursorThemeName" type="string" value=""/>
245 <property name="CursorThemeSize" type="int" value="0"/>
246+ <property name="TouchscreenMode" type="bool" value="false"/>
247 <property name="IMModule" type="string" value=""/>
248 </property>
249</channel>--
2501.7.6.5
251
diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0005-pointers-detect-a-change-of-pointer-device-used-and-.patch b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0005-pointers-detect-a-change-of-pointer-device-used-and-.patch
new file mode 100644
index 000000000..edcb4e1cd
--- /dev/null
+++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0005-pointers-detect-a-change-of-pointer-device-used-and-.patch
@@ -0,0 +1,582 @@
1From 37f5e33511499d320c3035c5377425004657faa5 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
3Date: Thu, 20 Dec 2012 16:58:19 +0100
4Subject: [PATCH 5/5] pointers: detect a change of pointer-device used and set
5 "touchscreen-pointer" as found in xfconf
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10To detect pointer device in use the DevicePresence-, DeviceMotionNotify- and
11DeviceButtonPress-events are handled. Tests showed that by repopenning and
12closing the pointer devices (e.g when another setting was modified), the events
13stopped working. Therefore all pointer devices are opened only once and managed
14in a hash table.
15
16Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
17Upstream-Status: Submitted [1]
18[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474
19---
20 xfsettingsd/pointers.c | 337 +++++++++++++++++++++++++++++++----------------
21 1 files changed, 222 insertions(+), 115 deletions(-)
22
23diff --git a/xfsettingsd/pointers.c b/xfsettingsd/pointers.c
24index 62ebc60..32662cc 100644
25--- a/xfsettingsd/pointers.c
26+++ b/xfsettingsd/pointers.c
27@@ -66,11 +66,9 @@ static void xfce_pointers_helper_channel_property_changed (XfconfCha
28 const gchar *property_name,
29 const GValue *value,
30 XfcePointersHelper *helper);
31-#ifdef DEVICE_HOTPLUGGING
32 static GdkFilterReturn xfce_pointers_helper_event_filter (GdkXEvent *xevent,
33 GdkEvent *gdk_event,
34 gpointer user_data);
35-#endif
36 static void xfce_pointers_helper_set_property (GObject *object,
37 guint prop_id,
38 const GValue *value,
39@@ -96,8 +94,11 @@ struct _XfcePointersHelper
40 GPid syndaemon_pid;
41 #endif
42
43+ GHashTable *pointer_devices;
44+ XID last_pointer_active;
45+ gint device_motion_event_type;
46+ gint device_button_press_event_type;
47 #ifdef DEVICE_HOTPLUGGING
48- /* device presence event type */
49 gint device_presence_event_type;
50 #endif
51 };
52@@ -117,6 +118,15 @@ G_DEFINE_TYPE (XfcePointersHelper, xfce_pointers_helper, G_TYPE_OBJECT);
53
54
55
56+typedef struct
57+{
58+ XDevice *device;
59+ gchar* name;
60+}
61+XfcePointerDeviceData;
62+
63+
64+
65 static void
66 xfce_pointers_helper_class_init (XfcePointersHelperClass *klass)
67 {
68@@ -147,6 +157,18 @@ xfce_pointers_helper_init (XfcePointersHelper *helper)
69
70
71 static void
72+xfce_pointers_device_close (gpointer data)
73+{
74+ XfcePointerDeviceData *device_data = data;
75+
76+ XCloseDevice (GDK_DISPLAY (), device_data->device);
77+ g_free (device_data->name);
78+ g_free (device_data);
79+}
80+
81+
82+
83+static void
84 xfce_pointers_helper_constructed (GObject *object)
85 {
86 XfcePointersHelper *helper = XFCE_POINTERS_HELPER (object);
87@@ -185,6 +207,10 @@ xfce_pointers_helper_constructed (GObject *object)
88 helper->channel = xfconf_channel_get ("pointers");
89
90 /* restore the pointer devices */
91+ helper->pointer_devices = g_hash_table_new_full (g_int_hash,
92+ g_int_equal,
93+ g_free,
94+ xfce_pointers_device_close);
95 xfce_pointers_helper_restore_devices (helper, NULL);
96
97 /* monitor the channel */
98@@ -194,21 +220,20 @@ xfce_pointers_helper_constructed (GObject *object)
99 /* launch syndaemon if required */
100 xfce_pointers_helper_syndaemon_check (helper);
101
102-#ifdef DEVICE_HOTPLUGGING
103 if (G_LIKELY (xdisplay != NULL))
104 {
105+#ifdef DEVICE_HOTPLUGGING
106 /* monitor device changes */
107 gdk_error_trap_push ();
108 DevicePresence (xdisplay, helper->device_presence_event_type, event_class);
109 XSelectExtensionEvent (xdisplay, RootWindow (xdisplay, DefaultScreen (xdisplay)), &event_class, 1);
110
111 /* add an event filter */
112- if (gdk_error_trap_pop () == 0)
113- gdk_window_add_filter (NULL, xfce_pointers_helper_event_filter, helper);
114- else
115+ if (gdk_error_trap_pop () != 0)
116 g_warning ("Failed to create device filter");
117- }
118 #endif
119+ gdk_window_add_filter (NULL, xfce_pointers_helper_event_filter, helper);
120+ }
121 }
122 }
123
124@@ -238,7 +263,10 @@ xfce_pointers_helper_set_property (GObject *object,
125 static void
126 xfce_pointers_helper_finalize (GObject *object)
127 {
128- xfce_pointers_helper_syndaemon_stop (XFCE_POINTERS_HELPER (object));
129+ XfcePointersHelper* helper = XFCE_POINTERS_HELPER (object);
130+
131+ xfce_pointers_helper_syndaemon_stop (helper);
132+ g_hash_table_destroy (helper->pointer_devices);
133
134 (*G_OBJECT_CLASS (xfce_pointers_helper_parent_class)->finalize) (object);
135 }
136@@ -267,17 +295,17 @@ static void
137 xfce_pointers_helper_syndaemon_check (XfcePointersHelper *helper)
138 {
139 #ifdef DEVICE_PROPERTIES
140- Display *xdisplay = GDK_DISPLAY ();
141- XDeviceInfo *device_list;
142- XDevice *device;
143- gint n, ndevices;
144- Atom touchpad_type;
145- Atom touchpad_off_prop;
146- Atom *props;
147- gint i, nprops;
148- gboolean have_synaptics = FALSE;
149- gchar *args[] = { "syndaemon", "-i", "2.0", "-K", "-R", NULL };
150- GError *error = NULL;
151+ Display *xdisplay = GDK_DISPLAY ();
152+ XDeviceInfo *device_list;
153+ XfcePointerDeviceData *device_data;
154+ gint n, ndevices;
155+ Atom touchpad_type;
156+ Atom touchpad_off_prop;
157+ Atom *props;
158+ gint i, nprops;
159+ gboolean have_synaptics = FALSE;
160+ gchar *args[] = { "syndaemon", "-i", "2.0", "-K", "-R", NULL };
161+ GError *error = NULL;
162
163 /* only stop a running daemon */
164 if (!xfconf_channel_get_bool (helper->channel, "/DisableTouchpadWhileTyping", FALSE))
165@@ -297,17 +325,16 @@ xfce_pointers_helper_syndaemon_check (XfcePointersHelper *helper)
166 if (device_list[n].type != touchpad_type)
167 continue;
168
169- gdk_error_trap_push ();
170- device = XOpenDevice (xdisplay, device_list[n].id);
171- if (gdk_error_trap_pop () != 0 || device == NULL)
172+ device_data = g_hash_table_lookup (helper->pointer_devices, &device_list[n].id);
173+ if (device_data == NULL)
174 {
175- g_critical ("Unable to open device %s", device_list[n].name);
176+ g_critical ("xfce_pointers_helper_syndaemon_check: Unable to find device %s / ID %i in hash table", device_list[n].name, device_list[n].id);
177 break;
178 }
179
180 /* look for the Synaptics Off property */
181 gdk_error_trap_push ();
182- props = XListDeviceProperties (xdisplay, device, &nprops);
183+ props = XListDeviceProperties (xdisplay, device_data->device, &nprops);
184 if (gdk_error_trap_pop () == 0
185 && props != NULL)
186 {
187@@ -317,8 +344,6 @@ xfce_pointers_helper_syndaemon_check (XfcePointersHelper *helper)
188 XFree (props);
189 }
190
191- XCloseDevice (xdisplay, device);
192-
193 if (have_synaptics)
194 break;
195 }
196@@ -844,24 +869,56 @@ xfce_pointers_helper_change_properties (gpointer key,
197
198
199 static void
200+xfce_pointers_helper_change_current_device (XfcePointersHelper *helper,
201+ XID *xid)
202+{
203+ XfcePointerDeviceData *device_data;
204+ gchar* prop;
205+ GValue bool_val = { 0, };
206+
207+ helper->last_pointer_active = *xid;
208+ device_data = g_hash_table_lookup (helper->pointer_devices, xid);
209+ if (device_data == NULL)
210+ {
211+ g_critical ("Unable to find device ID %i in hash table", *xid);
212+ return;
213+ }
214+ if (G_LIKELY (G_IS_OBJECT (helper->xsettings_helper)))
215+ {
216+ prop = g_strconcat ("/", device_data->name, "/TouchscreenPointer", NULL);
217+ g_value_init (&bool_val, G_TYPE_BOOLEAN);
218+ g_value_set_boolean (&bool_val,
219+ xfconf_channel_get_bool (helper->channel, prop, FALSE));
220+ g_object_set_property (helper->xsettings_helper, "touchscreen-pointer", &bool_val);
221+ g_value_unset (&bool_val);
222+ g_free (prop);
223+ }
224+ else
225+ g_critical ("xsettings_helper was not properly set");
226+}
227+
228+
229+static void
230 xfce_pointers_helper_restore_devices (XfcePointersHelper *helper,
231 XID *xid)
232 {
233- Display *xdisplay = GDK_DISPLAY ();
234- XDeviceInfo *device_list, *device_info;
235- gint n, ndevices;
236- XDevice *device;
237- gchar *device_name;
238- gchar prop[256];
239- gboolean right_handed;
240- gboolean reverse_scrolling;
241- gint threshold;
242- gdouble acceleration;
243+ Display *xdisplay = GDK_DISPLAY ();
244+ XDeviceInfo *device_list, *device_info;
245+ gint n, ndevices;
246+ XDevice *device;
247+ XfcePointerDeviceData *device_data;
248+ gchar *device_name;
249+ gchar prop[256];
250+ gboolean right_handed;
251+ gboolean reverse_scrolling;
252+ gint threshold;
253+ gdouble acceleration;
254+ XEventClass event_classes[2];
255 #ifdef DEVICE_PROPERTIES
256- GHashTable *props;
257- XfcePointerData pointer_data;
258+ GHashTable *props;
259+ XfcePointerData pointer_data;
260 #endif
261- const gchar *mode;
262+ const gchar *mode;
263
264 gdk_error_trap_push ();
265 device_list = XListInputDevices (xdisplay, &ndevices);
266@@ -873,84 +930,107 @@ xfce_pointers_helper_restore_devices (XfcePointersHelper *helper,
267
268 for (n = 0; n < ndevices; n++)
269 {
270- /* filter the pointer devices */
271+ /* filter the physical pointer devices */
272 device_info = &device_list[n];
273 if (device_info->use != IsXExtensionPointer
274- || device_info->name == NULL)
275+ || device_info->name == NULL
276+ || g_str_has_prefix (device_info->name, "Virtual core XTEST"))
277 continue;
278
279 /* filter out the device if one is set */
280 if (xid != NULL && device_info->id != *xid)
281 continue;
282
283- /* open the device */
284- gdk_error_trap_push ();
285- device = XOpenDevice (xdisplay, device_info->id);
286- if (gdk_error_trap_pop () != 0 || device == NULL)
287+ device_data = g_hash_table_lookup (helper->pointer_devices, &device_info->id);
288+ if (device_data == NULL)
289 {
290- g_critical ("Unable to open device %s", device_info->name);
291- continue;
292- }
293+ /* open the device and insert to hash */
294+ gdk_error_trap_push ();
295+ device = XOpenDevice (xdisplay, device_info->id);
296+ if (G_UNLIKELY(gdk_error_trap_pop () != 0 || device == NULL))
297+ {
298+ g_critical ("Unable to open device %s / ID: %i", device_info->name, device_info->id);
299+ continue;
300+ }
301
302- /* create a valid xfconf property name for the device */
303- device_name = xfce_pointers_helper_device_xfconf_name (device_info->name);
304+ /* create a valid xfconf property name for the device */
305+ device_name = xfce_pointers_helper_device_xfconf_name (device_info->name);
306
307- /* read buttonmap properties */
308- g_snprintf (prop, sizeof (prop), "/%s/RightHanded", device_name);
309- right_handed = xfconf_channel_get_bool (helper->channel, prop, -1);
310+ /* add device to our list */
311+ device_data = g_new (XfcePointerDeviceData, 1);
312+ device_data->device = device;
313+ device_data->name = device_name;
314+ g_hash_table_insert (helper->pointer_devices, g_memdup (&device_info->id, sizeof(device_info->id)), device_data);
315
316- g_snprintf (prop, sizeof (prop), "/%s/ReverseScrolling", device_name);
317- reverse_scrolling = xfconf_channel_get_bool (helper->channel, prop, -1);
318+ /* catch motion event / button-press for new device */
319+ gdk_error_trap_push ();
320+ DeviceMotionNotify (device, helper->device_motion_event_type, event_classes[0]);
321+ DeviceButtonPress (device, helper->device_button_press_event_type, event_classes[1]);
322+ XSelectExtensionEvent (xdisplay, RootWindow (xdisplay, DefaultScreen (xdisplay)), event_classes, 2);
323+ if (G_UNLIKELY (gdk_error_trap_pop () != 0))
324+ g_critical ("Unable to register DeviceButtonPress/DeviceMotionNotify for %i", device_info->id);
325
326- if (right_handed != -1 || reverse_scrolling != -1)
327- {
328- xfce_pointers_helper_change_button_mapping (device_info, device, xdisplay,
329+
330+ /* read buttonmap properties */
331+ g_snprintf (prop, sizeof (prop), "/%s/RightHanded", device_name);
332+ right_handed = xfconf_channel_get_bool (helper->channel, prop, -1);
333+
334+ g_snprintf (prop, sizeof (prop), "/%s/ReverseScrolling", device_name);
335+ reverse_scrolling = xfconf_channel_get_bool (helper->channel, prop, -1);
336+
337+ if (right_handed != -1 || reverse_scrolling != -1)
338+ {
339+ xfce_pointers_helper_change_button_mapping (device_info, device, xdisplay,
340 right_handed, reverse_scrolling);
341- }
342+ }
343
344- /* read feedback settings */
345- g_snprintf (prop, sizeof (prop), "/%s/Threshold", device_name);
346- threshold = xfconf_channel_get_int (helper->channel, prop, -1);
347+ /* read feedback settings */
348+ g_snprintf (prop, sizeof (prop), "/%s/Threshold", device_name);
349+ threshold = xfconf_channel_get_int (helper->channel, prop, -1);
350
351- g_snprintf (prop, sizeof (prop), "/%s/Acceleration", device_name);
352- acceleration = xfconf_channel_get_double (helper->channel, prop, -1.00);
353+ g_snprintf (prop, sizeof (prop), "/%s/Acceleration", device_name);
354+ acceleration = xfconf_channel_get_double (helper->channel, prop, -1.00);
355
356- if (threshold != -1 || acceleration != -1.00)
357- {
358- xfce_pointers_helper_change_feedback (device_info, device, xdisplay,
359- threshold, acceleration);
360- }
361+ if (threshold != -1 || acceleration != -1.00)
362+ {
363+ xfce_pointers_helper_change_feedback (device_info, device, xdisplay,
364+ threshold, acceleration);
365+ }
366
367- /* read mode settings */
368- g_snprintf (prop, sizeof (prop), "/%s/Mode", device_name);
369- mode = xfconf_channel_get_string (helper->channel, prop, NULL);
370+ /* read mode settings */
371+ g_snprintf (prop, sizeof (prop), "/%s/Mode", device_name);
372+ mode = xfconf_channel_get_string (helper->channel, prop, NULL);
373
374- if (mode != NULL)
375- xfce_pointers_helper_change_mode (device_info, device, xdisplay, mode);
376+ if (mode != NULL)
377+ xfce_pointers_helper_change_mode (device_info, device, xdisplay, mode);
378
379 #ifdef DEVICE_PROPERTIES
380- /* set device properties */
381- g_snprintf (prop, sizeof (prop), "/%s/Properties", device_name);
382- props = xfconf_channel_get_properties (helper->channel, prop);
383+ /* set device properties */
384+ g_snprintf (prop, sizeof (prop), "/%s/Properties", device_name);
385+ props = xfconf_channel_get_properties (helper->channel, prop);
386
387- if (props != NULL)
388- {
389- pointer_data.xdisplay = xdisplay;
390- pointer_data.device = device;
391- pointer_data.device_info = device_info;
392- pointer_data.prop_name_len = strlen (prop) + 1;
393+ if (props != NULL)
394+ {
395+ pointer_data.xdisplay = xdisplay;
396+ pointer_data.device = device;
397+ pointer_data.device_info = device_info;
398+ pointer_data.prop_name_len = strlen (prop) + 1;
399
400- g_hash_table_foreach (props, xfce_pointers_helper_change_properties, &pointer_data);
401+ g_hash_table_foreach (props, xfce_pointers_helper_change_properties, &pointer_data);
402
403- g_hash_table_destroy (props);
404- }
405+ g_hash_table_destroy (props);
406+ }
407 #endif
408-
409- g_free (device_name);
410- XCloseDevice (xdisplay, device);
411+ }
412 }
413-
414 XFreeDeviceList (device_list);
415+ if (G_LIKELY (device_data != NULL))
416+ {
417+ if (helper->last_pointer_active != device_data->device->device_id)
418+ xfce_pointers_helper_change_current_device (helper, &device_data->device->device_id);
419+ }
420+ else
421+ g_critical("no device selected in xfce_pointers_helper_restore_devices");
422 }
423
424
425@@ -961,12 +1041,12 @@ xfce_pointers_helper_channel_property_changed (XfconfChannel *channel,
426 const GValue *value,
427 XfcePointersHelper *helper)
428 {
429- Display *xdisplay = GDK_DISPLAY ();
430- XDeviceInfo *device_list, *device_info;
431- XDevice *device;
432- gint n, ndevices;
433- gchar **names;
434- gchar *device_name;
435+ Display *xdisplay = GDK_DISPLAY ();
436+ XDeviceInfo *device_list, *device_info;
437+ XfcePointerDeviceData *device_data;
438+ gint n, ndevices;
439+ gchar **names;
440+ gchar *device_name;
441
442 if (G_UNLIKELY (property_name == NULL))
443 return;
444@@ -996,63 +1076,72 @@ xfce_pointers_helper_channel_property_changed (XfconfChannel *channel,
445 /* filter the pointer devices */
446 device_info = &device_list[n];
447 if (device_info->use != IsXExtensionPointer
448- || device_info->name == NULL)
449+ || device_info->name == NULL
450+ || g_str_has_prefix (device_info->name, "Virtual core XTEST"))
451 continue;
452
453 /* search the device name */
454 device_name = xfce_pointers_helper_device_xfconf_name (device_info->name);
455 if (strcmp (names[0], device_name) == 0)
456 {
457- /* open the device */
458- gdk_error_trap_push ();
459- device = XOpenDevice (xdisplay, device_info->id);
460- if (gdk_error_trap_pop () != 0 || device == NULL)
461+ /* find the device */
462+ device_data = g_hash_table_lookup (helper->pointer_devices, &device_info->id);
463+ if (device_data == NULL)
464 {
465- g_critical ("Unable to open device %s", device_info->name);
466+ g_critical ("xfce_pointers_helper_channel_property_changed: Unable to find device %s / ID %i in hash table", device_info->name, device_info->id);
467 continue;
468 }
469
470 /* check the property that requires updating */
471 if (strcmp (names[1], "RightHanded") == 0)
472 {
473- xfce_pointers_helper_change_button_mapping (device_info, device, xdisplay,
474+ xfce_pointers_helper_change_button_mapping (device_info, device_data->device, xdisplay,
475 g_value_get_boolean (value), -1);
476 }
477 else if (strcmp (names[1], "ReverseScrolling") == 0)
478 {
479- xfce_pointers_helper_change_button_mapping (device_info, device, xdisplay,
480+ xfce_pointers_helper_change_button_mapping (device_info, device_data->device, xdisplay,
481 -1, g_value_get_boolean (value));
482 }
483 else if (strcmp (names[1], "Threshold") == 0)
484 {
485- xfce_pointers_helper_change_feedback (device_info, device, xdisplay,
486+ xfce_pointers_helper_change_feedback (device_info, device_data->device, xdisplay,
487 g_value_get_int (value), -2.00);
488 }
489 else if (strcmp (names[1], "Acceleration") == 0)
490 {
491- xfce_pointers_helper_change_feedback (device_info, device, xdisplay,
492+ xfce_pointers_helper_change_feedback (device_info, device_data->device, xdisplay,
493 -2, g_value_get_double (value));
494 }
495 #ifdef DEVICE_PROPERTIES
496 else if (strcmp (names[1], "Properties") == 0)
497 {
498- xfce_pointers_helper_change_property (device_info, device, xdisplay,
499+ xfce_pointers_helper_change_property (device_info, device_data->device, xdisplay,
500 names[2], value);
501 }
502 #endif
503 else if (strcmp (names[1], "Mode") == 0)
504 {
505- xfce_pointers_helper_change_mode (device_info, device, xdisplay,
506+ xfce_pointers_helper_change_mode (device_info, device_data->device, xdisplay,
507 g_value_get_string (value));
508 }
509+ else if (strcmp (names[1], "TouchscreenPointer") == 0)
510+ {
511+ /* only hide if the current device's property was changed */
512+ if (device_info->id == helper->last_pointer_active)
513+ {
514+ if (G_LIKELY (G_IS_OBJECT (helper->xsettings_helper)))
515+ g_object_set_property (helper->xsettings_helper, "touchscreen-pointer", value);
516+ else
517+ g_critical ("xsettings_helper was not properly set");
518+ }
519+ }
520 else
521 {
522 g_warning ("Unknown property %s set for device %s",
523 property_name, device_info->name);
524 }
525
526- XCloseDevice (xdisplay, device);
527-
528 /* stop searching */
529 n = ndevices;
530 }
531@@ -1068,26 +1157,44 @@ xfce_pointers_helper_channel_property_changed (XfconfChannel *channel,
532
533
534
535-#ifdef DEVICE_HOTPLUGGING
536 static GdkFilterReturn
537 xfce_pointers_helper_event_filter (GdkXEvent *xevent,
538 GdkEvent *gdk_event,
539 gpointer user_data)
540 {
541+ XDevicePresenceNotifyEvent *dpn_event;
542 XEvent *event = xevent;
543- XDevicePresenceNotifyEvent *dpn_event = xevent;
544 XfcePointersHelper *helper = XFCE_POINTERS_HELPER (user_data);
545
546- if (event->type == helper->device_presence_event_type)
547+ /* Comparison for device changed is done here redundantly to prevent call
548+ * on every mouse move.
549+ */
550+ if (event->type == helper->device_motion_event_type
551+ && helper->last_pointer_active != ((XDeviceMotionEvent*)xevent)->deviceid)
552+ xfce_pointers_helper_change_current_device (helper, &((XDeviceMotionEvent*)xevent)->deviceid);
553+ else if (event->type == helper->device_button_press_event_type
554+ && helper->last_pointer_active != ((XDeviceButtonEvent*)xevent)->deviceid)
555+ xfce_pointers_helper_change_current_device (helper, &((XDeviceButtonEvent*)xevent)->deviceid);
556+
557+#ifdef DEVICE_HOTPLUGGING
558+ /* handle device add/remove */
559+ else if (event->type == helper->device_presence_event_type)
560 {
561+ dpn_event = xevent;
562 /* restore device settings */
563 if (dpn_event->devchange == DeviceAdded)
564 xfce_pointers_helper_restore_devices (helper, &dpn_event->deviceid);
565+ else if(dpn_event->devchange == DeviceRemoved)
566+ /* we could try to find a remaining pointer to set that as active
567+ * one but that might not fit and as soon as the user works with
568+ * another pointer we are changing to correct one.
569+ */
570+ g_hash_table_remove (helper->pointer_devices, &dpn_event->deviceid);
571
572 /* check if we need to launch syndaemon */
573 xfce_pointers_helper_syndaemon_check (helper);
574 }
575+#endif
576
577 return GDK_FILTER_CONTINUE;
578 }
579-#endif
580--
5811.7.6.5
582
diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/invisible b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/invisible
new file mode 100644
index 000000000..ef4d9aadb
--- /dev/null
+++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/invisible
Binary files differ
diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/wait b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/wait
new file mode 100644
index 000000000..8b9ac7e20
--- /dev/null
+++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/wait
Binary files differ
diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.10.0.bb b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.10.0.bb
index 7075e2a53..9b6205b2d 100644
--- a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.10.0.bb
+++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.10.0.bb
@@ -3,15 +3,29 @@ SECTION = "x11/wm"
3LICENSE = "GPLv2" 3LICENSE = "GPLv2"
4LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" 4LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
5DEPENDS = "exo garcon gtk+ libxfce4util libxfce4ui xfconf dbus-glib libxi virtual/libx11 xrandr libnotify libxcursor libxklavier" 5DEPENDS = "exo garcon gtk+ libxfce4util libxfce4ui xfconf dbus-glib libxi virtual/libx11 xrandr libnotify libxcursor libxklavier"
6PR = "r1" 6PR = "r2"
7 7
8inherit xfce 8inherit xfce
9 9
10SRC_URI += "file://0001-xsettings.xml-remove-trouble-causing-comment.patch \ 10SRC_URI += "file://0001-xsettings.xml-remove-trouble-causing-comment.patch \
11 file://0002-xsettings.xml-Set-default-themes.patch" 11 file://0002-xsettings.xml-Set-default-themes.patch \
12 file://touchscreen/invisible \
13 file://touchscreen/wait \
14 file://touchscreen/0001-add-cursor-theme-xfce-invisible.patch \
15 file://touchscreen/0002-mouse-settings-dialog-add-touchscreen-pointer-option.patch \
16 file://touchscreen/0003-XfcePointersHelper-gets-a-pointer-to-XfceXSettingsHe.patch \
17 file://touchscreen/0004-XfceXSettingsHelper-gets-a-property-touchscreen-poin.patch \
18 file://touchscreen/0005-pointers-detect-a-change-of-pointer-device-used-and-.patch \
19"
12SRC_URI[md5sum] = "cc4dd9179ead9046c056431f01a12000" 20SRC_URI[md5sum] = "cc4dd9179ead9046c056431f01a12000"
13SRC_URI[sha256sum] = "0843f09ba9673f1d1b5df8dce4a17b63c183a9ba3be75fb6ef99a67fc8c1f77e" 21SRC_URI[sha256sum] = "0843f09ba9673f1d1b5df8dce4a17b63c183a9ba3be75fb6ef99a67fc8c1f77e"
14 22
15FILES_${PN} += "${libdir}/xfce4" 23FILES_${PN} += "${libdir}/xfce4"
16 24
25do_install_prepend() {
26 # somehow binary files are not patched correctly by oe-patch - so copy them
27 cp ${WORKDIR}/touchscreen/invisible ${S}/cursors
28 cp ${WORKDIR}/touchscreen/wait ${S}/cursors
29}
30
17RRECOMMENDS_${PN} += "gnome-icon-theme" 31RRECOMMENDS_${PN} += "gnome-icon-theme"