Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package gtk+3.0. Version 3.4.2-5 fixes important bug #692235. The debdiff is attached. unblock gtk+3.0/3.4.2-5 Cheers, -- .''`. Sébastien Villemot : :' : Debian Developer `. `' http://www.dynare.org/sebastien `- GPG Key: 4096R/381A7594
diff -Nru gtk+3.0-3.4.2/debian/changelog gtk+3.0-3.4.2/debian/changelog --- gtk+3.0-3.4.2/debian/changelog 2012-09-21 18:30:43.000000000 +0200 +++ gtk+3.0-3.4.2/debian/changelog 2013-01-09 11:00:45.000000000 +0100 @@ -1,3 +1,17 @@ +gtk+3.0 (3.4.2-5) unstable; urgency=low + + * debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch: + This patch fixes handling of key events for different layouts in + GtkPlug. In particular, it fixes the keyboard layout switching from + gnome-screensaver when the screen is locked. Closes: #692235 + * debian/libgtk-3-0.symbols: add gdk_x11_keymap_get_group_for_state and + gdk_x11_keymap_key_is_modifier which are introduced by the above patch + (actually backported from the 3.5.2 API). + * debian/rules: call dh_makeshlibs with -V 'libgtk-3-0 (>= 3.4.2-5~)', + since we introduced new public symbols in this Debian revision. + + -- Sébastien Villemot <sebast...@debian.org> Wed, 09 Jan 2013 11:00:22 +0100 + gtk+3.0 (3.4.2-4) unstable; urgency=low * debian/patches/074_try-harder-to-discriminate-Shift-F10-and-F10.patch: diff -Nru gtk+3.0-3.4.2/debian/libgtk-3-0.symbols gtk+3.0-3.4.2/debian/libgtk-3-0.symbols --- gtk+3.0-3.4.2/debian/libgtk-3-0.symbols 2012-04-19 02:45:51.000000000 +0200 +++ gtk+3.0-3.4.2/debian/libgtk-3-0.symbols 2013-01-09 10:06:40.000000000 +0100 @@ -542,7 +542,9 @@ gdk_x11_get_xatom_name@Base 3.0.0 gdk_x11_get_xatom_name_for_display@Base 3.0.0 gdk_x11_grab_server@Base 3.0.0 + gdk_x11_keymap_get_group_for_state@Base 3.4.2-5~ gdk_x11_keymap_get_type@Base 3.0.0 + gdk_x11_keymap_key_is_modifier@Base 3.4.2-5~ gdk_x11_lookup_xdisplay@Base 3.0.0 gdk_x11_register_standard_event_type@Base 3.0.0 gdk_x11_screen_get_monitor_output@Base 3.0.0 diff -Nru gtk+3.0-3.4.2/debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch gtk+3.0-3.4.2/debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch --- gtk+3.0-3.4.2/debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch 1970-01-01 01:00:00.000000000 +0100 +++ gtk+3.0-3.4.2/debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch 2013-01-09 10:04:50.000000000 +0100 @@ -0,0 +1,166 @@ +Description: GtkPlug: fix handling of key events for different layouts + GtkPlug directly handles X KeyPress/Release events, instead of using + translation in GDK (which expects XI2 events for XI2). When this + was done, the handling of the group was stubbed out and never replaced. + . + Export gdk_keymap_x11_group_for_state() and gdk_keymap_x11_is_modifier() + so we can fill out the fields correctly. +Origin: upstream, http://git.gnome.org/browse/gtk+/commit/?id=0aa989ae76d0d080eae16b8a4fde59aca1227cc4 +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=675167 +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692235 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/gdk/x11/gdkdevicemanager-core-x11.c ++++ b/gdk/x11/gdkdevicemanager-core-x11.c +@@ -145,7 +145,7 @@ + gdk_event_set_device (event, device_manager->core_keyboard); + + event->key.state = (GdkModifierType) xevent->xkey.state; +- event->key.group = _gdk_x11_get_group_for_state (display, xevent->xkey.state); ++ event->key.group = gdk_x11_keymap_get_group_for_state (keymap, xevent->xkey.state); + event->key.hardware_keycode = xevent->xkey.keycode; + + event->key.keyval = GDK_KEY_VoidSymbol; +@@ -161,7 +161,7 @@ + _gdk_x11_keymap_add_virt_mods (keymap, &state); + event->key.state |= state; + +- event->key.is_modifier = _gdk_x11_keymap_key_is_modifier (keymap, event->key.hardware_keycode); ++ event->key.is_modifier = gdk_x11_keymap_key_is_modifier (keymap, event->key.hardware_keycode); + + _gdk_x11_event_translate_keyboard_string (&event->key); + +--- a/gdk/x11/gdkdevicemanager-xi2.c ++++ b/gdk/x11/gdkdevicemanager-xi2.c +@@ -1160,10 +1160,10 @@ + + event->key.time = xev->time; + event->key.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group); +- event->key.group = _gdk_x11_get_group_for_state (display, event->key.state); ++ event->key.group = xev->group.effective; + + event->key.hardware_keycode = xev->detail; +- event->key.is_modifier = _gdk_x11_keymap_key_is_modifier (keymap, event->key.hardware_keycode); ++ event->key.is_modifier = gdk_x11_keymap_key_is_modifier (keymap, event->key.hardware_keycode); + + device = g_hash_table_lookup (device_manager->id_table, + GUINT_TO_POINTER (xev->deviceid)); +--- a/gdk/x11/gdkkeys-x11.c ++++ b/gdk/x11/gdkkeys-x11.c +@@ -1439,11 +1439,28 @@ + *upper = xupper; + } + ++/** ++ * gdk_x11_keymap_get_group_for_state: ++ * @keymap: a #GdkX11Keymap ++ * @state: raw state returned from X ++ * ++ * Extracts the group from the state field sent in an X Key event. ++ * This is only needed for code processing raw X events, since #GdkEventKey ++ * directly includes an is_modifier field. ++ * ++ * Returns: the index of the active keyboard group for the event ++ */ + gint +-_gdk_x11_get_group_for_state (GdkDisplay *display, +- GdkModifierType state) ++gdk_x11_keymap_get_group_for_state (GdkKeymap *keymap, ++ guint state) + { +- GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); ++ GdkDisplay *display; ++ GdkX11Display *display_x11; ++ ++ g_return_val_if_fail (GDK_IS_X11_KEYMAP (keymap), 0); ++ ++ display = keymap->display; ++ display_x11 = GDK_X11_DISPLAY (display); + + #ifdef HAVE_XKB + if (display_x11->use_xkb) +@@ -1508,13 +1525,29 @@ + } + } + ++/** ++ * gdk_x11_keymap_key_is_modifier: ++ * @keymap: a #GdkX11Keymap ++ * @keycode: the hardware keycode from a key event ++ * ++ * Determines whether a particular key code represents a key that ++ * is a modifier. That is, it's a key that normally just affects ++ * the keyboard state and the behavior of other keys rather than ++ * producing a direct effect itself. This is only needed for code ++ * processing raw X events, since #GdkEventKey directly includes ++ * an is_modifier field. ++ * ++ * Returns: %TRUE if the hardware keycode is a modifier key ++ */ + gboolean +-_gdk_x11_keymap_key_is_modifier (GdkKeymap *keymap, +- guint keycode) ++gdk_x11_keymap_key_is_modifier (GdkKeymap *keymap, ++ guint keycode) + { + GdkX11Keymap *keymap_x11 = GDK_X11_KEYMAP (keymap); + gint i; + ++ g_return_val_if_fail (GDK_IS_X11_KEYMAP (keymap), FALSE); ++ + update_keyrange (keymap_x11); + if (keycode < keymap_x11->min_keycode || + keycode > keymap_x11->max_keycode) +--- a/gdk/x11/gdkprivate-x11.h ++++ b/gdk/x11/gdkprivate-x11.h +@@ -155,12 +155,8 @@ + void _gdk_x11_keymap_state_changed (GdkDisplay *display, + XEvent *event); + void _gdk_x11_keymap_keys_changed (GdkDisplay *display); +-gint _gdk_x11_get_group_for_state (GdkDisplay *display, +- GdkModifierType state); + void _gdk_x11_keymap_add_virt_mods (GdkKeymap *keymap, + GdkModifierType *modifiers); +-gboolean _gdk_x11_keymap_key_is_modifier (GdkKeymap *keymap, +- guint keycode); + + void _gdk_x11_windowing_init (void); + +--- a/gdk/x11/gdkx11keys.h ++++ b/gdk/x11/gdkx11keys.h +@@ -42,6 +42,11 @@ + + GType gdk_x11_keymap_get_type (void); + ++gint gdk_x11_keymap_get_group_for_state (GdkKeymap *keymap, ++ guint state); ++ ++gboolean gdk_x11_keymap_key_is_modifier (GdkKeymap *keymap, ++ guint keycode); + G_END_DECLS + + #endif /* __GDK_X11_KEYMAP_H__ */ +--- a/gtk/gtkplug.c ++++ b/gtk/gtkplug.c +@@ -982,6 +982,10 @@ + gdk_event_set_device (event, keyboard); + + keymap = gdk_keymap_get_for_display (display); ++ ++ event->key.group = gdk_x11_keymap_get_group_for_state (keymap, xevent->xkey.state); ++ event->key.is_modifier = gdk_x11_keymap_key_is_modifier (keymap, event->key.hardware_keycode); ++ + gdk_keymap_translate_keyboard_state (keymap, + event->key.hardware_keycode, + event->key.state, +@@ -996,10 +1000,6 @@ + event->key.length = 0; + event->key.string = g_strdup (""); + +- /* FIXME: These should be filled in properly */ +- event->key.group = 0; +- event->key.is_modifier = FALSE; +- + return_val = GDK_FILTER_TRANSLATE; + } + } diff -Nru gtk+3.0-3.4.2/debian/patches/series gtk+3.0-3.4.2/debian/patches/series --- gtk+3.0-3.4.2/debian/patches/series 2012-09-04 03:05:03.000000000 +0200 +++ gtk+3.0-3.4.2/debian/patches/series 2013-01-09 10:04:37.000000000 +0100 @@ -12,3 +12,4 @@ 072_statusicon_icon_size.patch 073_transparent_colors.patch 074_try-harder-to-discriminate-Shift-F10-and-F10.patch +075_gtkplug-fix-handling-of-key-events-for-layouts.patch diff -Nru gtk+3.0-3.4.2/debian/rules gtk+3.0-3.4.2/debian/rules --- gtk+3.0-3.4.2/debian/rules 2012-08-06 21:16:26.000000000 +0200 +++ gtk+3.0-3.4.2/debian/rules 2013-01-09 10:06:51.000000000 +0100 @@ -81,7 +81,7 @@ DEB_INSTALL_DOCS_$(COMMON_PKG) = README NEWS DEB_INSTALL_DOCS_$(DOC_PKG) += -X.in DEB_DH_MAKESHLIBS_ARGS_ALL += -X$(MODULES_BASE_PATH) -DEB_DH_MAKESHLIBS_ARGS_$(SHARED_PKG) += -V --add-udeb=$(UDEB_PKG) -- -c4 +DEB_DH_MAKESHLIBS_ARGS_$(SHARED_PKG) += -V 'libgtk-3-0 (>= 3.4.2-5~)' --add-udeb=$(UDEB_PKG) -- -c4 DEB_DH_MAKESHLIBS_ARGS_libgail-3-0 += -V -- -c4 DEB_DH_FIXPERMS_ARGS_ALL += -X$(LIBDIR)/$(SHARED_PKG) DEB_DH_STRIP_ARGS = --dbg-package=$(if $(findstring libgail,$(cdbs_curpkg)),libgail-3-0-dbg,$(DEBUG_PKG))
signature.asc
Description: Digital signature