summaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2011-12-09 16:31:45 +0100
committerMarc-André Lureau <marcandre.lureau@redhat.com>2011-12-09 16:59:38 +0100
commite4047485709718aa4320c1c97137375d5b0a21a3 (patch)
treedbc55c8b8c40258c3a0daf3b53242d5f71c0d7d7 /gtk
parent3fabb6464bf4860b758f44cf02faf386d3b5d95f (diff)
downloadspice-gtk-e4047485709718aa4320c1c97137375d5b0a21a3.tar.gz
spice-gtk-e4047485709718aa4320c1c97137375d5b0a21a3.tar.xz
spice-gtk-e4047485709718aa4320c1c97137375d5b0a21a3.zip
Do not send ungrab key sequence to the server
Diffstat (limited to 'gtk')
-rw-r--r--gtk/spice-widget.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c
index 9e45979..3c2f6c0 100644
--- a/gtk/spice-widget.c
+++ b/gtk/spice-widget.c
@@ -876,6 +876,16 @@ static gboolean key_event(GtkWidget *widget, GdkEventKey *key)
__FUNCTION__, key->type == GDK_KEY_PRESS ? "press" : "release",
key->hardware_keycode, key->state, key->group);
+ if (check_for_grab_key(display, key->type, key->keyval) &&
+ d->mouse_mode == SPICE_MOUSE_MODE_SERVER) {
+ g_signal_emit(widget, signals[SPICE_DISPLAY_GRAB_KEY_PRESSED], 0);
+ if (d->mouse_grab_active)
+ try_mouse_ungrab(display);
+ else
+ try_mouse_grab(display);
+ return true;
+ }
+
if (!d->inputs)
return true;
@@ -892,17 +902,6 @@ static gboolean key_event(GtkWidget *widget, GdkEventKey *key)
break;
}
- if (check_for_grab_key(display, key->type, key->keyval)) {
- g_signal_emit(widget, signals[SPICE_DISPLAY_GRAB_KEY_PRESSED], 0);
- if (d->mouse_grab_active)
- try_mouse_ungrab(display);
- else
- /* TODO: gtk-vnc has a weird condition here
- if (!d->grab_keyboard || !d->absolute) */
- try_mouse_grab(display);
- }
-
-
return true;
}