9f850dca40
Solves http://dev.laptop.org/ticket/10643 Patch already upstream. Adding to Fedora with permission from Matthias Clasen.
48 lines
1.7 KiB
Diff
48 lines
1.7 KiB
Diff
From 794a3706cd29f8457731b09ac39870ee1d11bf94 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Drake <dsd@laptop.org>
|
|
Date: Sun, 12 Jun 2011 17:48:17 +0100
|
|
Subject: [PATCH] gtkdnd: Don't bind/unbind keycodes that couldn't be
|
|
determined
|
|
|
|
At http://dev.laptop.org/ticket/10643 we are seeing that drag-and-drop
|
|
within the Sugar shell causes all of Sugar's custom keybindings to be
|
|
removed.
|
|
|
|
This is because gtkdnd tries to unbind XK_KP_Space, which (on my systems)
|
|
is resolved to NoSymbol by XKeycodeToKeysym(). NoSymbol has value 0,
|
|
the same as AnyKey, and XUngrabKey(AnyKey) is equivalent to unbinding
|
|
all possible keycodes.
|
|
|
|
Fix this by catching NoSymbol before binding/unbinding.
|
|
|
|
https://bugzilla.gnome.org/show_bug.cgi?id=652402
|
|
---
|
|
gtk/gtkdnd.c | 4 ++++
|
|
1 files changed, 4 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
|
|
index 4805a6f..617a02e 100644
|
|
--- a/gtk/gtkdnd.c
|
|
+++ b/gtk/gtkdnd.c
|
|
@@ -475,6 +475,8 @@ grab_dnd_keys (GtkWidget *widget,
|
|
for (i = 0; i < G_N_ELEMENTS (grab_keys); ++i)
|
|
{
|
|
keycode = XKeysymToKeycode (GDK_WINDOW_XDISPLAY (window), grab_keys[i].keysym);
|
|
+ if (keycode == NoSymbol)
|
|
+ continue;
|
|
XGrabKey (GDK_WINDOW_XDISPLAY (window),
|
|
keycode, grab_keys[i].modifiers,
|
|
GDK_WINDOW_XID (root),
|
|
@@ -508,6 +510,8 @@ ungrab_dnd_keys (GtkWidget *widget,
|
|
for (i = 0; i < G_N_ELEMENTS (grab_keys); ++i)
|
|
{
|
|
keycode = XKeysymToKeycode (GDK_WINDOW_XDISPLAY (window), grab_keys[i].keysym);
|
|
+ if (keycode == NoSymbol)
|
|
+ continue;
|
|
XUngrabKey (GDK_WINDOW_XDISPLAY (window),
|
|
keycode, grab_keys[i].modifiers,
|
|
GDK_WINDOW_XID (root));
|
|
--
|
|
1.7.5.2
|
|
|