diff options
Diffstat (limited to 'meta-xfce/recipes-xfce')
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 0000000000..9272081f01 --- /dev/null +++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0001-add-cursor-theme-xfce-invisible.patch @@ -0,0 +1,248 @@ +From 4be18d7c8f2ac72b402dcbe8385922638fcd0a89 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com> +Date: Tue, 30 Oct 2012 13:14:11 +0100 +Subject: [PATCH 1/5] add cursor-theme "xfce-invisible" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com> +Upstream-Status: Submitted [1] +[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474 +--- + Makefile.am | 1 + + configure.ac | 2 + + cursors/Makefile.am | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++ + cursors/index.theme | 3 + + 6 files changed, 184 insertions(+), 0 deletions(-) + create mode 100644 cursors/Makefile.am + create mode 100644 cursors/index.theme + +diff --git a/Makefile.am b/Makefile.am +index 3060bac..3f0dd1d 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,6 +1,7 @@ + # $Id$ + + SUBDIRS = \ ++ cursors \ + dialogs \ + xfce4-settings-manager \ + xfce4-settings-editor \ +diff --git a/configure.ac b/configure.ac +index 0e7907d..1378049 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -157,6 +157,7 @@ dnl *** Optional support for Xcursor *** + dnl ************************************ + XDT_CHECK_OPTIONAL_PACKAGE([XCURSOR], [xcursor], [1.1.0], + [xcursor], [Cursor themes support]) ++AC_SUBST(cursordir, "\${datadir}/icons/xfce-invisible/cursors") + + dnl **************************************** + dnl *** Optional support for Libxklavier *** +@@ -232,6 +233,7 @@ AC_SUBST([PLATFORM_LDFLAGS]) + AC_OUTPUT([ + Makefile + po/Makefile.in ++cursors/Makefile + dialogs/Makefile + dialogs/appearance-settings/Makefile + dialogs/accessibility-settings/Makefile +diff --git a/cursors/Makefile.am b/cursors/Makefile.am +new file mode 100644 +index 0000000..c9e5a9f +--- /dev/null ++++ b/cursors/Makefile.am +@@ -0,0 +1,178 @@ ++CURSOR_NAMES_INVISIBLE = \ ++ 00008160000006810000408080010102 \ ++ 028006030e0e7ebffc7f7070c0600140 \ ++ 2870a09082c103050810ffdffffe0204 \ ++ 03b6e0fcb3499374a867c041f52298f0 \ ++ 0876e1c15ff2fc01f906f1c363074c0f \ ++ 08ffe1cb5fe6fc01f906f1c063814ccf \ ++ 08ffe1e65f80fcfdf9fff11263e74c48 \ ++ 1001208387f90000800003000700f6ff \ ++ 1081e37283d90000800003c07f3ef6bf \ ++ 14fef782d02440884392942c11205230 \ ++ 208530c400c041818281048008011002 \ ++ 3085a0e285430894940527032f8b26df \ ++ 4498f0e0c1937ffe01fd06f973665830 \ ++ 5aca4d189052212118709018842178c0 \ ++ 5c6cd98b3f3ebcb1f9c7f1c204630408 \ ++ 6407b0e94181790501fd1e167b474872 \ ++ 640fb0e74195791501fd1ed57b41487f \ ++ 9081237383d90e509aa00f00170e968f \ ++ 9d800788f1b08800ae810202380a0822 \ ++ a2a266d0498c3104214a47bd64ab0fc8 \ ++ b66166c04f8c3109214a4fbd64a50fc8 \ ++ c7088f0f3e6c8088236ef8e1e3e70000 \ ++ d9ce0ab605698f320427677b458ad60b \ ++ e29285e634086352946a0e7090d73106 \ ++ f41c0e382c94c0958e07017e42b00462 \ ++ f41c0e382c97c0938e07017e42800402 \ ++ fcf1c3c7cd4491d801f1e1c78f100000 \ ++ fcf21c00b30f7e3f83fe0dfd12e71cff \ ++ alias \ ++ all-scroll \ ++ arrow \ ++ base_arrow_down \ ++ base_arrow_up \ ++ based_arrow_down \ ++ based_arrow_up \ ++ bd_double_arrow \ ++ boat \ ++ bottom_left_corner \ ++ bottom_right_corner \ ++ bottom_side \ ++ bottom_tee \ ++ cell \ ++ center_ptr \ ++ circle \ ++ closedhand \ ++ color-picker \ ++ col-resize \ ++ copy \ ++ cross \ ++ cross_reverse \ ++ crossed_circle \ ++ crosshair \ ++ default \ ++ diamond_cross \ ++ dnd-ask \ ++ dnd-copy \ ++ dnd-link \ ++ dnd-move \ ++ dnd-no-drop \ ++ dnd-none \ ++ dot \ ++ dot_box_mask \ ++ dotbox \ ++ double_arrow \ ++ down_arrow \ ++ draft_large \ ++ draft_small \ ++ draped_box \ ++ e-resize \ ++ ew-resize \ ++ exchange \ ++ fd_double_arrow \ ++ fleur \ ++ forbidden \ ++ grab \ ++ grabbing \ ++ gumby \ ++ h_double_arrow \ ++ hand \ ++ hand1 \ ++ hand2 \ ++ help \ ++ ibeam \ ++ icon \ ++ left_arrow \ ++ left_ptr \ ++ left_side \ ++ left_tee \ ++ link \ ++ ll_angle \ ++ lr_angle \ ++ move \ ++ ne-resize \ ++ nesw-resize \ ++ no-drop \ ++ not-allowed \ ++ n-resize \ ++ ns-resize \ ++ nw-resize \ ++ nwse-resize \ ++ openhand \ ++ pencil \ ++ pirate \ ++ plus \ ++ pointer \ ++ pointing_hand \ ++ question_arrow \ ++ right_arrow \ ++ right_ptr \ ++ right_side \ ++ right_tee \ ++ row-resize \ ++ sailboat \ ++ sb_down_arrow \ ++ sb_h_double_arrow \ ++ sb_left_arrow \ ++ sb_right_arrow \ ++ sb_up_arrow \ ++ sb_v_double_arrow \ ++ se-resize \ ++ size_all \ ++ size_bdiag \ ++ size_fdiag \ ++ size_hor \ ++ size_ver \ ++ sizing \ ++ shuttle \ ++ split_h \ ++ split_v \ ++ s-resize \ ++ sw-resize \ ++ target \ ++ tcross \ ++ text \ ++ top_left_arrow \ ++ top_left_corner \ ++ top_right_corner \ ++ top_side \ ++ top_tee \ ++ trek \ ++ ul_angle \ ++ up_arrow \ ++ ur_angle \ ++ vertical-text \ ++ v_double_arrow \ ++ whats_this \ ++ w-resize \ ++ X_cursor \ ++ xterm \ ++ zoom-in \ ++ zoom-out ++ ++CURSOR_NAMES = \ ++ 3ecb610c1bf2410f44200f48c40d3599 \ ++ 08e8e1c95fe2fc01f976f1e063a24ccd \ ++ 00000000000000020006000e7e9ffc3f \ ++ half-busy \ ++ left_ptr_watch \ ++ progress \ ++ watch ++ ++ ++EXTRA_DIST = invisible wait index.theme ++ ++install-data-local: ++ $(mkinstalldirs) $(DESTDIR)@cursordir@; ++ $(INSTALL_DATA) index.theme $(DESTDIR)/@cursordir@/.. ++ $(INSTALL_DATA) invisible wait $(DESTDIR)@cursordir@/ ++ for CURSOR in $(CURSOR_NAMES_INVISIBLE); do \ ++ echo '-- Installing invisible cursor '$$CURSOR; \ ++ ln -s invisible $(DESTDIR)@cursordir@/$$CURSOR; \ ++ done ++ for CURSOR in $(CURSOR_NAMES); do \ ++ echo '-- Installing visible cursor '$$CURSOR; \ ++ ln -s wait $(DESTDIR)@cursordir@/$$CURSOR; \ ++ done ++ +diff --git a/cursors/index.theme b/cursors/index.theme +new file mode 100644 +index 0000000..0c48458 +--- /dev/null ++++ b/cursors/index.theme +@@ -0,0 +1,3 @@ ++[Icon Theme] ++Name=xfce-invisible ++Example=invisible +-- +1.7.6.5 + 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 0000000000..4151c3d784 --- /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 @@ +From 7c87f8f202a7743a18b8d7fdab5c66a3d54badd5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com> +Date: Thu, 1 Nov 2012 21:01:59 +0100 +Subject: [PATCH 2/5] mouse settings dialog: add touchscreen-pointer option +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + +Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com> +Upstream-Status: Submitted [1] +[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474 +--- + dialogs/mouse-settings/main.c | 56 +++++++++++++++++++++++++++++ + dialogs/mouse-settings/mouse-dialog.glade | 28 ++++++++++++++- + dialogs/mouse-settings/mouse-dialog_ui.h | 1056 +++++++++++++++--------------- + 3 files changed, 422 insertions(+), 329 deletions(-) + +diff --git a/dialogs/mouse-settings/main.c b/dialogs/mouse-settings/main.c +index f4b475b..ff08219 100644 +--- a/dialogs/mouse-settings/main.c ++++ b/dialogs/mouse-settings/main.c +@@ -956,6 +956,50 @@ mouse_settings_device_set_enabled (GtkToggleButton *button, + + + ++#ifdef HAVE_XCURSOR ++static void ++mouse_settings_on_touchscreen_pointer (GtkToggleButton *button, ++ GtkBuilder *builder) ++{ ++ gchar *name = NULL; ++ gchar *prop; ++ gboolean enabled; ++ ++ if (locked > 0) ++ return; ++ ++ if (mouse_settings_device_get_selected (builder, NULL, &name)) ++ { ++ enabled = gtk_toggle_button_get_active (button); ++ prop = g_strconcat ("/", name, "/TouchscreenPointer", NULL); ++ xfconf_channel_set_bool (pointers_channel, prop, enabled); ++ g_free (prop); ++ } ++ g_free (name); ++} ++ ++static void ++mouse_settings_set_touchscreen_pointer (GtkBuilder *builder) ++{ ++ gchar *name = NULL; ++ gchar *prop; ++ gboolean enabled; ++ GtkToggleButton *button; ++ ++ if (mouse_settings_device_get_selected (builder, NULL, &name)) ++ { ++ button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "touchscreen-pointer")); ++ prop = g_strconcat ("/", name, "/TouchscreenPointer", NULL); ++ enabled = xfconf_channel_get_bool (pointers_channel, prop, FALSE); ++ gtk_toggle_button_set_active (button, enabled); ++ g_free (prop); ++ } ++ g_free (name); ++} ++#endif ++ ++ ++ + static void + mouse_settings_device_selection_changed (GtkBuilder *builder) + { +@@ -1007,6 +1051,9 @@ mouse_settings_device_selection_changed (GtkBuilder *builder) + /* get the selected item */ + if (mouse_settings_device_get_selected (builder, &device, NULL)) + { ++#ifdef HAVE_XCURSOR ++ mouse_settings_set_touchscreen_pointer (builder); ++#endif + gdk_error_trap_push (); + device_info = XListInputDevices (xdisplay, &ndevices); + if (gdk_error_trap_pop () == 0 && device_info != NULL) +@@ -1735,11 +1782,20 @@ main (gint argc, gchar **argv) + /* populate the themes treeview */ + mouse_settings_themes_populate_store (builder); + ++ /* connect & fill touchscreen-pointer */ ++ object = gtk_builder_get_object (builder, "touchscreen-pointer"); ++ g_signal_connect (G_OBJECT (object), "toggled", ++ G_CALLBACK (mouse_settings_on_touchscreen_pointer), builder); ++ mouse_settings_set_touchscreen_pointer (builder); ++ + /* connect the cursor size in the cursor tab */ + object = gtk_builder_get_object (builder, "theme-cursor-size"); + xfconf_g_property_bind (xsettings_channel, "/Gtk/CursorThemeSize", + G_TYPE_INT, G_OBJECT (object), "value"); + #else ++ /* hide touchscreen-pointer */ ++ object = gtk_builder_get_object (builder, "touchscreen-pointer"); ++ gtk_widget_hide (GTK_WIDGET (object)); + /* hide the themes tab */ + object = gtk_builder_get_object (builder, "themes-hbox"); + gtk_widget_hide (GTK_WIDGET (object)); +diff --git a/dialogs/mouse-settings/mouse-dialog.glade b/dialogs/mouse-settings/mouse-dialog.glade +index d3aab0d..573c551 100644 +--- a/dialogs/mouse-settings/mouse-dialog.glade ++++ b/dialogs/mouse-settings/mouse-dialog.glade +@@ -323,7 +323,7 @@ + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">6</property> +- <property name="n_rows">3</property> ++ <property name="n_rows">4</property> + <property name="n_columns">2</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> +@@ -415,6 +415,32 @@ + <property name="bottom_attach">3</property> + </packing> + </child> ++ <child> ++ <object class="GtkAlignment" id="alignment8"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="xalign">0</property> ++ <property name="xscale">0</property> ++ <property name="yscale">0</property> ++ <child> ++ <object class="GtkCheckButton" id="touchscreen-pointer"> ++ <property name="label" translatable="yes">_Touchscreen pointer</property> ++ <property name="use_action_appearance">False</property> ++ <property name="visible">True</property> ++ <property name="can_focus">True</property> ++ <property name="receives_default">False</property> ++ <property name="tooltip_text" translatable="yes">When selected, no mouse pointer is displayed for this device and gtk TouchscreenMode is activated</property> ++ <property name="use_underline">True</property> ++ <property name="draw_indicator">True</property> ++ </object> ++ </child> ++ </object> ++ <packing> ++ <property name="right_attach">2</property> ++ <property name="top_attach">3</property> ++ <property name="bottom_attach">4</property> ++ </packing> ++ </child> + </object> + </child> + </object> +diff --git a/dialogs/mouse-settings/mouse-dialog_ui.h b/dialogs/mouse-settings/mouse-dialog_ui.h +index 9e0c267..8a68c3b 100644 +--- a/dialogs/mouse-settings/mouse-dialog_ui.h ++++ b/dialogs/mouse-settings/mouse-dialog_ui.h +@@ -31,545 +31,555 @@ static const char mouse_dialog_ui[] = + "</property></object><object class=\"GtkImage\" id=\"image5\"><property " + "name=\"visible\">True</property><property name=\"can_focus\">False</pro" + "perty><property name=\"stock\">gtk-revert-to-saved</property></object><" +- "object class=\"XfceTitledDialog\" id=\"mouse-dialog\"><property name=\"" +- "can_focus\">False</property><property name=\"title\" translatable=\"yes" +- "\">Mouse and Touchpad</property><property name=\"window_position\">cent" +- "er-on-parent</property><property name=\"icon_name\">preferences-desktop" +- "-peripherals</property><property name=\"type_hint\">dialog</property><p" +- "roperty name=\"subtitle\" translatable=\"yes\">Configure pointer device" +- " behavior and appearance</property><child internal-child=\"vbox\"><obje" +- "ct class=\"GtkVBox\" id=\"dialog-vbox1\"><property name=\"visible\">Tru" +- "e</property><property name=\"can_focus\">False</property><property name" +- "=\"spacing\">2</property><child internal-child=\"action_area\"><object " +- "class=\"GtkHButtonBox\" id=\"dialog-action_area1\"><property name=\"vis" +- "ible\">True</property><property name=\"can_focus\">False</property><pro" +- "perty name=\"layout_style\">end</property><child><object class=\"GtkBut" +- "ton\" id=\"button1\"><property name=\"label\">gtk-close</property><prop" +- "erty name=\"visible\">True</property><property name=\"can_focus\">True<" +- "/property><property name=\"receives_default\">True</property><property " +- "name=\"use_action_appearance\">False</property><property name=\"use_sto" +- "ck\">True</property></object><packing><property name=\"expand\">False</" +- "property><property name=\"fill\">False</property><property name=\"posit" +- "ion\">0</property></packing></child><child><object class=\"GtkButton\" " +- "id=\"button2\"><property name=\"label\">gtk-help</property><property na" +- "me=\"use_action_appearance\">False</property><property name=\"visible\"" +- ">True</property><property name=\"can_focus\">True</property><property n" +- "ame=\"receives_default\">True</property><property name=\"use_stock\">Tr" +- "ue</property></object><packing><property name=\"expand\">False</propert" +- "y><property name=\"fill\">False</property><property name=\"position\">0" +- "</property><property name=\"secondary\">True</property></packing></chil" +- "d></object><packing><property name=\"expand\">False</property><property" +- " name=\"fill\">True</property><property name=\"pack_type\">end</propert" +- "y><property name=\"position\">0</property></packing></child><child><obj" +- "ect class=\"GtkNotebook\" id=\"plug-child\"><property name=\"visible\">" +- "True</property><property name=\"can_focus\">True</property><property na" +- "me=\"border_width\">6</property><child><object class=\"GtkVBox\" id=\"v" +- "box1\"><property name=\"visible\">True</property><property name=\"can_f" +- "ocus\">False</property><property name=\"border_width\">12</property><pr" +- "operty name=\"spacing\">6</property><child><object class=\"GtkHBox\" id" +- "=\"hbox1\"><property name=\"visible\">True</property><property name=\"c" +- "an_focus\">False</property><property name=\"spacing\">12</property><chi" +- "ld><object class=\"GtkLabel\" id=\"label7\"><property name=\"visible\">" +- "True</property><property name=\"can_focus\">False</property><property n" +- "ame=\"label\" translatable=\"yes\">De_vice:</property><property name=\"" +- "use_underline\">True</property><property name=\"mnemonic_widget\">devic" +- "e-combobox</property><property name=\"angle\">0.050000000000000003</pro" +- "perty></object><packing><property name=\"expand\">False</property><prop" +- "erty name=\"fill\">True</property><property name=\"position\">0</proper" +- "ty></packing></child><child><object class=\"GtkComboBox\" id=\"device-c" +- "ombobox\"><property name=\"visible\">True</property><property name=\"ca" +- "n_focus\">False</property></object><packing><property name=\"expand\">T" +- "rue</property><property name=\"fill\">True</property><property name=\"p" +- "osition\">1</property></packing></child></object><packing><property nam" +- "e=\"expand\">False</property><property name=\"fill\">True</property><pr" +- "operty name=\"position\">0</property></packing></child><child><object c" +- "lass=\"GtkCheckButton\" id=\"device-enabled\"><property name=\"label\" " +- "translatable=\"yes\">_Enable this device</property><property name=\"vis" +- "ible\">True</property><property name=\"can_focus\">True</property><prop" +- "erty name=\"receives_default\">False</property><property name=\"use_act" +- "ion_appearance\">False</property><property name=\"use_underline\">True<" +- "/property><property name=\"draw_indicator\">True</property></object><pa" +- "cking><property name=\"expand\">False</property><property name=\"fill\"" +- ">True</property><property name=\"position\">1</property></packing></chi" +- "ld><child><object class=\"GtkNotebook\" id=\"device-notebook\"><propert" +- "y name=\"visible\">True</property><property name=\"can_focus\">True</pr" +- "operty><child><object class=\"GtkVBox\" id=\"device-box\"><property nam" +- "e=\"visible\">True</property><property name=\"can_focus\">False</proper" +- "ty><property name=\"border_width\">6</property><property name=\"spacing" +- "\">6</property><child><object class=\"GtkFrame\" id=\"frame1\"><propert" +- "y name=\"visible\">True</property><property name=\"can_focus\">False</p" +- "roperty><property name=\"label_xalign\">0</property><property name=\"sh" +- "adow_type\">none</property><child><object class=\"GtkAlignment\" id=\"a" +- "lignment1\"><property name=\"visible\">True</property><property name=\"" +- "can_focus\">False</property><property name=\"left_padding\">12</propert" +- "y><child><object class=\"GtkVBox\" id=\"vbox12\"><property name=\"visib" +- "le\">True</property><property name=\"can_focus\">False</property><prope" +- "rty name=\"border_width\">6</property><property name=\"spacing\">6</pro" +- "perty><child><object class=\"GtkHBox\" id=\"hbox3\"><property name=\"vi" +- "sible\">True</property><property name=\"can_focus\">False</property><pr" +- "operty name=\"spacing\">12</property><child><object class=\"GtkRadioBut" +- "ton\" id=\"device-right-handed\"><property name=\"label\" translatable=" +- "\"yes\">_Right-handed</property><property name=\"visible\">True</proper" +- "ty><property name=\"can_focus\">True</property><property name=\"receive" +- "s_default\">False</property><property name=\"use_action_appearance\">Fa" +- "lse</property><property name=\"use_underline\">True</property><property" +- " name=\"active\">True</property><property name=\"draw_indicator\">True<" +- "/property></object><packing><property name=\"expand\">False</property><" +- "property name=\"fill\">True</property><property name=\"position\">0</pr" +- "operty></packing></child><child><object class=\"GtkRadioButton\" id=\"d" +- "evice-left-handed\"><property name=\"label\" translatable=\"yes\">_Left" +- "-handed</property><property name=\"visible\">True</property><property n" +- "ame=\"can_focus\">True</property><property name=\"receives_default\">Fa" +- "lse</property><property name=\"use_action_appearance\">False</property>" +- "<property name=\"use_underline\">True</property><property name=\"draw_i" +- "ndicator\">True</property><property name=\"group\">device-right-handed<" +- "/property></object><packing><property name=\"expand\">False</property><" +- "property name=\"fill\">True</property><property name=\"position\">1</pr" +- "operty></packing></child></object><packing><property name=\"expand\">Tr" +- "ue</property><property name=\"fill\">True</property><property name=\"po" +- "sition\">0</property></packing></child><child><object class=\"GtkCheckB" +- "utton\" id=\"device-reverse-scrolling\"><property name=\"label\" transl" +- "atable=\"yes\">Reverse scroll d_irection</property><property name=\"vis" +- "ible\">True</property><property name=\"can_focus\">True</property><prop" +- "erty name=\"receives_default\">False</property><property name=\"tooltip" +- "_text\" translatable=\"yes\">When selected, the scroll wheel will work " +- "in the opposite direction</property><property name=\"use_action_appeara" +- "nce\">False</property><property name=\"use_underline\">True</property><" +- "property name=\"draw_indicator\">True</property></object><packing><prop" +- "erty name=\"expand\">True</property><property name=\"fill\">True</prope" +- "rty><property name=\"position\">1</property></packing></child></object>" +- "</child></object></child><child type=\"label\"><object class=\"GtkLabel" +- "\" id=\"label14\"><property name=\"visible\">True</property><property n" +- "ame=\"can_focus\">False</property><property name=\"label\" translatable" +- "=\"yes\">Buttons</property><attributes><attribute name=\"weight\" value" +- "=\"bold\"/></attributes></object></child></object><packing><property na" +- "me=\"expand\">False</property><property name=\"fill\">True</property><p" +- "roperty name=\"position\">0</property></packing></child><child><object " +- "class=\"GtkFrame\" id=\"frame2\"><property name=\"visible\">True</prope" +- "rty><property name=\"can_focus\">False</property><property name=\"label" +- "_xalign\">0</property><property name=\"shadow_type\">none</property><ch" +- "ild><object class=\"GtkAlignment\" id=\"alignment2\"><property name=\"v" ++ "object class=\"GtkListStore\" id=\"synaptics-scroll-store\"><columns><c" ++ "olumn type=\"gchararray\"/><column type=\"gboolean\"/></columns><data><" ++ "row><col id=\"0\" translatable=\"yes\">Disabled</col><col id=\"1\">True" ++ "</col></row><row><col id=\"0\" translatable=\"yes\">Edge scrolling</col" ++ "><col id=\"1\">True</col></row><row><col id=\"0\" translatable=\"yes\">" ++ "Two-finger scrolling</col><col id=\"1\">True</col></row><row><col id=\"" ++ "0\" translatable=\"yes\">Circular scrolling</col><col id=\"1\">True</co" ++ "l></row></data></object><object class=\"GtkAdjustment\" id=\"theme-curs" ++ "or-size\"><property name=\"lower\">16</property><property name=\"upper\"" ++ ">48</property><property name=\"value\">24</property><property name=\"st" ++ "ep_increment\">1</property><property name=\"page_increment\">11</proper" ++ "ty></object><object class=\"XfceTitledDialog\" id=\"mouse-dialog\"><pro" ++ "perty name=\"can_focus\">False</property><property name=\"title\" trans" ++ "latable=\"yes\">Mouse and Touchpad</property><property name=\"window_po" ++ "sition\">center-on-parent</property><property name=\"icon_name\">prefer" ++ "ences-desktop-peripherals</property><property name=\"type_hint\">dialog" ++ "</property><property name=\"subtitle\" translatable=\"yes\">Configure p" ++ "ointer device behavior and appearance</property><child internal-child=\"" ++ "vbox\"><object class=\"GtkVBox\" id=\"dialog-vbox1\"><property name=\"v" + "isible\">True</property><property name=\"can_focus\">False</property><p" +- "roperty name=\"left_padding\">12</property><child><object class=\"GtkTa" +- "ble\" id=\"table1\"><property name=\"visible\">True</property><property" +- " name=\"can_focus\">False</property><property name=\"border_width\">6</" +- "property><property name=\"n_rows\">3</property><property name=\"n_colum" +- "ns\">2</property><property name=\"column_spacing\">12</property><proper" +- "ty name=\"row_spacing\">6</property><child><object class=\"GtkLabel\" i" +- "d=\"device-acceleration-label\"><property name=\"visible\">True</proper" +- "ty><property name=\"can_focus\">False</property><property name=\"xalign" +- "\">0</property><property name=\"label\" translatable=\"yes\">_Accelerat" +- "ion:</property><property name=\"use_underline\">True</property><propert" +- "y name=\"mnemonic_widget\">device-acceleration-scale</property></object" +- "><packing><property name=\"x_options\">GTK_FILL</property><property nam" +- "e=\"y_options\">GTK_FILL</property></packing></child><child><object cla" +- "ss=\"GtkHScale\" id=\"device-acceleration-scale\"><property name=\"visi" +- "ble\">True</property><property name=\"can_focus\">True</property><prope" +- "rty name=\"tooltip_text\" translatable=\"yes\">The factor at which the " +- "pointer\'s speed will increase as the mouse is moved</property><propert" +- "y name=\"update_policy\">delayed</property><property name=\"adjustment\"" +- ">device-acceleration</property><property name=\"round_digits\">1</prope" +- "rty><property name=\"value_pos\">right</property></object><packing><pro" +- "perty name=\"left_attach\">1</property><property name=\"right_attach\">" +- "2</property></packing></child><child><object class=\"GtkHScale\" id=\"d" +- "evice-threshold-scale\"><property name=\"visible\">True</property><prop" +- "erty name=\"can_focus\">True</property><property name=\"tooltip_text\" " +- "translatable=\"yes\">The number of pixels the pointer must move in a sh" +- "ort time before it starts accelerating</property><property name=\"updat" +- "e_policy\">delayed</property><property name=\"adjustment\">device-thres" +- "hold</property><property name=\"round_digits\">0</property><property na" +- "me=\"digits\">0</property><property name=\"value_pos\">right</property>" +- "</object><packing><property name=\"left_attach\">1</property><property " +- "name=\"right_attach\">2</property><property name=\"top_attach\">1</prop" +- "erty><property name=\"bottom_attach\">2</property></packing></child><ch" +- "ild><object class=\"GtkLabel\" id=\"device-threshold-label\"><property " ++ "roperty name=\"spacing\">2</property><child internal-child=\"action_are" ++ "a\"><object class=\"GtkHButtonBox\" id=\"dialog-action_area1\"><propert" ++ "y name=\"visible\">True</property><property name=\"can_focus\">False</p" ++ "roperty><property name=\"layout_style\">end</property><child><object cl" ++ "ass=\"GtkButton\" id=\"button2\"><property name=\"label\">gtk-help</pro" ++ "perty><property name=\"use_action_appearance\">False</property><propert" ++ "y name=\"visible\">True</property><property name=\"can_focus\">True</pr" ++ "operty><property name=\"receives_default\">True</property><property nam" ++ "e=\"use_stock\">True</property></object><packing><property name=\"expan" ++ "d\">False</property><property name=\"fill\">False</property><property n" ++ "ame=\"position\">0</property><property name=\"secondary\">True</propert" ++ "y></packing></child><child><object class=\"GtkButton\" id=\"button1\"><" ++ "property name=\"label\">gtk-close</property><property name=\"use_action" ++ "_appearance\">False</property><property name=\"visible\">True</property" ++ "><property name=\"can_focus\">True</property><property name=\"receives_" ++ "default\">True</property><property name=\"use_stock\">True</property></" ++ "object><packing><property name=\"expand\">False</property><property nam" ++ "e=\"fill\">False</property><property name=\"position\">0</property></pa" ++ "cking></child></object><packing><property name=\"expand\">False</proper" ++ "ty><property name=\"fill\">True</property><property name=\"pack_type\">" ++ "end</property><property name=\"position\">0</property></packing></child" ++ "><child><object class=\"GtkNotebook\" id=\"plug-child\"><property name=" ++ "\"visible\">True</property><property name=\"can_focus\">True</property>" ++ "<property name=\"border_width\">6</property><child><object class=\"GtkV" ++ "Box\" id=\"vbox1\"><property name=\"visible\">True</property><property " ++ "name=\"can_focus\">False</property><property name=\"border_width\">12</" ++ "property><property name=\"spacing\">6</property><child><object class=\"" ++ "GtkHBox\" id=\"hbox1\"><property name=\"visible\">True</property><prope" ++ "rty name=\"can_focus\">False</property><property name=\"spacing\">12</p" ++ "roperty><child><object class=\"GtkLabel\" id=\"label7\"><property name=" ++ "\"visible\">True</property><property name=\"can_focus\">False</property" ++ "><property name=\"label\" translatable=\"yes\">De_vice:</property><prop" ++ "erty name=\"use_underline\">True</property><property name=\"mnemonic_wi" ++ "dget\">device-combobox</property><property name=\"angle\">0.05000000000" ++ "0000003</property></object><packing><property name=\"expand\">False</pr" ++ "operty><property name=\"fill\">True</property><property name=\"position" ++ "\">0</property></packing></child><child><object class=\"GtkComboBox\" i" ++ "d=\"device-combobox\"><property name=\"visible\">True</property><proper" ++ "ty name=\"can_focus\">False</property></object><packing><property name=" ++ "\"expand\">True</property><property name=\"fill\">True</property><prope" ++ "rty name=\"position\">1</property></packing></child></object><packing><" ++ "property name=\"expand\">False</property><property name=\"fill\">True</" ++ "property><property name=\"position\">0</property></packing></child><chi" ++ "ld><object class=\"GtkCheckButton\" id=\"device-enabled\"><property nam" ++ "e=\"label\" translatable=\"yes\">_Enable this device</property><propert" ++ "y name=\"use_action_appearance\">False</property><property name=\"visib" ++ "le\">True</property><property name=\"can_focus\">True</property><proper" ++ "ty name=\"receives_default\">False</property><property name=\"use_under" ++ "line\">True</property><property name=\"draw_indicator\">True</property>" ++ "</object><packing><property name=\"expand\">False</property><property n" ++ "ame=\"fill\">True</property><property name=\"position\">1</property></p" ++ "acking></child><child><object class=\"GtkNotebook\" id=\"device-noteboo" ++ "k\"><property name=\"visible\">True</property><property name=\"can_focu" ++ "s\">True</property><child><object class=\"GtkVBox\" id=\"device-box\"><" ++ "property name=\"visible\">True</property><property name=\"can_focus\">F" ++ "alse</property><property name=\"border_width\">6</property><property na" ++ "me=\"spacing\">6</property><child><object class=\"GtkFrame\" id=\"frame" ++ "1\"><property name=\"visible\">True</property><property name=\"can_focu" ++ "s\">False</property><property name=\"label_xalign\">0</property><proper" ++ "ty name=\"shadow_type\">none</property><child><object class=\"GtkAlignm" ++ "ent\" id=\"alignment1\"><property name=\"visible\">True</property><prop" ++ "erty name=\"can_focus\">False</property><property name=\"left_padding\"" ++ ">12</property><child><object class=\"GtkVBox\" id=\"vbox12\"><property " + "name=\"visible\">True</property><property name=\"can_focus\">False</pro" +- "perty><property name=\"xalign\">0</property><property name=\"label\" tr" +- "anslatable=\"yes\">_Sensitivity:</property><property name=\"use_underli" +- "ne\">True</property><property name=\"mnemonic_widget\">device-threshold" +- "-scale</property></object><packing><property name=\"top_attach\">1</pro" +- "perty><property name=\"bottom_attach\">2</property><property name=\"x_o" +- "ptions\">GTK_FILL</property></packing></child><child><object class=\"Gt" +- "kAlignment\" id=\"alignment7\"><property name=\"visible\">True</propert" +- "y><property name=\"can_focus\">False</property><property name=\"xalign\"" +- ">0</property><property name=\"xscale\">0</property><property name=\"ysc" +- "ale\">0</property><child><object class=\"GtkButton\" id=\"device-reset-" +- "feedback\"><property name=\"label\" translatable=\"yes\">Reset to De_fa" +- "ults</property><property name=\"visible\">True</property><property name" +- "=\"can_focus\">True</property><property name=\"receives_default\">True<" +- "/property><property name=\"tooltip_text\" translatable=\"yes\">Set the " +- "acceleration and sensitivity for the selected device to the default val" +- "ues</property><property name=\"use_action_appearance\">False</property>" +- "<property name=\"image\">image5</property><property name=\"use_underlin" +- "e\">True</property></object></child></object><packing><property name=\"" +- "right_attach\">2</property><property name=\"top_attach\">2</property><p" +- "roperty name=\"bottom_attach\">3</property></packing></child></object><" +- "/child></object></child><child type=\"label\"><object class=\"GtkLabel\"" +- " id=\"label15\"><property name=\"visible\">True</property><property nam" +- "e=\"can_focus\">False</property><property name=\"label\" translatable=\"" +- "yes\">Pointer Speed</property><attributes><attribute name=\"weight\" va" +- "lue=\"bold\"/></attributes></object></child></object><packing><property" +- " name=\"expand\">False</property><property name=\"fill\">True</property" +- "><property name=\"position\">1</property></packing></child></object></c" +- "hild><child type=\"tab\"><object class=\"GtkLabel\" id=\"label4\"><prop" +- "erty name=\"visible\">True</property><property name=\"can_focus\">False" +- "</property><property name=\"label\" translatable=\"yes\">B_uttons and F" +- "eedback</property><property name=\"use_underline\">True</property></obj" +- "ect><packing><property name=\"tab_fill\">False</property></packing></ch" +- "ild><child><object class=\"GtkVBox\" id=\"synaptics-tab\"><property nam" +- "e=\"visible\">True</property><property name=\"can_focus\">False</proper" +- "ty><property name=\"border_width\">6</property><property name=\"spacing" +- "\">6</property><child><object class=\"GtkFrame\" id=\"frame11\"><proper" ++ "perty><property name=\"border_width\">6</property><property name=\"spac" ++ "ing\">6</property><child><object class=\"GtkHBox\" id=\"hbox3\"><proper" + "ty name=\"visible\">True</property><property name=\"can_focus\">False</" +- "property><property name=\"label_xalign\">0</property><property name=\"s" +- "hadow_type\">none</property><child><object class=\"GtkAlignment\" id=\"" +- "alignment13\"><property name=\"visible\">True</property><property name=" +- "\"can_focus\">False</property><property name=\"left_padding\">12</prope" +- "rty><child><object class=\"GtkVBox\" id=\"vbox11\"><property name=\"vis" +- "ible\">True</property><property name=\"can_focus\">False</property><pro" +- "perty name=\"border_width\">6</property><property name=\"spacing\">6</p" +- "roperty><child><object class=\"GtkCheckButton\" id=\"synaptics-disable-" +- "while-type\"><property name=\"label\" translatable=\"yes\">Disable to_u" +- "chpad while typing</property><property name=\"visible\">True</property>" ++ "property><property name=\"spacing\">12</property><child><object class=\"" ++ "GtkRadioButton\" id=\"device-right-handed\"><property name=\"label\" tr" ++ "anslatable=\"yes\">Ri_ght-handed</property><property name=\"use_action_" ++ "appearance\">False</property><property name=\"visible\">True</property>" + "<property name=\"can_focus\">True</property><property name=\"receives_d" +- "efault\">False</property><property name=\"tooltip_text\" translatable=\"" +- "yes\">When selected, the touchpad will be disabled when the keyboard is" +- " being used</property><property name=\"use_action_appearance\">False</p" +- "roperty><property name=\"use_underline\">True</property><property name=" +- "\"draw_indicator\">True</property></object><packing><property name=\"ex" +- "pand\">True</property><property name=\"fill\">True</property><property " +- "name=\"position\">0</property></packing></child><child><object class=\"" +- "GtkCheckButton\" id=\"synaptics-tap-to-click\"><property name=\"label\"" +- " translatable=\"yes\">T_ap touchpad to click</property><property name=\"" +- "visible\">True</property><property name=\"can_focus\">True</property><p" +- "roperty name=\"receives_default\">False</property><property name=\"use_" +- "action_appearance\">False</property><property name=\"use_underline\">Tr" +- "ue</property><property name=\"draw_indicator\">True</property></object>" +- "<packing><property name=\"expand\">True</property><property name=\"fill" +- "\">True</property><property name=\"position\">1</property></packing></c" +- "hild></object></child></object></child><child type=\"label\"><object cl" +- "ass=\"GtkLabel\" id=\"label16\"><property name=\"visible\">True</proper" +- "ty><property name=\"can_focus\">False</property><property name=\"label\"" +- " translatable=\"yes\">General</property><property name=\"use_markup\">T" +- "rue</property><attributes><attribute name=\"weight\" value=\"bold\"/></" +- "attributes></object></child></object><packing><property name=\"expand\"" +- ">False</property><property name=\"fill\">True</property><property name=" +- "\"position\">0</property></packing></child><child><object class=\"GtkFr" +- "ame\" id=\"frame10\"><property name=\"visible\">True</property><propert" +- "y name=\"can_focus\">False</property><property name=\"label_xalign\">0<" +- "/property><property name=\"shadow_type\">none</property><child><object " +- "class=\"GtkAlignment\" id=\"alignment12\"><property name=\"visible\">Tr" +- "ue</property><property name=\"can_focus\">False</property><property nam" +- "e=\"left_padding\">12</property><child><object class=\"GtkVBox\" id=\"v" +- "box10\"><property name=\"visible\">True</property><property name=\"can_" +- "focus\">False</property><property name=\"border_width\">6</property><pr" +- "operty name=\"spacing\">6</property><child><object class=\"GtkHBox\" id" +- "=\"hbox4\"><property name=\"visible\">True</property><property name=\"c" +- "an_focus\">False</property><property name=\"spacing\">12</property><chi" +- "ld><object class=\"GtkRadioButton\" id=\"synaptics-scroll-no\"><propert" +- "y name=\"label\" translatable=\"yes\">Di_sabled</property><property nam" +- "e=\"visible\">True</property><property name=\"can_focus\">True</propert" +- "y><property name=\"receives_default\">False</property><property name=\"" +- "use_action_appearance\">False</property><property name=\"use_underline\"" +- ">True</property><property name=\"active\">True</property><property name" +- "=\"draw_indicator\">True</property></object><packing><property name=\"e" +- "xpand\">False</property><property name=\"fill\">True</property><propert" ++ "efault\">False</property><property name=\"use_underline\">True</propert" ++ "y><property name=\"active\">True</property><property name=\"draw_indica" ++ "tor\">True</property></object><packing><property name=\"expand\">False<" ++ "/property><property name=\"fill\">True</property><property name=\"posit" ++ "ion\">0</property></packing></child><child><object class=\"GtkRadioButt" ++ "on\" id=\"device-left-handed\"><property name=\"label\" translatable=\"" ++ "yes\">Le_ft-handed</property><property name=\"use_action_appearance\">F" ++ "alse</property><property name=\"visible\">True</property><property name" ++ "=\"can_focus\">True</property><property name=\"receives_default\">False" ++ "</property><property name=\"use_underline\">True</property><property na" ++ "me=\"draw_indicator\">True</property><property name=\"group\">device-ri" ++ "ght-handed</property></object><packing><property name=\"expand\">False<" ++ "/property><property name=\"fill\">True</property><property name=\"posit" ++ "ion\">1</property></packing></child></object><packing><property name=\"" ++ "expand\">True</property><property name=\"fill\">True</property><propert" + "y name=\"position\">0</property></packing></child><child><object class=" +- "\"GtkRadioButton\" id=\"synaptics-scroll-edge\"><property name=\"label\"" +- " translatable=\"yes\">Edge scro_lling</property><property name=\"visibl" ++ "\"GtkCheckButton\" id=\"device-reverse-scrolling\"><property name=\"lab" ++ "el\" translatable=\"yes\">Reverse scroll d_irection</property><property" ++ " name=\"use_action_appearance\">False</property><property name=\"visibl" + "e\">True</property><property name=\"can_focus\">True</property><propert" +- "y name=\"receives_default\">False</property><property name=\"use_action" +- "_appearance\">False</property><property name=\"use_underline\">True</pr" +- "operty><property name=\"draw_indicator\">True</property><property name=" +- "\"group\">synaptics-scroll-no</property></object><packing><property nam" +- "e=\"expand\">False</property><property name=\"fill\">True</property><pr" +- "operty name=\"position\">1</property></packing></child><child><object c" +- "lass=\"GtkRadioButton\" id=\"synaptics-scroll-two\"><property name=\"la" +- "bel\" translatable=\"yes\">Two-_finger scrolling</property><property na" +- "me=\"visible\">True</property><property name=\"can_focus\">True</proper" +- "ty><property name=\"receives_default\">False</property><property name=\"" +- "use_action_appearance\">False</property><property name=\"use_underline\"" +- ">True</property><property name=\"draw_indicator\">True</property><prope" +- "rty name=\"group\">synaptics-scroll-no</property></object><packing><pro" +- "perty name=\"expand\">True</property><property name=\"fill\">True</prop" +- "erty><property name=\"position\">2</property></packing></child></object" +- "><packing><property name=\"expand\">True</property><property name=\"fil" +- "l\">True</property><property name=\"position\">0</property></packing></" +- "child><child><object class=\"GtkCheckButton\" id=\"synaptics-scroll-hor" +- "iz\"><property name=\"label\" translatable=\"yes\">Enable hori_zontal s" +- "crolling</property><property name=\"visible\">True</property><property " +- "name=\"can_focus\">True</property><property name=\"receives_default\">F" +- "alse</property><property name=\"use_action_appearance\">False</property" +- "><property name=\"use_underline\">True</property><property name=\"draw_" +- "indicator\">True</property></object><packing><property name=\"expand\">" +- "True</property><property name=\"fill\">True</property><property name=\"" +- "position\">1</property></packing></child></object></child></object></ch" +- "ild><child type=\"label\"><object class=\"GtkLabel\" id=\"label17\"><pr" +- "operty name=\"visible\">True</property><property name=\"can_focus\">Fal" +- "se</property><property name=\"label\" translatable=\"yes\">Scrolling</p" +- "roperty><property name=\"use_markup\">True</property><attributes><attri" +- "bute name=\"weight\" value=\"bold\"/></attributes></object></child></ob" +- "ject><packing><property name=\"expand\">False</property><property name=" +- "\"fill\">True</property><property name=\"position\">1</property></packi" +- "ng></child></object><packing><property name=\"position\">1</property></" +- "packing></child><child type=\"tab\"><object class=\"GtkLabel\" id=\"syn" +- "aptics-label\"><property name=\"visible\">True</property><property name" +- "=\"can_focus\">False</property><property name=\"label\" translatable=\"" +- "yes\">T_ouchpad</property><property name=\"use_underline\">True</proper" +- "ty></object><packing><property name=\"position\">1</property><property " +- "name=\"tab_fill\">False</property></packing></child><child><object clas" +- "s=\"GtkVBox\" id=\"wacom-tab\"><property name=\"visible\">True</propert" ++ "y name=\"receives_default\">False</property><property name=\"tooltip_te" ++ "xt\" translatable=\"yes\">When selected, the scroll wheel will work in " ++ "the opposite direction</property><property name=\"use_underline\">True<" ++ "/property><property name=\"draw_indicator\">True</property></object><pa" ++ "cking><property name=\"expand\">True</property><property name=\"fill\">" ++ "True</property><property name=\"position\">1</property></packing></chil" ++ "d></object></child></object></child><child type=\"label\"><object class" ++ "=\"GtkLabel\" id=\"label14\"><property name=\"visible\">True</property>" ++ "<property name=\"can_focus\">False</property><property name=\"label\" t" ++ "ranslatable=\"yes\">Buttons</property><attributes><attribute name=\"wei" ++ "ght\" value=\"bold\"/></attributes></object></child></object><packing><" ++ "property name=\"expand\">False</property><property name=\"fill\">True</" ++ "property><property name=\"position\">0</property></packing></child><chi" ++ "ld><object class=\"GtkFrame\" id=\"frame2\"><property name=\"visible\">" ++ "True</property><property name=\"can_focus\">False</property><property n" ++ "ame=\"label_xalign\">0</property><property name=\"shadow_type\">none</p" ++ "roperty><child><object class=\"GtkAlignment\" id=\"alignment2\"><proper" ++ "ty name=\"visible\">True</property><property name=\"can_focus\">False</" ++ "property><property name=\"left_padding\">12</property><child><object cl" ++ "ass=\"GtkTable\" id=\"table1\"><property name=\"visible\">True</propert" + "y><property name=\"can_focus\">False</property><property name=\"border_" +- "width\">6</property><property name=\"spacing\">6</property><child><obje" +- "ct class=\"GtkFrame\" id=\"frame12\"><property name=\"visible\">True</p" +- "roperty><property name=\"can_focus\">False</property><property name=\"l" +- "abel_xalign\">0</property><property name=\"shadow_type\">none</property" +- "><child><object class=\"GtkAlignment\" id=\"alignment14\"><property nam" +- "e=\"visible\">True</property><property name=\"can_focus\">False</proper" +- "ty><property name=\"left_padding\">12</property><child><object class=\"" +- "GtkTable\" id=\"table2\"><property name=\"visible\">True</property><pro" +- "perty name=\"can_focus\">False</property><property name=\"border_width\"" +- ">6</property><property name=\"n_rows\">2</property><property name=\"n_c" +- "olumns\">2</property><property name=\"column_spacing\">12</property><pr" +- "operty name=\"row_spacing\">6</property><child><object class=\"GtkLabel" +- "\" id=\"label9\"><property name=\"visible\">True</property><property na" +- "me=\"can_focus\">False</property><property name=\"xalign\">0</property>" +- "<property name=\"label\" translatable=\"yes\">Tr_acking mode:</property" +- "><property name=\"use_underline\">True</property><property name=\"mnemo" +- "nic_widget\">wacom-mode</property></object><packing><property name=\"x_" +- "options\">GTK_FILL</property></packing></child><child><object class=\"G" +- "tkLabel\" id=\"label10\"><property name=\"visible\">True</property><pro" +- "perty name=\"can_focus\">False</property><property name=\"xalign\">0</p" +- "roperty><property name=\"label\" translatable=\"yes\">_Rotation:</prope" +- "rty><property name=\"use_underline\">True</property><property name=\"mn" +- "emonic_widget\">wacom-rotation</property></object><packing><property na" +- "me=\"top_attach\">1</property><property name=\"bottom_attach\">2</prope" +- "rty><property name=\"x_options\">GTK_FILL</property></packing></child><" +- "child><object class=\"GtkComboBox\" id=\"wacom-mode\"><property name=\"" +- "visible\">True</property><property name=\"can_focus\">False</property><" +- "property name=\"model\">wacom-mode-store</property><child><object class" +- "=\"GtkCellRendererText\" id=\"cellrenderertext1\"/><attributes><attribu" +- "te name=\"text\">1</attribute></attributes></child></object><packing><p" +- "roperty name=\"left_attach\">1</property><property name=\"right_attach\"" +- ">2</property></packing></child><child><object class=\"GtkComboBox\" id=" +- "\"wacom-rotation\"><property name=\"visible\">True</property><property " +- "name=\"can_focus\">False</property><property name=\"model\">wacom-rotat" +- "ion-store</property><child><object class=\"GtkCellRendererText\" id=\"c" +- "ellrenderertext2\"/><attributes><attribute name=\"text\">1</attribute><" +- "/attributes></child></object><packing><property name=\"left_attach\">1<" +- "/property><property name=\"right_attach\">2</property><property name=\"" +- "top_attach\">1</property><property name=\"bottom_attach\">2</property><" +- "/packing></child></object></child></object></child><child type=\"label\"" +- "><object class=\"GtkLabel\" id=\"label18\"><property name=\"visible\">T" ++ "width\">6</property><property name=\"n_rows\">4</property><property nam" ++ "e=\"n_columns\">2</property><property name=\"column_spacing\">12</prope" ++ "rty><property name=\"row_spacing\">6</property><child><object class=\"G" ++ "tkLabel\" id=\"device-acceleration-label\"><property name=\"visible\">T" + "rue</property><property name=\"can_focus\">False</property><property na" +- "me=\"label\" translatable=\"yes\">General</property><property name=\"us" +- "e_markup\">True</property><attributes><attribute name=\"weight\" value=" +- "\"bold\"/></attributes></object></child></object><packing><property nam" +- "e=\"expand\">False</property><property name=\"fill\">True</property><pr" +- "operty name=\"position\">0</property></packing></child></object><packin" +- "g><property name=\"position\">2</property></packing></child><child type" +- "=\"tab\"><object class=\"GtkLabel\" id=\"wacom-label\"><property name=\"" +- "visible\">True</property><property name=\"can_focus\">False</property><" +- "property name=\"label\" translatable=\"yes\">Table_t</property><propert" +- "y name=\"use_underline\">True</property></object><packing><property nam" +- "e=\"position\">2</property><property name=\"tab_fill\">False</property>" +- "</packing></child></object><packing><property name=\"expand\">True</pro" +- "perty><property name=\"fill\">True</property><property name=\"position\"" +- ">2</property></packing></child></object></child><child type=\"tab\"><ob" +- "ject class=\"GtkLabel\" id=\"label1\"><property name=\"visible\">True</" +- "property><property name=\"can_focus\">False</property><property name=\"" +- "label\" translatable=\"yes\">_Devices</property><property name=\"use_un" +- "derline\">True</property></object><packing><property name=\"tab_fill\">" +- "False</property></packing></child><child><object class=\"GtkVBox\" id=\"" +- "vbox3\"><property name=\"visible\">True</property><property name=\"can_" +- "focus\">False</property><property name=\"border_width\">12</property><p" +- "roperty name=\"spacing\">6</property><child><object class=\"GtkFrame\" " +- "id=\"frame3\"><property name=\"visible\">True</property><property name=" +- "\"can_focus\">False</property><property name=\"label_xalign\">0</proper" +- "ty><property name=\"shadow_type\">none</property><child><object class=\"" +- "GtkAlignment\" id=\"alignment3\"><property name=\"visible\">True</prope" +- "rty><property name=\"can_focus\">False</property><property name=\"left_" +- "padding\">12</property><child><object class=\"GtkVBox\" id=\"vbox4\"><p" +- "roperty name=\"visible\">True</property><property name=\"can_focus\">Fa" +- "lse</property><property name=\"border_width\">6</property><property nam" +- "e=\"spacing\">6</property><child><object class=\"GtkLabel\" id=\"mouse-" +- "dnd-label\"><property name=\"visible\">True</property><property name=\"" +- "can_focus\">False</property><property name=\"xalign\">0</property><prop" +- "erty name=\"label\" translatable=\"yes\">Th_reshold:</property><propert" +- "y name=\"use_underline\">True</property><property name=\"mnemonic_widge" +- "t\">dnd-threshold-scale</property></object><packing><property name=\"ex" +- "pand\">True</property><property name=\"fill\">True</property><property " +- "name=\"position\">0</property></packing></child><child><object class=\"" +- "GtkHScale\" id=\"dnd-threshold-scale\"><property name=\"visible\">True<" +- "/property><property name=\"can_focus\">True</property><property name=\"" +- "tooltip_text\" translatable=\"yes\">The number of pixels the pointer mu" +- "st move before a drag operation will start</property><property name=\"u" +- "pdate_policy\">delayed</property><property name=\"adjustment\">dnd-thre" +- "shold</property><property name=\"digits\">0</property><property name=\"" +- "value_pos\">right</property></object><packing><property name=\"expand\"" +- ">True</property><property name=\"fill\">True</property><property name=\"" +- "position\">1</property></packing></child></object></child></object></ch" +- "ild><child type=\"label\"><object class=\"GtkLabel\" id=\"label6\"><pro" +- "perty name=\"visible\">True</property><property name=\"can_focus\">Fals" +- "e</property><property name=\"label\" translatable=\"yes\">Drag and Drop" +- "</property><attributes><attribute name=\"weight\" value=\"bold\"/></att" +- "ributes></object></child></object><packing><property name=\"expand\">Fa" +- "lse</property><property name=\"fill\">True</property><property name=\"p" +- "osition\">0</property></packing></child><child><object class=\"GtkFrame" +- "\" id=\"frame4\"><property name=\"visible\">True</property><property na" +- "me=\"can_focus\">False</property><property name=\"label_xalign\">0</pro" +- "perty><property name=\"shadow_type\">none</property><child><object clas" +- "s=\"GtkAlignment\" id=\"alignment4\"><property name=\"visible\">True</p" +- "roperty><property name=\"can_focus\">False</property><property name=\"l" +- "eft_padding\">12</property><child><object class=\"GtkVBox\" id=\"vbox5\"" ++ "me=\"xalign\">0</property><property name=\"label\" translatable=\"yes\"" ++ ">Acceleratio_n:</property><property name=\"use_underline\">True</proper" ++ "ty><property name=\"mnemonic_widget\">device-acceleration-scale</proper" ++ "ty></object><packing><property name=\"x_options\">GTK_FILL</property><p" ++ "roperty name=\"y_options\">GTK_FILL</property></packing></child><child>" ++ "<object class=\"GtkHScale\" id=\"device-acceleration-scale\"><property " ++ "name=\"visible\">True</property><property name=\"can_focus\">True</prop" ++ "erty><property name=\"tooltip_text\" translatable=\"yes\">The factor at" ++ " which the pointer\'s speed will increase as the mouse is moved</proper" ++ "ty><property name=\"update_policy\">delayed</property><property name=\"" ++ "adjustment\">device-acceleration</property><property name=\"round_digit" ++ "s\">1</property><property name=\"value_pos\">right</property></object><" ++ "packing><property name=\"left_attach\">1</property><property name=\"rig" ++ "ht_attach\">2</property></packing></child><child><object class=\"GtkHSc" ++ "ale\" id=\"device-threshold-scale\"><property name=\"visible\">True</pr" ++ "operty><property name=\"can_focus\">True</property><property name=\"too" ++ "ltip_text\" translatable=\"yes\">The number of pixels the pointer must " ++ "move in a short time before it starts accelerating</property><property " ++ "name=\"update_policy\">delayed</property><property name=\"adjustment\">" ++ "device-threshold</property><property name=\"round_digits\">0</property>" ++ "<property name=\"digits\">0</property><property name=\"value_pos\">righ" ++ "t</property></object><packing><property name=\"left_attach\">1</propert" ++ "y><property name=\"right_attach\">2</property><property name=\"top_atta" ++ "ch\">1</property><property name=\"bottom_attach\">2</property></packing" ++ "></child><child><object class=\"GtkLabel\" id=\"device-threshold-label\"" + "><property name=\"visible\">True</property><property name=\"can_focus\"" +- ">False</property><property name=\"border_width\">6</property><property " +- "name=\"spacing\">6</property><child><object class=\"GtkLabel\" id=\"dcl" +- "ick-time-label\"><property name=\"visible\">True</property><property na" +- "me=\"can_focus\">False</property><property name=\"xalign\">0</property>" +- "<property name=\"label\" translatable=\"yes\">Ti_me:</property><propert" +- "y name=\"use_underline\">True</property><property name=\"mnemonic_widge" +- "t\">dclick-time-scale</property></object><packing><property name=\"expa" +- "nd\">True</property><property name=\"fill\">True</property><property na" +- "me=\"position\">0</property></packing></child><child><object class=\"Gt" +- "kHScale\" id=\"dclick-time-scale\"><property name=\"visible\">True</pro" +- "perty><property name=\"can_focus\">True</property><property name=\"tool" +- "tip_text\" translatable=\"yes\">Two mouse clicks in less than this leng" +- "th of time (in milliseconds) will be considered a double click</propert" +- "y><property name=\"update_policy\">delayed</property><property name=\"a" +- "djustment\">dclick-time</property><property name=\"digits\">0</property" +- "><property name=\"value_pos\">right</property></object><packing><proper" +- "ty name=\"expand\">True</property><property name=\"fill\">True</propert" +- "y><property name=\"position\">1</property></packing></child><child><obj" +- "ect class=\"GtkLabel\" id=\"dclick-distance-label\"><property name=\"vi" +- "sible\">True</property><property name=\"can_focus\">False</property><pr" +- "operty name=\"xalign\">0</property><property name=\"label\" translatabl" +- "e=\"yes\">D_istance:</property><property name=\"use_underline\">True</p" +- "roperty><property name=\"mnemonic_widget\">dclick-distance-scale</prope" +- "rty></object><packing><property name=\"expand\">True</property><propert" +- "y name=\"fill\">True</property><property name=\"position\">2</property>" +- "</packing></child><child><object class=\"GtkHScale\" id=\"dclick-distan" +- "ce-scale\"><property name=\"visible\">True</property><property name=\"c" +- "an_focus\">True</property><property name=\"tooltip_text\" translatable=" +- "\"yes\">The mouse pointer cannot move farther than this distance betwee" +- "n two clicks for them to be considered a double click</property><proper" +- "ty name=\"update_policy\">delayed</property><property name=\"adjustment" +- "\">dclick-distance</property><property name=\"digits\">0</property><pro" +- "perty name=\"value_pos\">right</property></object><packing><property na" +- "me=\"expand\">True</property><property name=\"fill\">True</property><pr" +- "operty name=\"position\">3</property></packing></child></object></child" +- "></object></child><child type=\"label\"><object class=\"GtkLabel\" id=\"" +- "label8\"><property name=\"visible\">True</property><property name=\"can" +- "_focus\">False</property><property name=\"label\" translatable=\"yes\">" +- "Double Click</property><attributes><attribute name=\"weight\" value=\"b" +- "old\"/></attributes></object></child></object><packing><property name=\"" +- "expand\">False</property><property name=\"fill\">True</property><proper" +- "ty name=\"position\">1</property></packing></child></object><packing><p" +- "roperty name=\"position\">1</property></packing></child><child type=\"t" +- "ab\"><object class=\"GtkLabel\" id=\"label2\"><property name=\"visible\"" +- ">True</property><property name=\"can_focus\">False</property><property " +- "name=\"label\" translatable=\"yes\">_Behavior</property><property name=" +- "\"use_underline\">True</property></object><packing><property name=\"pos" +- "ition\">1</property><property name=\"tab_fill\">False</property></packi" +- "ng></child><child><object class=\"GtkHBox\" id=\"themes-hbox\"><propert" +- "y name=\"visible\">True</property><property name=\"can_focus\">False</p" +- "roperty><property name=\"border_width\">12</property><property name=\"s" +- "pacing\">12</property><child><object class=\"GtkScrolledWindow\" id=\"s" +- "crolledwindow2\"><property name=\"visible\">True</property><property na" +- "me=\"can_focus\">True</property><property name=\"hscrollbar_policy\">au" +- "tomatic</property><property name=\"vscrollbar_policy\">automatic</prope" +- "rty><property name=\"shadow_type\">etched-in</property><child><object c" +- "lass=\"GtkTreeView\" id=\"theme-treeview\"><property name=\"width_reque" +- "st\">200</property><property name=\"visible\">True</property><property " +- "name=\"can_focus\">True</property><property name=\"headers_visible\">Fa" +- "lse</property></object></child></object><packing><property name=\"expan" +- "d\">True</property><property name=\"fill\">True</property><property nam" +- "e=\"position\">0</property></packing></child><child><object class=\"Gtk" +- "VBox\" id=\"vbox9\"><property name=\"visible\">True</property><property" +- " name=\"can_focus\">False</property><property name=\"spacing\">6</prope" +- "rty><child><object class=\"GtkFrame\" id=\"frame5\"><property name=\"vi" +- "sible\">True</property><property name=\"can_focus\">False</property><pr" +- "operty name=\"label_xalign\">0</property><property name=\"shadow_type\"" +- ">none</property><child><object class=\"GtkAlignment\" id=\"alignment5\"" ++ ">False</property><property name=\"xalign\">0</property><property name=\"" ++ "label\" translatable=\"yes\">Sensitivit_y:</property><property name=\"u" ++ "se_underline\">True</property><property name=\"mnemonic_widget\">device" ++ "-threshold-scale</property></object><packing><property name=\"top_attac" ++ "h\">1</property><property name=\"bottom_attach\">2</property><property " ++ "name=\"x_options\">GTK_FILL</property></packing></child><child><object " ++ "class=\"GtkAlignment\" id=\"alignment7\"><property name=\"visible\">Tru" ++ "e</property><property name=\"can_focus\">False</property><property name" ++ "=\"xalign\">0</property><property name=\"xscale\">0</property><property" ++ " name=\"yscale\">0</property><child><object class=\"GtkButton\" id=\"de" ++ "vice-reset-feedback\"><property name=\"label\" translatable=\"yes\">_Re" ++ "set to Defaults</property><property name=\"use_action_appearance\">Fals" ++ "e</property><property name=\"visible\">True</property><property name=\"" ++ "can_focus\">True</property><property name=\"receives_default\">True</pr" ++ "operty><property name=\"tooltip_text\" translatable=\"yes\">Set the acc" ++ "eleration and sensitivity for the selected device to the default values" ++ "</property><property name=\"image\">image5</property><property name=\"u" ++ "se_underline\">True</property></object></child></object><packing><prope" ++ "rty name=\"right_attach\">2</property><property name=\"top_attach\">2</" ++ "property><property name=\"bottom_attach\">3</property></packing></child" ++ "><child><object class=\"GtkAlignment\" id=\"alignment8\"><property name" ++ "=\"visible\">True</property><property name=\"can_focus\">False</propert" ++ "y><property name=\"xalign\">0</property><property name=\"xscale\">0</pr" ++ "operty><property name=\"yscale\">0</property><child><object class=\"Gtk" ++ "CheckButton\" id=\"touchscreen-pointer\"><property name=\"label\" trans" ++ "latable=\"yes\">_Touchscreen pointer</property><property name=\"use_act" ++ "ion_appearance\">False</property><property name=\"visible\">True</prope" ++ "rty><property name=\"can_focus\">True</property><property name=\"receiv" ++ "es_default\">False</property><property name=\"tooltip_text\" translatab" ++ "le=\"yes\">When selected, no mouse pointer is displayed for this device" ++ " and gtk TouchscreenMode is activated</property><property name=\"use_un" ++ "derline\">True</property><property name=\"draw_indicator\">True</proper" ++ "ty></object></child></object><packing><property name=\"right_attach\">2" ++ "</property><property name=\"top_attach\">3</property><property name=\"b" ++ "ottom_attach\">4</property></packing></child></object></child></object>" ++ "</child><child type=\"label\"><object class=\"GtkLabel\" id=\"label15\"" + "><property name=\"visible\">True</property><property name=\"can_focus\"" +- ">False</property><property name=\"left_padding\">12</property><child><o" +- "bject class=\"GtkHBox\" id=\"hbox7\"><property name=\"visible\">True</p" ++ ">False</property><property name=\"label\" translatable=\"yes\">Pointer " ++ "Speed</property><attributes><attribute name=\"weight\" value=\"bold\"/>" ++ "</attributes></object></child></object><packing><property name=\"expand" ++ "\">False</property><property name=\"fill\">True</property><property nam" ++ "e=\"position\">1</property></packing></child></object></child><child ty" ++ "pe=\"tab\"><object class=\"GtkLabel\" id=\"label4\"><property name=\"vi" ++ "sible\">True</property><property name=\"can_focus\">False</property><pr" ++ "operty name=\"label\" translatable=\"yes\">B_uttons and Feedback</prope" ++ "rty><property name=\"use_underline\">True</property></object><packing><" ++ "property name=\"tab_fill\">False</property></packing></child><child><ob" ++ "ject class=\"GtkVBox\" id=\"synaptics-tab\"><property name=\"visible\">" ++ "True</property><property name=\"can_focus\">False</property><property n" ++ "ame=\"border_width\">6</property><property name=\"spacing\">6</property" ++ "><child><object class=\"GtkFrame\" id=\"frame11\"><property name=\"visi" ++ "ble\">True</property><property name=\"can_focus\">False</property><prop" ++ "erty name=\"label_xalign\">0</property><property name=\"shadow_type\">n" ++ "one</property><child><object class=\"GtkAlignment\" id=\"alignment13\">" ++ "<property name=\"visible\">True</property><property name=\"can_focus\">" ++ "False</property><property name=\"left_padding\">12</property><child><ob" ++ "ject class=\"GtkVBox\" id=\"vbox11\"><property name=\"visible\">True</p" + "roperty><property name=\"can_focus\">False</property><property name=\"b" +- "order_width\">6</property><property name=\"spacing\">12</property><chil" +- "d><object class=\"GtkLabel\" id=\"label21\"><property name=\"visible\">" ++ "order_width\">6</property><property name=\"spacing\">6</property><child" ++ "><object class=\"GtkCheckButton\" id=\"synaptics-disable-while-type\"><" ++ "property name=\"label\" translatable=\"yes\">Disable touchpad _while ty" ++ "ping</property><property name=\"use_action_appearance\">False</property" ++ "><property name=\"visible\">True</property><property name=\"can_focus\"" ++ ">True</property><property name=\"receives_default\">False</property><pr" ++ "operty name=\"tooltip_text\" translatable=\"yes\">When selected, the to" ++ "uchpad will be disabled when the keyboard is being used</property><prop" ++ "erty name=\"use_underline\">True</property><property name=\"draw_indica" ++ "tor\">True</property></object><packing><property name=\"expand\">True</" ++ "property><property name=\"fill\">True</property><property name=\"positi" ++ "on\">0</property></packing></child><child><object class=\"GtkCheckButto" ++ "n\" id=\"synaptics-tap-to-click\"><property name=\"label\" translatable" ++ "=\"yes\">Tap touchpad to clic_k</property><property name=\"use_action_a" ++ "ppearance\">False</property><property name=\"visible\">True</property><" ++ "property name=\"can_focus\">True</property><property name=\"receives_de" ++ "fault\">False</property><property name=\"use_underline\">True</property" ++ "><property name=\"draw_indicator\">True</property></object><packing><pr" ++ "operty name=\"expand\">True</property><property name=\"fill\">True</pro" ++ "perty><property name=\"position\">1</property></packing></child></objec" ++ "t></child></object></child><child type=\"label\"><object class=\"GtkLab" ++ "el\" id=\"label16\"><property name=\"visible\">True</property><property" ++ " name=\"can_focus\">False</property><property name=\"label\" translatab" ++ "le=\"yes\">General</property><property name=\"use_markup\">True</proper" ++ "ty><attributes><attribute name=\"weight\" value=\"bold\"/></attributes>" ++ "</object></child></object><packing><property name=\"expand\">False</pro" ++ "perty><property name=\"fill\">True</property><property name=\"position\"" ++ ">0</property></packing></child><child><object class=\"GtkFrame\" id=\"f" ++ "rame10\"><property name=\"visible\">True</property><property name=\"can" ++ "_focus\">False</property><property name=\"label_xalign\">0</property><p" ++ "roperty name=\"shadow_type\">none</property><child><object class=\"GtkA" ++ "lignment\" id=\"alignment12\"><property name=\"visible\">True</property" ++ "><property name=\"can_focus\">False</property><property name=\"left_pad" ++ "ding\">12</property><child><object class=\"GtkVBox\" id=\"vbox10\"><pro" ++ "perty name=\"visible\">True</property><property name=\"can_focus\">Fals" ++ "e</property><property name=\"border_width\">6</property><property name=" ++ "\"spacing\">6</property><child><object class=\"GtkHBox\" id=\"hbox4\"><" ++ "property name=\"visible\">True</property><property name=\"can_focus\">F" ++ "alse</property><property name=\"spacing\">12</property><child><object c" ++ "lass=\"GtkLabel\" id=\"label23\"><property name=\"visible\">True</prope" ++ "rty><property name=\"can_focus\">False</property><property name=\"xalig" ++ "n\">0</property><property name=\"label\" translatable=\"yes\">Scrolling" ++ " _mode:</property><property name=\"use_underline\">True</property><prop" ++ "erty name=\"mnemonic_widget\">synaptics-scroll</property></object><pack" ++ "ing><property name=\"expand\">False</property><property name=\"fill\">T" ++ "rue</property><property name=\"position\">0</property></packing></child" ++ "><child><object class=\"GtkComboBox\" id=\"synaptics-scroll\"><property" ++ " name=\"visible\">True</property><property name=\"can_focus\">False</pr" ++ "operty><property name=\"model\">synaptics-scroll-store</property><child" ++ "><object class=\"GtkCellRendererText\" id=\"cellrenderertext3\"/><attri" ++ "butes><attribute name=\"sensitive\">1</attribute><attribute name=\"text" ++ "\">0</attribute></attributes></child></object><packing><property name=\"" ++ "expand\">True</property><property name=\"fill\">True</property><propert" ++ "y name=\"position\">1</property></packing></child></object><packing><pr" ++ "operty name=\"expand\">True</property><property name=\"fill\">True</pro" ++ "perty><property name=\"position\">0</property></packing></child><child>" ++ "<object class=\"GtkCheckButton\" id=\"synaptics-scroll-horiz\"><propert" ++ "y name=\"label\" translatable=\"yes\">Enable hori_zontal scrolling</pro" ++ "perty><property name=\"use_action_appearance\">False</property><propert" ++ "y name=\"visible\">True</property><property name=\"can_focus\">True</pr" ++ "operty><property name=\"receives_default\">False</property><property na" ++ "me=\"use_underline\">True</property><property name=\"draw_indicator\">T" ++ "rue</property></object><packing><property name=\"expand\">True</propert" ++ "y><property name=\"fill\">True</property><property name=\"position\">1<" ++ "/property></packing></child></object></child></object></child><child ty" ++ "pe=\"label\"><object class=\"GtkLabel\" id=\"label17\"><property name=\"" ++ "visible\">True</property><property name=\"can_focus\">False</property><" ++ "property name=\"label\" translatable=\"yes\">Scrolling</property><prope" ++ "rty name=\"use_markup\">True</property><attributes><attribute name=\"we" ++ "ight\" value=\"bold\"/></attributes></object></child></object><packing>" ++ "<property name=\"expand\">False</property><property name=\"fill\">True<" ++ "/property><property name=\"position\">1</property></packing></child></o" ++ "bject><packing><property name=\"position\">1</property></packing></chil" ++ "d><child type=\"tab\"><object class=\"GtkLabel\" id=\"synaptics-label\"" ++ "><property name=\"visible\">True</property><property name=\"can_focus\"" ++ ">False</property><property name=\"label\" translatable=\"yes\">T_ouchpa" ++ "d</property><property name=\"use_underline\">True</property></object><p" ++ "acking><property name=\"position\">1</property><property name=\"tab_fil" ++ "l\">False</property></packing></child><child><object class=\"GtkVBox\" " ++ "id=\"wacom-tab\"><property name=\"visible\">True</property><property na" ++ "me=\"can_focus\">False</property><property name=\"border_width\">6</pro" ++ "perty><property name=\"spacing\">6</property><child><object class=\"Gtk" ++ "Frame\" id=\"frame12\"><property name=\"visible\">True</property><prope" ++ "rty name=\"can_focus\">False</property><property name=\"label_xalign\">" ++ "0</property><property name=\"shadow_type\">none</property><child><objec" ++ "t class=\"GtkAlignment\" id=\"alignment14\"><property name=\"visible\">" + "True</property><property name=\"can_focus\">False</property><property n" +- "ame=\"label\" translatable=\"yes\">Cursor _size:</property><property na" +- "me=\"use_underline\">True</property><property name=\"mnemonic_widget\">" +- "spin1</property></object><packing><property name=\"expand\">False</prop" +- "erty><property name=\"fill\">True</property><property name=\"position\"" +- ">0</property></packing></child><child><object class=\"GtkSpinButton\" i" +- "d=\"spin1\"><property name=\"visible\">True</property><property name=\"" +- "can_focus\">True</property><property name=\"primary_icon_activatable\">" +- "False</property><property name=\"secondary_icon_activatable\">False</pr" +- "operty><property name=\"primary_icon_sensitive\">True</property><proper" +- "ty name=\"secondary_icon_sensitive\">True</property><property name=\"ad" +- "justment\">theme-cursor-size</property><property name=\"snap_to_ticks\"" +- ">True</property><property name=\"numeric\">True</property></object><pac" +- "king><property name=\"expand\">False</property><property name=\"fill\">" +- "True</property><property name=\"position\">1</property></packing></chil" ++ "ame=\"left_padding\">12</property><child><object class=\"GtkTable\" id=" ++ "\"table2\"><property name=\"visible\">True</property><property name=\"c" ++ "an_focus\">False</property><property name=\"border_width\">6</property>" ++ "<property name=\"n_rows\">2</property><property name=\"n_columns\">2</p" ++ "roperty><property name=\"column_spacing\">12</property><property name=\"" ++ "row_spacing\">6</property><child><object class=\"GtkLabel\" id=\"label9" ++ "\"><property name=\"visible\">True</property><property name=\"can_focus" ++ "\">False</property><property name=\"xalign\">0</property><property name" ++ "=\"label\" translatable=\"yes\">Trac_king mode:</property><property nam" ++ "e=\"use_underline\">True</property><property name=\"mnemonic_widget\">w" ++ "acom-mode</property></object><packing><property name=\"x_options\">GTK_" ++ "FILL</property></packing></child><child><object class=\"GtkLabel\" id=\"" ++ "label10\"><property name=\"visible\">True</property><property name=\"ca" ++ "n_focus\">False</property><property name=\"xalign\">0</property><proper" ++ "ty name=\"label\" translatable=\"yes\">_Rotation:</property><property n" ++ "ame=\"use_underline\">True</property><property name=\"mnemonic_widget\"" ++ ">wacom-rotation</property></object><packing><property name=\"top_attach" ++ "\">1</property><property name=\"bottom_attach\">2</property><property n" ++ "ame=\"x_options\">GTK_FILL</property></packing></child><child><object c" ++ "lass=\"GtkComboBox\" id=\"wacom-mode\"><property name=\"visible\">True<" ++ "/property><property name=\"can_focus\">False</property><property name=\"" ++ "model\">wacom-mode-store</property><child><object class=\"GtkCellRender" ++ "erText\" id=\"cellrenderertext1\"/><attributes><attribute name=\"text\"" ++ ">1</attribute></attributes></child></object><packing><property name=\"l" ++ "eft_attach\">1</property><property name=\"right_attach\">2</property></" ++ "packing></child><child><object class=\"GtkComboBox\" id=\"wacom-rotatio" ++ "n\"><property name=\"visible\">True</property><property name=\"can_focu" ++ "s\">False</property><property name=\"model\">wacom-rotation-store</prop" ++ "erty><child><object class=\"GtkCellRendererText\" id=\"cellrenderertext" ++ "2\"/><attributes><attribute name=\"text\">1</attribute></attributes></c" ++ "hild></object><packing><property name=\"left_attach\">1</property><prop" ++ "erty name=\"right_attach\">2</property><property name=\"top_attach\">1<" ++ "/property><property name=\"bottom_attach\">2</property></packing></chil" + "d></object></child></object></child><child type=\"label\"><object class" +- "=\"GtkLabel\" id=\"label20\"><property name=\"visible\">True</property>" ++ "=\"GtkLabel\" id=\"label18\"><property name=\"visible\">True</property>" + "<property name=\"can_focus\">False</property><property name=\"label\" t" +- "ranslatable=\"yes\">Size</property><attributes><attribute name=\"weight" +- "\" value=\"bold\"/></attributes></object></child></object><packing><pro" +- "perty name=\"expand\">False</property><property name=\"fill\">True</pro" +- "perty><property name=\"position\">0</property></packing></child><child>" +- "<object class=\"GtkFrame\" id=\"frame6\"><property name=\"visible\">Tru" ++ "ranslatable=\"yes\">General</property><property name=\"use_markup\">Tru" ++ "e</property><attributes><attribute name=\"weight\" value=\"bold\"/></at" ++ "tributes></object></child></object><packing><property name=\"expand\">F" ++ "alse</property><property name=\"fill\">True</property><property name=\"" ++ "position\">0</property></packing></child></object><packing><property na" ++ "me=\"position\">2</property></packing></child><child type=\"tab\"><obje" ++ "ct class=\"GtkLabel\" id=\"wacom-label\"><property name=\"visible\">Tru" + "e</property><property name=\"can_focus\">False</property><property name" +- "=\"label_xalign\">0</property><property name=\"shadow_type\">none</prop" +- "erty><child><object class=\"GtkAlignment\" id=\"alignment6\"><property " +- "name=\"visible\">True</property><property name=\"can_focus\">False</pro" +- "perty><property name=\"border_width\">6</property><property name=\"xali" +- "gn\">0</property><property name=\"yalign\">0</property><property name=\"" +- "xscale\">0</property><property name=\"yscale\">0</property><property na" +- "me=\"top_padding\">6</property><property name=\"bottom_padding\">6</pro" +- "perty><property name=\"left_padding\">18</property><property name=\"rig" +- "ht_padding\">6</property><child><object class=\"GtkImage\" id=\"theme-p" +- "review\"><property name=\"visible\">True</property><property name=\"can" +- "_focus\">False</property><property name=\"stock\">gtk-missing-image</pr" +- "operty></object></child></object></child><child type=\"label\"><object " +- "class=\"GtkLabel\" id=\"label22\"><property name=\"visible\">True</prop" ++ "=\"label\" translatable=\"yes\">Tab_let</property><property name=\"use_" ++ "underline\">True</property></object><packing><property name=\"position\"" ++ ">2</property><property name=\"tab_fill\">False</property></packing></ch" ++ "ild></object><packing><property name=\"expand\">True</property><propert" ++ "y name=\"fill\">True</property><property name=\"position\">2</property>" ++ "</packing></child></object></child><child type=\"tab\"><object class=\"" ++ "GtkLabel\" id=\"label1\"><property name=\"visible\">True</property><pro" ++ "perty name=\"can_focus\">False</property><property name=\"label\" trans" ++ "latable=\"yes\">_Devices</property><property name=\"use_underline\">Tru" ++ "e</property></object><packing><property name=\"tab_fill\">False</proper" ++ "ty></packing></child><child><object class=\"GtkVBox\" id=\"vbox3\"><pro" ++ "perty name=\"visible\">True</property><property name=\"can_focus\">Fals" ++ "e</property><property name=\"border_width\">12</property><property name" ++ "=\"spacing\">6</property><child><object class=\"GtkFrame\" id=\"frame3\"" ++ "><property name=\"visible\">True</property><property name=\"can_focus\"" ++ ">False</property><property name=\"label_xalign\">0</property><property " ++ "name=\"shadow_type\">none</property><child><object class=\"GtkAlignment" ++ "\" id=\"alignment3\"><property name=\"visible\">True</property><propert" ++ "y name=\"can_focus\">False</property><property name=\"left_padding\">12" ++ "</property><child><object class=\"GtkVBox\" id=\"vbox4\"><property name" ++ "=\"visible\">True</property><property name=\"can_focus\">False</propert" ++ "y><property name=\"border_width\">6</property><property name=\"spacing\"" ++ ">6</property><child><object class=\"GtkLabel\" id=\"mouse-dnd-label\"><" ++ "property name=\"visible\">True</property><property name=\"can_focus\">F" ++ "alse</property><property name=\"xalign\">0</property><property name=\"l" ++ "abel\" translatable=\"yes\">Th_reshold:</property><property name=\"use_" ++ "underline\">True</property><property name=\"mnemonic_widget\">dnd-thres" ++ "hold-scale</property></object><packing><property name=\"expand\">True</" ++ "property><property name=\"fill\">True</property><property name=\"positi" ++ "on\">0</property></packing></child><child><object class=\"GtkHScale\" i" ++ "d=\"dnd-threshold-scale\"><property name=\"visible\">True</property><pr" ++ "operty name=\"can_focus\">True</property><property name=\"tooltip_text\"" ++ " translatable=\"yes\">The number of pixels the pointer must move before" ++ " a drag operation will start</property><property name=\"update_policy\"" ++ ">delayed</property><property name=\"adjustment\">dnd-threshold</propert" ++ "y><property name=\"digits\">0</property><property name=\"value_pos\">ri" ++ "ght</property></object><packing><property name=\"expand\">True</propert" ++ "y><property name=\"fill\">True</property><property name=\"position\">1<" ++ "/property></packing></child></object></child></object></child><child ty" ++ "pe=\"label\"><object class=\"GtkLabel\" id=\"label6\"><property name=\"" ++ "visible\">True</property><property name=\"can_focus\">False</property><" ++ "property name=\"label\" translatable=\"yes\">Drag and Drop</property><a" ++ "ttributes><attribute name=\"weight\" value=\"bold\"/></attributes></obj" ++ "ect></child></object><packing><property name=\"expand\">False</property" ++ "><property name=\"fill\">True</property><property name=\"position\">0</" ++ "property></packing></child><child><object class=\"GtkFrame\" id=\"frame" ++ "4\"><property name=\"visible\">True</property><property name=\"can_focu" ++ "s\">False</property><property name=\"label_xalign\">0</property><proper" ++ "ty name=\"shadow_type\">none</property><child><object class=\"GtkAlignm" ++ "ent\" id=\"alignment4\"><property name=\"visible\">True</property><prop" ++ "erty name=\"can_focus\">False</property><property name=\"left_padding\"" ++ ">12</property><child><object class=\"GtkVBox\" id=\"vbox5\"><property n" ++ "ame=\"visible\">True</property><property name=\"can_focus\">False</prop" ++ "erty><property name=\"border_width\">6</property><property name=\"spaci" ++ "ng\">6</property><child><object class=\"GtkLabel\" id=\"dclick-time-lab" ++ "el\"><property name=\"visible\">True</property><property name=\"can_foc" ++ "us\">False</property><property name=\"xalign\">0</property><property na" ++ "me=\"label\" translatable=\"yes\">Ti_me:</property><property name=\"use" ++ "_underline\">True</property><property name=\"mnemonic_widget\">dclick-t" ++ "ime-scale</property></object><packing><property name=\"expand\">True</p" ++ "roperty><property name=\"fill\">True</property><property name=\"positio" ++ "n\">0</property></packing></child><child><object class=\"GtkHScale\" id" ++ "=\"dclick-time-scale\"><property name=\"visible\">True</property><prope" ++ "rty name=\"can_focus\">True</property><property name=\"tooltip_text\" t" ++ "ranslatable=\"yes\">Two mouse clicks in less than this length of time (" ++ "in milliseconds) will be considered a double click</property><property " ++ "name=\"update_policy\">delayed</property><property name=\"adjustment\">" ++ "dclick-time</property><property name=\"digits\">0</property><property n" ++ "ame=\"value_pos\">right</property></object><packing><property name=\"ex" ++ "pand\">True</property><property name=\"fill\">True</property><property " ++ "name=\"position\">1</property></packing></child><child><object class=\"" ++ "GtkLabel\" id=\"dclick-distance-label\"><property name=\"visible\">True" ++ "</property><property name=\"can_focus\">False</property><property name=" ++ "\"xalign\">0</property><property name=\"label\" translatable=\"yes\">D_" ++ "istance:</property><property name=\"use_underline\">True</property><pro" ++ "perty name=\"mnemonic_widget\">dclick-distance-scale</property></object" ++ "><packing><property name=\"expand\">True</property><property name=\"fil" ++ "l\">True</property><property name=\"position\">2</property></packing></" ++ "child><child><object class=\"GtkHScale\" id=\"dclick-distance-scale\"><" ++ "property name=\"visible\">True</property><property name=\"can_focus\">T" ++ "rue</property><property name=\"tooltip_text\" translatable=\"yes\">The " ++ "mouse pointer cannot move farther than this distance between two clicks" ++ " for them to be considered a double click</property><property name=\"up" ++ "date_policy\">delayed</property><property name=\"adjustment\">dclick-di" ++ "stance</property><property name=\"digits\">0</property><property name=\"" ++ "value_pos\">right</property></object><packing><property name=\"expand\"" ++ ">True</property><property name=\"fill\">True</property><property name=\"" ++ "position\">3</property></packing></child></object></child></object></ch" ++ "ild><child type=\"label\"><object class=\"GtkLabel\" id=\"label8\"><pro" ++ "perty name=\"visible\">True</property><property name=\"can_focus\">Fals" ++ "e</property><property name=\"label\" translatable=\"yes\">Double Click<" ++ "/property><attributes><attribute name=\"weight\" value=\"bold\"/></attr" ++ "ibutes></object></child></object><packing><property name=\"expand\">Fal" ++ "se</property><property name=\"fill\">True</property><property name=\"po" ++ "sition\">1</property></packing></child></object><packing><property name" ++ "=\"position\">1</property></packing></child><child type=\"tab\"><object" ++ " class=\"GtkLabel\" id=\"label2\"><property name=\"visible\">True</prop" + "erty><property name=\"can_focus\">False</property><property name=\"labe" +- "l\" translatable=\"yes\">Preview</property><attributes><attribute name=" +- "\"weight\" value=\"bold\"/></attributes></object></child></object><pack" +- "ing><property name=\"expand\">False</property><property name=\"fill\">T" +- "rue</property><property name=\"position\">1</property></packing></child" +- "></object><packing><property name=\"expand\">False</property><property " +- "name=\"fill\">True</property><property name=\"position\">1</property></" +- "packing></child></object><packing><property name=\"position\">2</proper" +- "ty></packing></child><child type=\"tab\"><object class=\"GtkLabel\" id=" +- "\"label3\"><property name=\"visible\">True</property><property name=\"c" +- "an_focus\">False</property><property name=\"label\" translatable=\"yes\"" +- ">T_heme</property><property name=\"use_underline\">True</property></obj" +- "ect><packing><property name=\"position\">2</property><property name=\"t" +- "ab_fill\">False</property></packing></child></object><packing><property" +- " name=\"expand\">True</property><property name=\"fill\">True</property>" +- "<property name=\"position\">1</property></packing></child></object></ch" +- "ild><action-widgets><action-widget response=\"0\">button1</action-widge" +- "t><action-widget response=\"-11\">button2</action-widget></action-widge" +- "ts></object><object class=\"GtkAdjustment\" id=\"theme-cursor-size\"><p" +- "roperty name=\"lower\">16</property><property name=\"upper\">48</proper" +- "ty><property name=\"value\">24</property><property name=\"step_incremen" +- "t\">1</property><property name=\"page_increment\">11</property></object" +- "><object class=\"GtkListStore\" id=\"wacom-mode-store\"><columns><colum" +- "n type=\"gchararray\"/><column type=\"gchararray\"/></columns><data><ro" +- "w><col id=\"0\">ABSOLUTE</col><col id=\"1\" translatable=\"yes\">Pen (a" +- "bsolute)</col></row><row><col id=\"0\">RELATIVE</col><col id=\"1\" tran" +- "slatable=\"yes\">Mouse (relative)</col></row></data></object><object cl" +- "ass=\"GtkListStore\" id=\"wacom-rotation-store\"><columns><column type=" +- "\"gint\"/><column type=\"gchararray\"/></columns><data><row><col id=\"0" +- "\">0</col><col id=\"1\" translatable=\"yes\">None (right-handed)</col><" +- "/row><row><col id=\"0\">3</col><col id=\"1\" translatable=\"yes\">Half " +- "(left-handed)</col></row><row><col id=\"0\">1</col><col id=\"1\" transl" +- "atable=\"yes\">Clockwise</col></row><row><col id=\"0\">2</col><col id=\"" +- "1\" translatable=\"yes\">Counterclockwise</col></row></data></object></" +- "interface>" ++ "l\" translatable=\"yes\">_Behavior</property><property name=\"use_under" ++ "line\">True</property></object><packing><property name=\"position\">1</" ++ "property><property name=\"tab_fill\">False</property></packing></child>" ++ "<child><object class=\"GtkHBox\" id=\"themes-hbox\"><property name=\"vi" ++ "sible\">True</property><property name=\"can_focus\">False</property><pr" ++ "operty name=\"border_width\">12</property><property name=\"spacing\">12" ++ "</property><child><object class=\"GtkScrolledWindow\" id=\"scrolledwind" ++ "ow2\"><property name=\"visible\">True</property><property name=\"can_fo" ++ "cus\">True</property><property name=\"hscrollbar_policy\">automatic</pr" ++ "operty><property name=\"vscrollbar_policy\">automatic</property><proper" ++ "ty name=\"shadow_type\">etched-in</property><child><object class=\"GtkT" ++ "reeView\" id=\"theme-treeview\"><property name=\"width_request\">200</p" ++ "roperty><property name=\"visible\">True</property><property name=\"can_" ++ "focus\">True</property><property name=\"headers_visible\">False</proper" ++ "ty></object></child></object><packing><property name=\"expand\">True</p" ++ "roperty><property name=\"fill\">True</property><property name=\"positio" ++ "n\">0</property></packing></child><child><object class=\"GtkVBox\" id=\"" ++ "vbox9\"><property name=\"visible\">True</property><property name=\"can_" ++ "focus\">False</property><property name=\"spacing\">6</property><child><" ++ "object class=\"GtkFrame\" id=\"frame5\"><property name=\"visible\">True" ++ "</property><property name=\"can_focus\">False</property><property name=" ++ "\"label_xalign\">0</property><property name=\"shadow_type\">none</prope" ++ "rty><child><object class=\"GtkAlignment\" id=\"alignment5\"><property n" ++ "ame=\"visible\">True</property><property name=\"can_focus\">False</prop" ++ "erty><property name=\"left_padding\">12</property><child><object class=" ++ "\"GtkHBox\" id=\"hbox7\"><property name=\"visible\">True</property><pro" ++ "perty name=\"can_focus\">False</property><property name=\"border_width\"" ++ ">6</property><property name=\"spacing\">12</property><child><object cla" ++ "ss=\"GtkLabel\" id=\"label21\"><property name=\"visible\">True</propert" ++ "y><property name=\"can_focus\">False</property><property name=\"label\"" ++ " translatable=\"yes\">Cursor si_ze:</property><property name=\"use_unde" ++ "rline\">True</property><property name=\"mnemonic_widget\">spin1</proper" ++ "ty></object><packing><property name=\"expand\">False</property><propert" ++ "y name=\"fill\">True</property><property name=\"position\">0</property>" ++ "</packing></child><child><object class=\"GtkSpinButton\" id=\"spin1\"><" ++ "property name=\"visible\">True</property><property name=\"can_focus\">T" ++ "rue</property><property name=\"primary_icon_activatable\">False</proper" ++ "ty><property name=\"secondary_icon_activatable\">False</property><prope" ++ "rty name=\"primary_icon_sensitive\">True</property><property name=\"sec" ++ "ondary_icon_sensitive\">True</property><property name=\"adjustment\">th" ++ "eme-cursor-size</property><property name=\"snap_to_ticks\">True</proper" ++ "ty><property name=\"numeric\">True</property></object><packing><propert" ++ "y name=\"expand\">False</property><property name=\"fill\">True</propert" ++ "y><property name=\"position\">1</property></packing></child></object></" ++ "child></object></child><child type=\"label\"><object class=\"GtkLabel\"" ++ " id=\"label20\"><property name=\"visible\">True</property><property nam" ++ "e=\"can_focus\">False</property><property name=\"label\" translatable=\"" ++ "yes\">Size</property><attributes><attribute name=\"weight\" value=\"bol" ++ "d\"/></attributes></object></child></object><packing><property name=\"e" ++ "xpand\">False</property><property name=\"fill\">True</property><propert" ++ "y name=\"position\">0</property></packing></child><child><object class=" ++ "\"GtkFrame\" id=\"frame6\"><property name=\"visible\">True</property><p" ++ "roperty name=\"can_focus\">False</property><property name=\"label_xalig" ++ "n\">0</property><property name=\"shadow_type\">none</property><child><o" ++ "bject class=\"GtkAlignment\" id=\"alignment6\"><property name=\"visible" ++ "\">True</property><property name=\"can_focus\">False</property><propert" ++ "y name=\"border_width\">6</property><property name=\"xalign\">0</proper" ++ "ty><property name=\"yalign\">0</property><property name=\"xscale\">0</p" ++ "roperty><property name=\"yscale\">0</property><property name=\"top_padd" ++ "ing\">6</property><property name=\"bottom_padding\">6</property><proper" ++ "ty name=\"left_padding\">18</property><property name=\"right_padding\">" ++ "6</property><child><object class=\"GtkImage\" id=\"theme-preview\"><pro" ++ "perty name=\"visible\">True</property><property name=\"can_focus\">Fals" ++ "e</property><property name=\"stock\">gtk-missing-image</property></obje" ++ "ct></child></object></child><child type=\"label\"><object class=\"GtkLa" ++ "bel\" id=\"label22\"><property name=\"visible\">True</property><propert" ++ "y name=\"can_focus\">False</property><property name=\"label\" translata" ++ "ble=\"yes\">Preview</property><attributes><attribute name=\"weight\" va" ++ "lue=\"bold\"/></attributes></object></child></object><packing><property" ++ " name=\"expand\">False</property><property name=\"fill\">True</property" ++ "><property name=\"position\">1</property></packing></child></object><pa" ++ "cking><property name=\"expand\">False</property><property name=\"fill\"" ++ ">True</property><property name=\"position\">1</property></packing></chi" ++ "ld></object><packing><property name=\"position\">2</property></packing>" ++ "</child><child type=\"tab\"><object class=\"GtkLabel\" id=\"label3\"><p" ++ "roperty name=\"visible\">True</property><property name=\"can_focus\">Fa" ++ "lse</property><property name=\"label\" translatable=\"yes\">_Theme</pro" ++ "perty><property name=\"use_underline\">True</property></object><packing" ++ "><property name=\"position\">2</property><property name=\"tab_fill\">Fa" ++ "lse</property></packing></child></object><packing><property name=\"expa" ++ "nd\">True</property><property name=\"fill\">True</property><property na" ++ "me=\"position\">1</property></packing></child></object></child><action-" ++ "widgets><action-widget response=\"-11\">button2</action-widget><action-" ++ "widget response=\"0\">button1</action-widget></action-widgets></object>" ++ "<object class=\"GtkListStore\" id=\"wacom-mode-store\"><columns><column" ++ " type=\"gchararray\"/><column type=\"gchararray\"/></columns><data><row" ++ "><col id=\"0\">ABSOLUTE</col><col id=\"1\" translatable=\"yes\">Pen (ab" ++ "solute)</col></row><row><col id=\"0\">RELATIVE</col><col id=\"1\" trans" ++ "latable=\"yes\">Mouse (relative)</col></row></data></object><object cla" ++ "ss=\"GtkListStore\" id=\"wacom-rotation-store\"><columns><column type=\"" ++ "gint\"/><column type=\"gchararray\"/></columns><data><row><col id=\"0\"" ++ ">0</col><col id=\"1\" translatable=\"yes\">None (right-handed)</col></r" ++ "ow><row><col id=\"0\">3</col><col id=\"1\" translatable=\"yes\">Half (l" ++ "eft-handed)</col></row><row><col id=\"0\">1</col><col id=\"1\" translat" ++ "able=\"yes\">Clockwise</col></row><row><col id=\"0\">2</col><col id=\"1" ++ "\" translatable=\"yes\">Counterclockwise</col></row></data></object></i" ++ "nterface>" + }; + +-static const unsigned mouse_dialog_ui_length = 37918u; ++static const unsigned mouse_dialog_ui_length = 38582u; + +-- +1.7.6.5 + 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 0000000000..eff052b68f --- /dev/null +++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0003-XfcePointersHelper-gets-a-pointer-to-XfceXSettingsHe.patch @@ -0,0 +1,137 @@ +From a3b0218137c8796fbb7bd6d852dc8ab5895a65cb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com> +Date: Sat, 3 Nov 2012 18:32:01 +0100 +Subject: [PATCH 3/5] XfcePointersHelper gets a pointer to XfceXSettingsHelper +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + +Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com> +Upstream-Status: Submitted [1] +[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474 +--- + xfsettingsd/main.c | 2 +- + xfsettingsd/pointers.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 56 insertions(+), 1 deletions(-) + +diff --git a/xfsettingsd/main.c b/xfsettingsd/main.c +index 55c4183..99982f7 100644 +--- a/xfsettingsd/main.c ++++ b/xfsettingsd/main.c +@@ -273,7 +273,7 @@ main (gint argc, gchar **argv) + #ifdef HAVE_XRANDR + displays_helper = g_object_new (XFCE_TYPE_DISPLAYS_HELPER, NULL); + #endif +- pointer_helper = g_object_new (XFCE_TYPE_POINTERS_HELPER, NULL); ++ pointer_helper = g_object_new (XFCE_TYPE_POINTERS_HELPER, "xsettings-helper", xsettings_helper, NULL); + keyboards_helper = g_object_new (XFCE_TYPE_KEYBOARDS_HELPER, NULL); + accessibility_helper = g_object_new (XFCE_TYPE_ACCESSIBILITY_HELPER, NULL); + shortcuts_helper = g_object_new (XFCE_TYPE_KEYBOARD_SHORTCUTS_HELPER, NULL); +diff --git a/xfsettingsd/pointers.c b/xfsettingsd/pointers.c +index e7192e7..62ebc60 100644 +--- a/xfsettingsd/pointers.c ++++ b/xfsettingsd/pointers.c +@@ -47,8 +47,16 @@ + + #define XFCONF_TYPE_G_VALUE_ARRAY (dbus_g_type_get_collection ("GPtrArray", G_TYPE_VALUE)) + ++/* Property identifiers */ ++enum ++{ ++ PROP_0, ++ PROP_XSETTINGS_HELPER, ++}; ++ + + ++static void xfce_pointers_helper_constructed (GObject *object); + static void xfce_pointers_helper_finalize (GObject *object); + static void xfce_pointers_helper_syndaemon_stop (XfcePointersHelper *helper); + static void xfce_pointers_helper_syndaemon_check (XfcePointersHelper *helper); +@@ -63,6 +71,10 @@ static GdkFilterReturn xfce_pointers_helper_event_filter (GdkXEvent + GdkEvent *gdk_event, + gpointer user_data); + #endif ++static void xfce_pointers_helper_set_property (GObject *object, ++ guint prop_id, ++ const GValue *value, ++ GParamSpec *pspec); + + + +@@ -75,6 +87,8 @@ struct _XfcePointersHelper + { + GObject __parent__; + ++ GObject *xsettings_helper; ++ + /* xfconf channel */ + XfconfChannel *channel; + +@@ -108,7 +122,18 @@ xfce_pointers_helper_class_init (XfcePointersHelperClass *klass) + { + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + ++ gobject_class->constructed = xfce_pointers_helper_constructed; + gobject_class->finalize = xfce_pointers_helper_finalize; ++ gobject_class->set_property = xfce_pointers_helper_set_property; ++ ++ g_object_class_install_property (gobject_class, ++ PROP_XSETTINGS_HELPER, ++ g_param_spec_object ("xsettings-helper", ++ "xsettings-helper", ++ "xsettings-helper", ++ G_TYPE_OBJECT, ++ G_PARAM_CONSTRUCT_ONLY | ++ G_PARAM_WRITABLE)); + } + + +@@ -116,6 +141,15 @@ xfce_pointers_helper_class_init (XfcePointersHelperClass *klass) + static void + xfce_pointers_helper_init (XfcePointersHelper *helper) + { ++ /* All initialisation is done at xfce_pointers_helper_constructed */ ++} ++ ++ ++ ++static void ++xfce_pointers_helper_constructed (GObject *object) ++{ ++ XfcePointersHelper *helper = XFCE_POINTERS_HELPER (object); + XExtensionVersion *version = NULL; + Display *xdisplay; + #ifdef DEVICE_HOTPLUGGING +@@ -181,6 +215,27 @@ xfce_pointers_helper_init (XfcePointersHelper *helper) + + + static void ++xfce_pointers_helper_set_property (GObject *object, ++ guint prop_id, ++ const GValue *value, ++ GParamSpec *pspec) ++{ ++ XfcePointersHelper *helper = XFCE_POINTERS_HELPER (object); ++ ++ switch (prop_id) ++ { ++ case PROP_XSETTINGS_HELPER: ++ helper->xsettings_helper = g_value_get_object (value); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++ ++ ++static void + xfce_pointers_helper_finalize (GObject *object) + { + xfce_pointers_helper_syndaemon_stop (XFCE_POINTERS_HELPER (object)); +-- +1.7.6.5 + 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 0000000000..180ccfd55f --- /dev/null +++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/0004-XfceXSettingsHelper-gets-a-property-touchscreen-poin.patch @@ -0,0 +1,251 @@ +From 878fe1287a4c73f67dd2b51d1d7c450097aeffa7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com> +Date: Thu, 20 Dec 2012 16:49:18 +0100 +Subject: [PATCH 4/5] XfceXSettingsHelper gets a property + "touchscreen-pointer" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When this property is set, it overrides overrides cursor theme to +"xfce-invisible" and sets /Gtk/TouchscreenMode. + +Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com> +Upstream-Status: Submitted [1] +[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474 +--- + xfsettingsd/xsettings.c | 122 ++++++++++++++++++++++++++++++++++++++++++++- + xfsettingsd/xsettings.xml | 1 + + 2 files changed, 122 insertions(+), 1 deletions(-) + +diff --git a/xfsettingsd/xsettings.c b/xfsettingsd/xsettings.c +index 7657465..76bcea1 100644 +--- a/xfsettingsd/xsettings.c ++++ b/xfsettingsd/xsettings.c +@@ -73,6 +73,15 @@ typedef struct _XfceXSettingsNotify XfceXSettingsNotify; + + + ++/* Property identifiers */ ++enum ++{ ++ PROP_0, ++ PROP_TOUCHSCREEN_POINTER, ++}; ++ ++ ++ + static void xfce_xsettings_helper_finalize (GObject *object); + static void xfce_xsettings_helper_fc_free (XfceXSettingsHelper *helper); + static gboolean xfce_xsettings_helper_fc_init (gpointer data); +@@ -86,6 +95,10 @@ static void xfce_xsettings_helper_load (XfceXSettingsHelper *helper) + static void xfce_xsettings_helper_screen_free (XfceXSettingsScreen *screen); + static void xfce_xsettings_helper_notify_xft (XfceXSettingsHelper *helper); + static void xfce_xsettings_helper_notify (XfceXSettingsHelper *helper); ++static void xfce_xsettings_helper_set_property (GObject *object, ++ guint prop_id, ++ const GValue *value, ++ GParamSpec *pspec); + + + +@@ -120,6 +133,13 @@ struct _XfceXSettingsHelper + GPtrArray *fc_monitors; + guint fc_notify_timeout_id; + guint fc_init_id; ++ ++ /* keeper for touchscreen cursor theme / last set */ ++ GValue *touchscreen_cursor_value; ++ GValue *lastset_cursor_value; ++ ++ /* properties */ ++ gboolean touchscreen_pointer; + }; + + struct _XfceXSetting +@@ -157,6 +177,16 @@ xfce_xsettings_helper_class_init (XfceXSettingsHelperClass *klass) + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = xfce_xsettings_helper_finalize; ++ gobject_class->set_property = xfce_xsettings_helper_set_property; ++ ++ g_object_class_install_property (gobject_class, ++ PROP_TOUCHSCREEN_POINTER, ++ g_param_spec_boolean ("touchscreen-pointer", ++ "touchscreen-pointer", ++ "touchscreen-pointer", ++ FALSE, ++ G_PARAM_WRITABLE | ++ G_PARAM_STATIC_STRINGS)); + } + + +@@ -169,6 +199,13 @@ xfce_xsettings_helper_init (XfceXSettingsHelper *helper) + helper->settings = g_hash_table_new_full (g_str_hash, g_str_equal, + g_free, xfce_xsettings_helper_setting_free); + ++ helper->lastset_cursor_value = g_new0 (GValue, 1); ++ g_value_init(helper->lastset_cursor_value, G_TYPE_STRING); ++ g_value_set_string (helper->lastset_cursor_value, "default"); ++ helper->touchscreen_cursor_value = g_new0 (GValue, 1); ++ g_value_init(helper->touchscreen_cursor_value, G_TYPE_STRING); ++ g_value_set_string (helper->touchscreen_cursor_value, "xfce-invisible"); ++ + xfce_xsettings_helper_load (helper); + + g_signal_connect (G_OBJECT (helper->channel), "property-changed", +@@ -202,6 +239,9 @@ xfce_xsettings_helper_finalize (GObject *object) + + g_hash_table_destroy (helper->settings); + ++ g_free (helper->lastset_cursor_value); ++ g_free (helper->touchscreen_cursor_value); ++ + (*G_OBJECT_CLASS (xfce_xsettings_helper_parent_class)->finalize) (object); + } + +@@ -387,6 +427,61 @@ xfce_xsettings_helper_notify_xft_idle (gpointer data) + + + ++static void ++xfce_xsettings_helper_set_property (GObject *object, ++ guint prop_id, ++ const GValue *value, ++ GParamSpec *pspec) ++{ ++ gboolean touchscreen_pointer; ++ XfceXSetting *setting_theme, *setting_touchscreen; ++ XfceXSettingsHelper *helper = XFCE_XSETTINGS_HELPER (object); ++ GtkSettings *gtk_settings; ++ GValue bool_val = { 0, }; ++ ++ switch (prop_id) ++ { ++ case PROP_TOUCHSCREEN_POINTER: ++ touchscreen_pointer = g_value_get_boolean (value); ++ if (helper->touchscreen_pointer != touchscreen_pointer) ++ { ++ helper->touchscreen_pointer = touchscreen_pointer; ++ /* Update touchscreen-mode */ ++ xfconf_channel_set_bool (helper->channel, "/Gtk/TouchscreenMode", touchscreen_pointer); ++ /* Update cursor */ ++ setting_theme = g_hash_table_lookup (helper->settings, "/Gtk/CursorThemeName"); ++ if (G_LIKELY (setting_theme != NULL)) ++ { ++ /* update the serial */ ++ setting_theme->last_change_serial = helper->serial; ++ /* update value */ ++ g_value_reset (setting_theme->value); ++ g_value_copy (touchscreen_pointer ? ++ helper->touchscreen_cursor_value : ++ helper->lastset_cursor_value, ++ setting_theme->value); ++ } ++ else ++ g_critical("Setting not found for /Gtk/CursorThemeName"); ++ ++ if (G_LIKELY (setting_touchscreen != NULL || setting_theme != NULL)) ++ { ++ /* schedule xsettings update */ ++ if (helper->notify_idle_id == 0) ++ helper->notify_idle_id = g_idle_add (xfce_xsettings_helper_notify_idle, helper); ++ if (helper->notify_xft_idle_id == 0) ++ helper->notify_xft_idle_id = g_idle_add (xfce_xsettings_helper_notify_xft_idle, helper); ++ } ++ } ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++ ++ + static gboolean + xfce_xsettings_helper_prop_valid (const gchar *prop_name, + const GValue *value) +@@ -413,6 +508,28 @@ xfce_xsettings_helper_prop_valid (const gchar *prop_name, + + + ++static void ++xfce_xsettings_helper_check_cursor (const gchar *prop_name, ++ GValue *value, ++ XfceXSettingsHelper *helper) ++{ ++ if (g_strcmp0 (prop_name, "/Gtk/CursorThemeName") == 0) ++ { ++ /* Keep last cursor theme set */ ++ g_value_reset (helper->lastset_cursor_value); ++ g_value_copy (value, helper->lastset_cursor_value); ++ ++ /* invisible replacement required ? */ ++ if (helper->touchscreen_pointer) ++ { ++ g_value_reset (value); ++ g_value_copy (helper->touchscreen_cursor_value, value); ++ } ++ } ++} ++ ++ ++ + static gboolean + xfce_xsettings_helper_prop_load (gchar *prop_name, + GValue *value, +@@ -426,6 +543,7 @@ xfce_xsettings_helper_prop_load (gchar *prop_name, + + setting = g_slice_new0 (XfceXSetting); + setting->value = value; ++ xfce_xsettings_helper_check_cursor (prop_name, setting->value, helper); + setting->last_change_serial = helper->serial; + + xfsettings_dbg_filtered (XFSD_DEBUG_XSETTINGS, "prop \"%s\" loaded (type=%s)", +@@ -462,6 +580,7 @@ xfce_xsettings_helper_prop_changed (XfconfChannel *channel, + * it first */ + g_value_reset (setting->value); + g_value_copy (value, setting->value); ++ xfce_xsettings_helper_check_cursor (prop_name, setting->value, helper); + + /* update the serial */ + setting->last_change_serial = helper->serial; +@@ -475,6 +594,7 @@ xfce_xsettings_helper_prop_changed (XfconfChannel *channel, + + g_value_init (setting->value, G_VALUE_TYPE (value)); + g_value_copy (value, setting->value); ++ xfce_xsettings_helper_check_cursor (prop_name, setting->value, helper); + + g_hash_table_insert (helper->settings, g_strdup (prop_name), setting); + } +@@ -649,6 +769,7 @@ xfce_xsettings_helper_notify_xft (XfceXSettingsHelper *helper) + XfceXSetting *setting; + guint i; + GValue bool_val = { 0, }; ++ + const gchar *props[][2] = + { + /* { xfconf name}, { xft name } */ +@@ -700,7 +821,6 @@ xfce_xsettings_helper_notify_xft (XfceXSettingsHelper *helper) + PropModeReplace, + (guchar *) resource->str, + resource->len); +- + XCloseDisplay (xdisplay); + + if (gdk_error_trap_pop () != 0) +diff --git a/xfsettingsd/xsettings.xml b/xfsettingsd/xsettings.xml +index 0a579d6..baa413c 100644 +--- a/xfsettingsd/xsettings.xml ++++ b/xfsettingsd/xsettings.xml +@@ -41,5 +41,6 @@ + <property name="MenuBarAccel" type="string" value="F10"/> + <property name="CursorThemeName" type="string" value=""/> + <property name="CursorThemeSize" type="int" value="0"/> ++ <property name="TouchscreenMode" type="bool" value="false"/> + <property name="IMModule" type="string" value=""/> + </property> +</channel>-- +1.7.6.5 + 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 0000000000..edcb4e1cd1 --- /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 @@ +From 37f5e33511499d320c3035c5377425004657faa5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com> +Date: Thu, 20 Dec 2012 16:58:19 +0100 +Subject: [PATCH 5/5] pointers: detect a change of pointer-device used and set + "touchscreen-pointer" as found in xfconf +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +To detect pointer device in use the DevicePresence-, DeviceMotionNotify- and +DeviceButtonPress-events are handled. Tests showed that by repopenning and +closing the pointer devices (e.g when another setting was modified), the events +stopped working. Therefore all pointer devices are opened only once and managed +in a hash table. + +Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com> +Upstream-Status: Submitted [1] +[1] https://bugzilla.xfce.org/show_bug.cgi?id=9474 +--- + xfsettingsd/pointers.c | 337 +++++++++++++++++++++++++++++++---------------- + 1 files changed, 222 insertions(+), 115 deletions(-) + +diff --git a/xfsettingsd/pointers.c b/xfsettingsd/pointers.c +index 62ebc60..32662cc 100644 +--- a/xfsettingsd/pointers.c ++++ b/xfsettingsd/pointers.c +@@ -66,11 +66,9 @@ static void xfce_pointers_helper_channel_property_changed (XfconfCha + const gchar *property_name, + const GValue *value, + XfcePointersHelper *helper); +-#ifdef DEVICE_HOTPLUGGING + static GdkFilterReturn xfce_pointers_helper_event_filter (GdkXEvent *xevent, + GdkEvent *gdk_event, + gpointer user_data); +-#endif + static void xfce_pointers_helper_set_property (GObject *object, + guint prop_id, + const GValue *value, +@@ -96,8 +94,11 @@ struct _XfcePointersHelper + GPid syndaemon_pid; + #endif + ++ GHashTable *pointer_devices; ++ XID last_pointer_active; ++ gint device_motion_event_type; ++ gint device_button_press_event_type; + #ifdef DEVICE_HOTPLUGGING +- /* device presence event type */ + gint device_presence_event_type; + #endif + }; +@@ -117,6 +118,15 @@ G_DEFINE_TYPE (XfcePointersHelper, xfce_pointers_helper, G_TYPE_OBJECT); + + + ++typedef struct ++{ ++ XDevice *device; ++ gchar* name; ++} ++XfcePointerDeviceData; ++ ++ ++ + static void + xfce_pointers_helper_class_init (XfcePointersHelperClass *klass) + { +@@ -147,6 +157,18 @@ xfce_pointers_helper_init (XfcePointersHelper *helper) + + + static void ++xfce_pointers_device_close (gpointer data) ++{ ++ XfcePointerDeviceData *device_data = data; ++ ++ XCloseDevice (GDK_DISPLAY (), device_data->device); ++ g_free (device_data->name); ++ g_free (device_data); ++} ++ ++ ++ ++static void + xfce_pointers_helper_constructed (GObject *object) + { + XfcePointersHelper *helper = XFCE_POINTERS_HELPER (object); +@@ -185,6 +207,10 @@ xfce_pointers_helper_constructed (GObject *object) + helper->channel = xfconf_channel_get ("pointers"); + + /* restore the pointer devices */ ++ helper->pointer_devices = g_hash_table_new_full (g_int_hash, ++ g_int_equal, ++ g_free, ++ xfce_pointers_device_close); + xfce_pointers_helper_restore_devices (helper, NULL); + + /* monitor the channel */ +@@ -194,21 +220,20 @@ xfce_pointers_helper_constructed (GObject *object) + /* launch syndaemon if required */ + xfce_pointers_helper_syndaemon_check (helper); + +-#ifdef DEVICE_HOTPLUGGING + if (G_LIKELY (xdisplay != NULL)) + { ++#ifdef DEVICE_HOTPLUGGING + /* monitor device changes */ + gdk_error_trap_push (); + DevicePresence (xdisplay, helper->device_presence_event_type, event_class); + XSelectExtensionEvent (xdisplay, RootWindow (xdisplay, DefaultScreen (xdisplay)), &event_class, 1); + + /* add an event filter */ +- if (gdk_error_trap_pop () == 0) +- gdk_window_add_filter (NULL, xfce_pointers_helper_event_filter, helper); +- else ++ if (gdk_error_trap_pop () != 0) + g_warning ("Failed to create device filter"); +- } + #endif ++ gdk_window_add_filter (NULL, xfce_pointers_helper_event_filter, helper); ++ } + } + } + +@@ -238,7 +263,10 @@ xfce_pointers_helper_set_property (GObject *object, + static void + xfce_pointers_helper_finalize (GObject *object) + { +- xfce_pointers_helper_syndaemon_stop (XFCE_POINTERS_HELPER (object)); ++ XfcePointersHelper* helper = XFCE_POINTERS_HELPER (object); ++ ++ xfce_pointers_helper_syndaemon_stop (helper); ++ g_hash_table_destroy (helper->pointer_devices); + + (*G_OBJECT_CLASS (xfce_pointers_helper_parent_class)->finalize) (object); + } +@@ -267,17 +295,17 @@ static void + xfce_pointers_helper_syndaemon_check (XfcePointersHelper *helper) + { + #ifdef DEVICE_PROPERTIES +- Display *xdisplay = GDK_DISPLAY (); +- XDeviceInfo *device_list; +- XDevice *device; +- gint n, ndevices; +- Atom touchpad_type; +- Atom touchpad_off_prop; +- Atom *props; +- gint i, nprops; +- gboolean have_synaptics = FALSE; +- gchar *args[] = { "syndaemon", "-i", "2.0", "-K", "-R", NULL }; +- GError *error = NULL; ++ Display *xdisplay = GDK_DISPLAY (); ++ XDeviceInfo *device_list; ++ XfcePointerDeviceData *device_data; ++ gint n, ndevices; ++ Atom touchpad_type; ++ Atom touchpad_off_prop; ++ Atom *props; ++ gint i, nprops; ++ gboolean have_synaptics = FALSE; ++ gchar *args[] = { "syndaemon", "-i", "2.0", "-K", "-R", NULL }; ++ GError *error = NULL; + + /* only stop a running daemon */ + if (!xfconf_channel_get_bool (helper->channel, "/DisableTouchpadWhileTyping", FALSE)) +@@ -297,17 +325,16 @@ xfce_pointers_helper_syndaemon_check (XfcePointersHelper *helper) + if (device_list[n].type != touchpad_type) + continue; + +- gdk_error_trap_push (); +- device = XOpenDevice (xdisplay, device_list[n].id); +- if (gdk_error_trap_pop () != 0 || device == NULL) ++ device_data = g_hash_table_lookup (helper->pointer_devices, &device_list[n].id); ++ if (device_data == NULL) + { +- g_critical ("Unable to open device %s", device_list[n].name); ++ 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); + break; + } + + /* look for the Synaptics Off property */ + gdk_error_trap_push (); +- props = XListDeviceProperties (xdisplay, device, &nprops); ++ props = XListDeviceProperties (xdisplay, device_data->device, &nprops); + if (gdk_error_trap_pop () == 0 + && props != NULL) + { +@@ -317,8 +344,6 @@ xfce_pointers_helper_syndaemon_check (XfcePointersHelper *helper) + XFree (props); + } + +- XCloseDevice (xdisplay, device); +- + if (have_synaptics) + break; + } +@@ -844,24 +869,56 @@ xfce_pointers_helper_change_properties (gpointer key, + + + static void ++xfce_pointers_helper_change_current_device (XfcePointersHelper *helper, ++ XID *xid) ++{ ++ XfcePointerDeviceData *device_data; ++ gchar* prop; ++ GValue bool_val = { 0, }; ++ ++ helper->last_pointer_active = *xid; ++ device_data = g_hash_table_lookup (helper->pointer_devices, xid); ++ if (device_data == NULL) ++ { ++ g_critical ("Unable to find device ID %i in hash table", *xid); ++ return; ++ } ++ if (G_LIKELY (G_IS_OBJECT (helper->xsettings_helper))) ++ { ++ prop = g_strconcat ("/", device_data->name, "/TouchscreenPointer", NULL); ++ g_value_init (&bool_val, G_TYPE_BOOLEAN); ++ g_value_set_boolean (&bool_val, ++ xfconf_channel_get_bool (helper->channel, prop, FALSE)); ++ g_object_set_property (helper->xsettings_helper, "touchscreen-pointer", &bool_val); ++ g_value_unset (&bool_val); ++ g_free (prop); ++ } ++ else ++ g_critical ("xsettings_helper was not properly set"); ++} ++ ++ ++static void + xfce_pointers_helper_restore_devices (XfcePointersHelper *helper, + XID *xid) + { +- Display *xdisplay = GDK_DISPLAY (); +- XDeviceInfo *device_list, *device_info; +- gint n, ndevices; +- XDevice *device; +- gchar *device_name; +- gchar prop[256]; +- gboolean right_handed; +- gboolean reverse_scrolling; +- gint threshold; +- gdouble acceleration; ++ Display *xdisplay = GDK_DISPLAY (); ++ XDeviceInfo *device_list, *device_info; ++ gint n, ndevices; ++ XDevice *device; ++ XfcePointerDeviceData *device_data; ++ gchar *device_name; ++ gchar prop[256]; ++ gboolean right_handed; ++ gboolean reverse_scrolling; ++ gint threshold; ++ gdouble acceleration; ++ XEventClass event_classes[2]; + #ifdef DEVICE_PROPERTIES +- GHashTable *props; +- XfcePointerData pointer_data; ++ GHashTable *props; ++ XfcePointerData pointer_data; + #endif +- const gchar *mode; ++ const gchar *mode; + + gdk_error_trap_push (); + device_list = XListInputDevices (xdisplay, &ndevices); +@@ -873,84 +930,107 @@ xfce_pointers_helper_restore_devices (XfcePointersHelper *helper, + + for (n = 0; n < ndevices; n++) + { +- /* filter the pointer devices */ ++ /* filter the physical pointer devices */ + device_info = &device_list[n]; + if (device_info->use != IsXExtensionPointer +- || device_info->name == NULL) ++ || device_info->name == NULL ++ || g_str_has_prefix (device_info->name, "Virtual core XTEST")) + continue; + + /* filter out the device if one is set */ + if (xid != NULL && device_info->id != *xid) + continue; + +- /* open the device */ +- gdk_error_trap_push (); +- device = XOpenDevice (xdisplay, device_info->id); +- if (gdk_error_trap_pop () != 0 || device == NULL) ++ device_data = g_hash_table_lookup (helper->pointer_devices, &device_info->id); ++ if (device_data == NULL) + { +- g_critical ("Unable to open device %s", device_info->name); +- continue; +- } ++ /* open the device and insert to hash */ ++ gdk_error_trap_push (); ++ device = XOpenDevice (xdisplay, device_info->id); ++ if (G_UNLIKELY(gdk_error_trap_pop () != 0 || device == NULL)) ++ { ++ g_critical ("Unable to open device %s / ID: %i", device_info->name, device_info->id); ++ continue; ++ } + +- /* create a valid xfconf property name for the device */ +- device_name = xfce_pointers_helper_device_xfconf_name (device_info->name); ++ /* create a valid xfconf property name for the device */ ++ device_name = xfce_pointers_helper_device_xfconf_name (device_info->name); + +- /* read buttonmap properties */ +- g_snprintf (prop, sizeof (prop), "/%s/RightHanded", device_name); +- right_handed = xfconf_channel_get_bool (helper->channel, prop, -1); ++ /* add device to our list */ ++ device_data = g_new (XfcePointerDeviceData, 1); ++ device_data->device = device; ++ device_data->name = device_name; ++ g_hash_table_insert (helper->pointer_devices, g_memdup (&device_info->id, sizeof(device_info->id)), device_data); + +- g_snprintf (prop, sizeof (prop), "/%s/ReverseScrolling", device_name); +- reverse_scrolling = xfconf_channel_get_bool (helper->channel, prop, -1); ++ /* catch motion event / button-press for new device */ ++ gdk_error_trap_push (); ++ DeviceMotionNotify (device, helper->device_motion_event_type, event_classes[0]); ++ DeviceButtonPress (device, helper->device_button_press_event_type, event_classes[1]); ++ XSelectExtensionEvent (xdisplay, RootWindow (xdisplay, DefaultScreen (xdisplay)), event_classes, 2); ++ if (G_UNLIKELY (gdk_error_trap_pop () != 0)) ++ g_critical ("Unable to register DeviceButtonPress/DeviceMotionNotify for %i", device_info->id); + +- if (right_handed != -1 || reverse_scrolling != -1) +- { +- xfce_pointers_helper_change_button_mapping (device_info, device, xdisplay, ++ ++ /* read buttonmap properties */ ++ g_snprintf (prop, sizeof (prop), "/%s/RightHanded", device_name); ++ right_handed = xfconf_channel_get_bool (helper->channel, prop, -1); ++ ++ g_snprintf (prop, sizeof (prop), "/%s/ReverseScrolling", device_name); ++ reverse_scrolling = xfconf_channel_get_bool (helper->channel, prop, -1); ++ ++ if (right_handed != -1 || reverse_scrolling != -1) ++ { ++ xfce_pointers_helper_change_button_mapping (device_info, device, xdisplay, + right_handed, reverse_scrolling); +- } ++ } + +- /* read feedback settings */ +- g_snprintf (prop, sizeof (prop), "/%s/Threshold", device_name); +- threshold = xfconf_channel_get_int (helper->channel, prop, -1); ++ /* read feedback settings */ ++ g_snprintf (prop, sizeof (prop), "/%s/Threshold", device_name); ++ threshold = xfconf_channel_get_int (helper->channel, prop, -1); + +- g_snprintf (prop, sizeof (prop), "/%s/Acceleration", device_name); +- acceleration = xfconf_channel_get_double (helper->channel, prop, -1.00); ++ g_snprintf (prop, sizeof (prop), "/%s/Acceleration", device_name); ++ acceleration = xfconf_channel_get_double (helper->channel, prop, -1.00); + +- if (threshold != -1 || acceleration != -1.00) +- { +- xfce_pointers_helper_change_feedback (device_info, device, xdisplay, +- threshold, acceleration); +- } ++ if (threshold != -1 || acceleration != -1.00) ++ { ++ xfce_pointers_helper_change_feedback (device_info, device, xdisplay, ++ threshold, acceleration); ++ } + +- /* read mode settings */ +- g_snprintf (prop, sizeof (prop), "/%s/Mode", device_name); +- mode = xfconf_channel_get_string (helper->channel, prop, NULL); ++ /* read mode settings */ ++ g_snprintf (prop, sizeof (prop), "/%s/Mode", device_name); ++ mode = xfconf_channel_get_string (helper->channel, prop, NULL); + +- if (mode != NULL) +- xfce_pointers_helper_change_mode (device_info, device, xdisplay, mode); ++ if (mode != NULL) ++ xfce_pointers_helper_change_mode (device_info, device, xdisplay, mode); + + #ifdef DEVICE_PROPERTIES +- /* set device properties */ +- g_snprintf (prop, sizeof (prop), "/%s/Properties", device_name); +- props = xfconf_channel_get_properties (helper->channel, prop); ++ /* set device properties */ ++ g_snprintf (prop, sizeof (prop), "/%s/Properties", device_name); ++ props = xfconf_channel_get_properties (helper->channel, prop); + +- if (props != NULL) +- { +- pointer_data.xdisplay = xdisplay; +- pointer_data.device = device; +- pointer_data.device_info = device_info; +- pointer_data.prop_name_len = strlen (prop) + 1; ++ if (props != NULL) ++ { ++ pointer_data.xdisplay = xdisplay; ++ pointer_data.device = device; ++ pointer_data.device_info = device_info; ++ pointer_data.prop_name_len = strlen (prop) + 1; + +- g_hash_table_foreach (props, xfce_pointers_helper_change_properties, &pointer_data); ++ g_hash_table_foreach (props, xfce_pointers_helper_change_properties, &pointer_data); + +- g_hash_table_destroy (props); +- } ++ g_hash_table_destroy (props); ++ } + #endif +- +- g_free (device_name); +- XCloseDevice (xdisplay, device); ++ } + } +- + XFreeDeviceList (device_list); ++ if (G_LIKELY (device_data != NULL)) ++ { ++ if (helper->last_pointer_active != device_data->device->device_id) ++ xfce_pointers_helper_change_current_device (helper, &device_data->device->device_id); ++ } ++ else ++ g_critical("no device selected in xfce_pointers_helper_restore_devices"); + } + + +@@ -961,12 +1041,12 @@ xfce_pointers_helper_channel_property_changed (XfconfChannel *channel, + const GValue *value, + XfcePointersHelper *helper) + { +- Display *xdisplay = GDK_DISPLAY (); +- XDeviceInfo *device_list, *device_info; +- XDevice *device; +- gint n, ndevices; +- gchar **names; +- gchar *device_name; ++ Display *xdisplay = GDK_DISPLAY (); ++ XDeviceInfo *device_list, *device_info; ++ XfcePointerDeviceData *device_data; ++ gint n, ndevices; ++ gchar **names; ++ gchar *device_name; + + if (G_UNLIKELY (property_name == NULL)) + return; +@@ -996,63 +1076,72 @@ xfce_pointers_helper_channel_property_changed (XfconfChannel *channel, + /* filter the pointer devices */ + device_info = &device_list[n]; + if (device_info->use != IsXExtensionPointer +- || device_info->name == NULL) ++ || device_info->name == NULL ++ || g_str_has_prefix (device_info->name, "Virtual core XTEST")) + continue; + + /* search the device name */ + device_name = xfce_pointers_helper_device_xfconf_name (device_info->name); + if (strcmp (names[0], device_name) == 0) + { +- /* open the device */ +- gdk_error_trap_push (); +- device = XOpenDevice (xdisplay, device_info->id); +- if (gdk_error_trap_pop () != 0 || device == NULL) ++ /* find the device */ ++ device_data = g_hash_table_lookup (helper->pointer_devices, &device_info->id); ++ if (device_data == NULL) + { +- g_critical ("Unable to open device %s", device_info->name); ++ g_critical ("xfce_pointers_helper_channel_property_changed: Unable to find device %s / ID %i in hash table", device_info->name, device_info->id); + continue; + } + + /* check the property that requires updating */ + if (strcmp (names[1], "RightHanded") == 0) + { +- xfce_pointers_helper_change_button_mapping (device_info, device, xdisplay, ++ xfce_pointers_helper_change_button_mapping (device_info, device_data->device, xdisplay, + g_value_get_boolean (value), -1); + } + else if (strcmp (names[1], "ReverseScrolling") == 0) + { +- xfce_pointers_helper_change_button_mapping (device_info, device, xdisplay, ++ xfce_pointers_helper_change_button_mapping (device_info, device_data->device, xdisplay, + -1, g_value_get_boolean (value)); + } + else if (strcmp (names[1], "Threshold") == 0) + { +- xfce_pointers_helper_change_feedback (device_info, device, xdisplay, ++ xfce_pointers_helper_change_feedback (device_info, device_data->device, xdisplay, + g_value_get_int (value), -2.00); + } + else if (strcmp (names[1], "Acceleration") == 0) + { +- xfce_pointers_helper_change_feedback (device_info, device, xdisplay, ++ xfce_pointers_helper_change_feedback (device_info, device_data->device, xdisplay, + -2, g_value_get_double (value)); + } + #ifdef DEVICE_PROPERTIES + else if (strcmp (names[1], "Properties") == 0) + { +- xfce_pointers_helper_change_property (device_info, device, xdisplay, ++ xfce_pointers_helper_change_property (device_info, device_data->device, xdisplay, + names[2], value); + } + #endif + else if (strcmp (names[1], "Mode") == 0) + { +- xfce_pointers_helper_change_mode (device_info, device, xdisplay, ++ xfce_pointers_helper_change_mode (device_info, device_data->device, xdisplay, + g_value_get_string (value)); + } ++ else if (strcmp (names[1], "TouchscreenPointer") == 0) ++ { ++ /* only hide if the current device's property was changed */ ++ if (device_info->id == helper->last_pointer_active) ++ { ++ if (G_LIKELY (G_IS_OBJECT (helper->xsettings_helper))) ++ g_object_set_property (helper->xsettings_helper, "touchscreen-pointer", value); ++ else ++ g_critical ("xsettings_helper was not properly set"); ++ } ++ } + else + { + g_warning ("Unknown property %s set for device %s", + property_name, device_info->name); + } + +- XCloseDevice (xdisplay, device); +- + /* stop searching */ + n = ndevices; + } +@@ -1068,26 +1157,44 @@ xfce_pointers_helper_channel_property_changed (XfconfChannel *channel, + + + +-#ifdef DEVICE_HOTPLUGGING + static GdkFilterReturn + xfce_pointers_helper_event_filter (GdkXEvent *xevent, + GdkEvent *gdk_event, + gpointer user_data) + { ++ XDevicePresenceNotifyEvent *dpn_event; + XEvent *event = xevent; +- XDevicePresenceNotifyEvent *dpn_event = xevent; + XfcePointersHelper *helper = XFCE_POINTERS_HELPER (user_data); + +- if (event->type == helper->device_presence_event_type) ++ /* Comparison for device changed is done here redundantly to prevent call ++ * on every mouse move. ++ */ ++ if (event->type == helper->device_motion_event_type ++ && helper->last_pointer_active != ((XDeviceMotionEvent*)xevent)->deviceid) ++ xfce_pointers_helper_change_current_device (helper, &((XDeviceMotionEvent*)xevent)->deviceid); ++ else if (event->type == helper->device_button_press_event_type ++ && helper->last_pointer_active != ((XDeviceButtonEvent*)xevent)->deviceid) ++ xfce_pointers_helper_change_current_device (helper, &((XDeviceButtonEvent*)xevent)->deviceid); ++ ++#ifdef DEVICE_HOTPLUGGING ++ /* handle device add/remove */ ++ else if (event->type == helper->device_presence_event_type) + { ++ dpn_event = xevent; + /* restore device settings */ + if (dpn_event->devchange == DeviceAdded) + xfce_pointers_helper_restore_devices (helper, &dpn_event->deviceid); ++ else if(dpn_event->devchange == DeviceRemoved) ++ /* we could try to find a remaining pointer to set that as active ++ * one but that might not fit and as soon as the user works with ++ * another pointer we are changing to correct one. ++ */ ++ g_hash_table_remove (helper->pointer_devices, &dpn_event->deviceid); + + /* check if we need to launch syndaemon */ + xfce_pointers_helper_syndaemon_check (helper); + } ++#endif + + return GDK_FILTER_CONTINUE; + } +-#endif +-- +1.7.6.5 + diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/invisible b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/invisible Binary files differnew file mode 100644 index 0000000000..ef4d9aadb6 --- /dev/null +++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/invisible diff --git a/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/wait b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/wait Binary files differnew file mode 100644 index 0000000000..8b9ac7e20a --- /dev/null +++ b/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings/touchscreen/wait 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 7075e2a534..9b6205b2dd 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" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" DEPENDS = "exo garcon gtk+ libxfce4util libxfce4ui xfconf dbus-glib libxi virtual/libx11 xrandr libnotify libxcursor libxklavier" -PR = "r1" +PR = "r2" inherit xfce SRC_URI += "file://0001-xsettings.xml-remove-trouble-causing-comment.patch \ - file://0002-xsettings.xml-Set-default-themes.patch" + file://0002-xsettings.xml-Set-default-themes.patch \ + file://touchscreen/invisible \ + file://touchscreen/wait \ + file://touchscreen/0001-add-cursor-theme-xfce-invisible.patch \ + file://touchscreen/0002-mouse-settings-dialog-add-touchscreen-pointer-option.patch \ + file://touchscreen/0003-XfcePointersHelper-gets-a-pointer-to-XfceXSettingsHe.patch \ + file://touchscreen/0004-XfceXSettingsHelper-gets-a-property-touchscreen-poin.patch \ + file://touchscreen/0005-pointers-detect-a-change-of-pointer-device-used-and-.patch \ +" SRC_URI[md5sum] = "cc4dd9179ead9046c056431f01a12000" SRC_URI[sha256sum] = "0843f09ba9673f1d1b5df8dce4a17b63c183a9ba3be75fb6ef99a67fc8c1f77e" FILES_${PN} += "${libdir}/xfce4" +do_install_prepend() { + # somehow binary files are not patched correctly by oe-patch - so copy them + cp ${WORKDIR}/touchscreen/invisible ${S}/cursors + cp ${WORKDIR}/touchscreen/wait ${S}/cursors +} + RRECOMMENDS_${PN} += "gnome-icon-theme" |