forked from AuroraMiddleware/gtk
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
This commit is contained in:
parent
88707e6912
commit
149750773e
@ -470,6 +470,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),
|
||||
@ -502,6 +504,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));
|
||||
|
Loading…
Reference in New Issue
Block a user