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