From: Dongwon Kim <[email protected]> The "Grab Input" shortcut key currently fails to trigger when the window is in fullscreen mode because the menubar is hidden, which disables GtkAccelMap-based shortcuts associated with it.
To ensure the accelerator remains active in fullscreen, connect it directly to s->accel_group and explicitly set the hotkey display on the menu item label. Cc: Marc-André Lureau <[email protected]> Signed-off-by: Dongwon Kim <[email protected]> --- ui/gtk.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/ui/gtk.c b/ui/gtk.c index 3c9720a330..2f83c557d8 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1878,6 +1878,12 @@ static void gd_menu_grab_input(GtkMenuItem *item, void *opaque) gd_update_cursor(vc); } +static void gd_accel_grab_input(void *opaque) +{ + GtkDisplayState *s = opaque; + gtk_menu_item_activate(GTK_MENU_ITEM(s->grab_item)); +} + static void gd_change_page(GtkNotebook *nb, gpointer arg1, guint arg2, gpointer data) { @@ -2557,6 +2563,7 @@ static void gd_create_menu_view(GtkDisplayState *s, DisplayOptions *opts) { GtkWidget *view_menu; GtkWidget *separator; + GtkWidget *child; QemuConsole *con; bool zoom_to_fit = false; int vc, i; @@ -2615,12 +2622,15 @@ static void gd_create_menu_view(GtkDisplayState *s, DisplayOptions *opts) gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), s->grab_on_hover_item); s->grab_item = gtk_check_menu_item_new_with_mnemonic(_("_Grab Input")); - gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->grab_item), - "<QEMU>/View/Grab Input"); - gtk_accel_map_add_entry("<QEMU>/View/Grab Input", GDK_KEY_g, - HOTKEY_MODIFIERS); gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), s->grab_item); - + gtk_accel_group_connect(s->accel_group, GDK_KEY_g, HOTKEY_MODIFIERS, 0, + g_cclosure_new_swap(G_CALLBACK(gd_accel_grab_input), + s, NULL)); + child = gtk_bin_get_child(GTK_BIN(s->grab_item)); + if (GTK_IS_ACCEL_LABEL(child)) { + gtk_accel_label_set_accel(GTK_ACCEL_LABEL(child), + GDK_KEY_g, HOTKEY_MODIFIERS); + } separator = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), separator); -- 2.43.0
