debian/patches/074_try-harder-to-discriminate-Shift-F10-and-F10.patch:
With xkb-data 2.5.1-2.1 preserving the Shift modifier, GTK+ can properly map F10 and Shift-F10 to different key bindings. Closes: #658392
This commit is contained in:
8
debian/changelog
vendored
8
debian/changelog
vendored
@ -1,3 +1,11 @@
|
|||||||
|
gtk+3.0 (3.4.2-4) UNRELEASED; urgency=low
|
||||||
|
|
||||||
|
* debian/patches/074_try-harder-to-discriminate-Shift-F10-and-F10.patch:
|
||||||
|
With xkb-data 2.5.1-2.1 preserving the Shift modifier, GTK+ can properly
|
||||||
|
map F10 and Shift-F10 to different key bindings. Closes: #658392
|
||||||
|
|
||||||
|
-- Michael Biebl <biebl@debian.org> Fri, 21 Sep 2012 18:20:47 +0200
|
||||||
|
|
||||||
gtk+3.0 (3.4.2-3) unstable; urgency=low
|
gtk+3.0 (3.4.2-3) unstable; urgency=low
|
||||||
|
|
||||||
[ Josselin Mouette ]
|
[ Josselin Mouette ]
|
||||||
|
|||||||
69
debian/patches/074_try-harder-to-discriminate-Shift-F10-and-F10.patch
vendored
Normal file
69
debian/patches/074_try-harder-to-discriminate-Shift-F10-and-F10.patch
vendored
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
From 314b6abbe8d8daae1e2de50b15cc9b6553af1f3d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Matthias Clasen <mclasen@redhat.com>
|
||||||
|
Date: Sat, 1 Sep 2012 22:51:18 -0400
|
||||||
|
Subject: [PATCH] Try harder to discriminate Shift-F10 and F10
|
||||||
|
|
||||||
|
A change in xkeyboard-config 2.4.1 made it so that function keys
|
||||||
|
now have a shift level which has the same symbol, but 'eats' the
|
||||||
|
shift modifier. This would ordinarily make it impossible for us
|
||||||
|
to discriminate between these key combinations.
|
||||||
|
|
||||||
|
This commit tries harder to discriminate in 2 ways:
|
||||||
|
- XKB has a mechanism to tell us when a modifier should not be
|
||||||
|
consumed even though it was used in determining the level.
|
||||||
|
We now respect such 'preserved' modifiers. This does not fix
|
||||||
|
the Shift-F10 vs F10 problem yet, since xkeyboard-config does
|
||||||
|
not currently mark Shift as preserved for function keys.
|
||||||
|
- Don't consume modifiers that do not change the symbol. For
|
||||||
|
the function keys, the symbol on the shift level is the same
|
||||||
|
as the base level, so we don't consider Shift consumed.
|
||||||
|
|
||||||
|
For more background on the xkeyboard-config change, see
|
||||||
|
https://bugs.freedesktop.org/show_bug.cgi?id=45008
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=661973
|
||||||
|
---
|
||||||
|
gdk/x11/gdkkeys-x11.c | 20 +++++++++++++++-----
|
||||||
|
1 file changed, 15 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
Index: gtk+-3.4.2/gdk/x11/gdkkeys-x11.c
|
||||||
|
===================================================================
|
||||||
|
--- gtk+-3.4.2.orig/gdk/x11/gdkkeys-x11.c 2012-05-02 14:05:07.000000000 +0200
|
||||||
|
+++ gtk+-3.4.2/gdk/x11/gdkkeys-x11.c 2012-09-04 03:05:24.621782410 +0200
|
||||||
|
@@ -1113,6 +1113,8 @@
|
||||||
|
int found = 0;
|
||||||
|
|
||||||
|
for (i=0,entry=type->map;i<type->map_count;i++,entry++) {
|
||||||
|
+ if (!entry->active)
|
||||||
|
+ continue;
|
||||||
|
if (mods_rtrn) {
|
||||||
|
int bits = 0;
|
||||||
|
unsigned long tmp = entry->mods.mask;
|
||||||
|
@@ -1123,14 +1125,22 @@
|
||||||
|
}
|
||||||
|
/* We always add one-modifiers levels to mods_rtrn since
|
||||||
|
* they can't wipe out bits in the state unless the
|
||||||
|
- * level would be triggered. But return other modifiers
|
||||||
|
- *
|
||||||
|
+ * level would be triggered. But not if they don't change
|
||||||
|
+ * the symbol (otherwise we can't discriminate Shift-F10
|
||||||
|
+ * and F10 anymore). And don't add modifiers that are
|
||||||
|
+ * explicitly marked as preserved, either.
|
||||||
|
*/
|
||||||
|
- if (bits == 1 || (mods&type->mods.mask)==entry->mods.mask)
|
||||||
|
- *mods_rtrn |= entry->mods.mask;
|
||||||
|
+ if ((bits == 1 && syms[col+entry->level] != syms[col]) ||
|
||||||
|
+ (mods&type->mods.mask) == entry->mods.mask)
|
||||||
|
+ {
|
||||||
|
+ if (type->preserve)
|
||||||
|
+ *mods_rtrn |= (entry->mods.mask & ~type->preserve[i].mask);
|
||||||
|
+ else
|
||||||
|
+ *mods_rtrn |= entry->mods.mask;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!found&&entry->active&&((mods&type->mods.mask)==entry->mods.mask)) {
|
||||||
|
+ if (!found&&((mods&type->mods.mask)==entry->mods.mask)) {
|
||||||
|
col+= entry->level;
|
||||||
|
if (type->preserve)
|
||||||
|
preserve= type->preserve[i].mask;
|
||||||
1
debian/patches/series
vendored
1
debian/patches/series
vendored
@ -11,3 +11,4 @@
|
|||||||
071_fix-installation-of-HTML-images.patch
|
071_fix-installation-of-HTML-images.patch
|
||||||
072_statusicon_icon_size.patch
|
072_statusicon_icon_size.patch
|
||||||
073_transparent_colors.patch
|
073_transparent_colors.patch
|
||||||
|
074_try-harder-to-discriminate-Shift-F10-and-F10.patch
|
||||||
|
|||||||
Reference in New Issue
Block a user