[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#697749: unblock: gtk+3.0/3.4.2-5



Package: release.debian.org
Severity: normal
User: release.debian.org@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 <sebastien@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))

Attachment: signature.asc
Description: Digital signature


Reply to: