[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 5/5] gtk: Avoid accel key leakage into guest on conso
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PULL 5/5] gtk: Avoid accel key leakage into guest on console switch |
Date: |
Mon, 27 Apr 2015 15:39:08 +0200 |
From: Jan Kiszka <address@hidden>
GTK2 sends the accel key to the guest when switching to the graphic
console via that shortcut. Resolve this by ignoring any keys until the
next key-release event. However, do not ignore keys when switching via
the menu or when on GTK3.
Signed-off-by: Jan Kiszka <address@hidden>
Signed-off-by: Gerd Hoffmann <address@hidden>
---
ui/gtk.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/ui/gtk.c b/ui/gtk.c
index 763d97a..51ea1b9 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -231,6 +231,7 @@ struct GtkDisplayState {
bool modifier_pressed[ARRAY_SIZE(modifier_keycode)];
bool has_evdev;
+ bool ignore_keys;
};
static void gd_grab_pointer(VirtualConsole *vc);
@@ -993,6 +994,11 @@ static gboolean gd_key_event(GtkWidget *widget,
GdkEventKey *key, void *opaque)
int qemu_keycode;
int i;
+ if (s->ignore_keys) {
+ s->ignore_keys = (key->type == GDK_KEY_PRESS);
+ return TRUE;
+ }
+
if (key->keyval == GDK_KEY_Pause) {
qemu_input_event_send_key_qcode(vc->gfx.dcl.con, Q_KEY_CODE_PAUSE,
key->type == GDK_KEY_PRESS);
@@ -1069,12 +1075,18 @@ static void gd_menu_switch_vc(GtkMenuItem *item, void
*opaque)
gtk_notebook_set_current_page(nb, page);
gtk_widget_grab_focus(vc->focus);
}
+ s->ignore_keys = false;
}
static void gd_accel_switch_vc(void *opaque)
{
VirtualConsole *vc = opaque;
+
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(vc->menu_item), TRUE);
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ /* GTK2 sends the accel key to the target console - ignore this until */
+ vc->s->ignore_keys = true;
+#endif
}
static void gd_menu_show_tabs(GtkMenuItem *item, void *opaque)
--
1.8.3.1
- [Qemu-devel] [PULL 0/5] gtk patch queue., Gerd Hoffmann, 2015/04/27
- [Qemu-devel] [PULL 5/5] gtk: Avoid accel key leakage into guest on console switch,
Gerd Hoffmann <=
- [Qemu-devel] [PULL 1/5] gtk: handle switch_surface(NULL) properly, Gerd Hoffmann, 2015/04/27
- [Qemu-devel] [PULL 4/5] gtk: Fix VTE focus grabbing, Gerd Hoffmann, 2015/04/27
- [Qemu-devel] [PULL 2/5] gtk: bind to text terminal consoles too, Gerd Hoffmann, 2015/04/27
- [Qemu-devel] [PULL 3/5] console/gtk: add qemu_console_get_label, Gerd Hoffmann, 2015/04/27
- Re: [Qemu-devel] [PULL 0/5] gtk patch queue., Peter Maydell, 2015/04/27