diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2011-12-09 16:31:45 +0100 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2011-12-09 16:59:38 +0100 |
commit | e4047485709718aa4320c1c97137375d5b0a21a3 (patch) | |
tree | dbc55c8b8c40258c3a0daf3b53242d5f71c0d7d7 /gtk | |
parent | 3fabb6464bf4860b758f44cf02faf386d3b5d95f (diff) | |
download | spice-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.c | 21 |
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; } |