r36553 - in /desktop/unstable/gtk+3.0/debian: changelog libgtk-3-0.symbols patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch patches/series rules

sebastien at users.alioth.debian.org sebastien at users.alioth.debian.org
Wed Jan 9 09:59:23 UTC 2013


Author: sebastien
Date: Wed Jan  9 09:59:22 2013
New Revision: 36553

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=36553
Log:
* 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.


Added:
    desktop/unstable/gtk+3.0/debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch
Modified:
    desktop/unstable/gtk+3.0/debian/changelog
    desktop/unstable/gtk+3.0/debian/libgtk-3-0.symbols
    desktop/unstable/gtk+3.0/debian/patches/series
    desktop/unstable/gtk+3.0/debian/rules

Modified: desktop/unstable/gtk+3.0/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gtk%2B3.0/debian/changelog?rev=36553&op=diff
==============================================================================
--- desktop/unstable/gtk+3.0/debian/changelog [utf-8] (original)
+++ desktop/unstable/gtk+3.0/debian/changelog [utf-8] Wed Jan  9 09:59:22 2013
@@ -1,3 +1,17 @@
+gtk+3.0 (3.4.2-5) UNRELEASED; 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 at debian.org>  Wed, 09 Jan 2013 10:05:43 +0100
+
 gtk+3.0 (3.4.2-4) unstable; urgency=low
 
   * debian/patches/074_try-harder-to-discriminate-Shift-F10-and-F10.patch:

Modified: desktop/unstable/gtk+3.0/debian/libgtk-3-0.symbols
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gtk%2B3.0/debian/libgtk-3-0.symbols?rev=36553&op=diff
==============================================================================
--- desktop/unstable/gtk+3.0/debian/libgtk-3-0.symbols [utf-8] (original)
+++ desktop/unstable/gtk+3.0/debian/libgtk-3-0.symbols [utf-8] Wed Jan  9 09:59:22 2013
@@ -542,7 +542,9 @@
  gdk_x11_get_xatom_name at Base 3.0.0
  gdk_x11_get_xatom_name_for_display at Base 3.0.0
  gdk_x11_grab_server at Base 3.0.0
+ gdk_x11_keymap_get_group_for_state at Base 3.4.2-5~
  gdk_x11_keymap_get_type at Base 3.0.0
+ gdk_x11_keymap_key_is_modifier at Base 3.4.2-5~
  gdk_x11_lookup_xdisplay at Base 3.0.0
  gdk_x11_register_standard_event_type at Base 3.0.0
  gdk_x11_screen_get_monitor_output at Base 3.0.0

Added: desktop/unstable/gtk+3.0/debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gtk%2B3.0/debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch?rev=36553&op=file
==============================================================================
--- desktop/unstable/gtk+3.0/debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch (added)
+++ desktop/unstable/gtk+3.0/debian/patches/075_gtkplug-fix-handling-of-key-events-for-layouts.patch [utf-8] Wed Jan  9 09:59:22 2013
@@ -1,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;
+       }
+     }

Modified: desktop/unstable/gtk+3.0/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gtk%2B3.0/debian/patches/series?rev=36553&op=diff
==============================================================================
--- desktop/unstable/gtk+3.0/debian/patches/series [utf-8] (original)
+++ desktop/unstable/gtk+3.0/debian/patches/series [utf-8] Wed Jan  9 09:59:22 2013
@@ -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

Modified: desktop/unstable/gtk+3.0/debian/rules
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gtk%2B3.0/debian/rules?rev=36553&op=diff
==============================================================================
--- desktop/unstable/gtk+3.0/debian/rules [utf-8] (original)
+++ desktop/unstable/gtk+3.0/debian/rules [utf-8] Wed Jan  9 09:59:22 2013
@@ -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))




More information about the pkg-gnome-commits mailing list