Hi On Tue, Jul 2, 2024 at 4:09 AM <dongwon....@intel.com> wrote:
> From: Dongwon Kim <dongwon....@intel.com> > > Enable hotkey for toggling window fullscreening for all individual > untabified VCs > > Cc: Marc-André Lureau <marcandre.lur...@redhat.com> > Cc: Vivek Kasireddy <vivek.kasire...@intel.com> > Signed-off-by: Dongwon Kim <dongwon....@intel.com> > Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> (/rant I wish we had more common code with gd_menu_full_screen.. and overall cleaner..) --- > ui/gtk.c | 39 +++++++++++++++++++++++++++++++++++---- > 1 file changed, 35 insertions(+), 4 deletions(-) > > diff --git a/ui/gtk.c b/ui/gtk.c > index 93b13b7a30..768e66bec4 100644 > --- a/ui/gtk.c > +++ b/ui/gtk.c > @@ -1396,6 +1396,34 @@ static gboolean gd_win_grab(void *opaque) > return TRUE; > } > > +static void gd_vc_fullscreen_toggle(void *opaque) > +{ > + VirtualConsole *vc = opaque; > + GdkWindow *window; > + GdkWindowState state; > + > + if (!vc->window) > + return; > + > + window = gtk_widget_get_window(vc->window); > + state = gdk_window_get_state(window); > + > + if (state & GDK_WINDOW_STATE_FULLSCREEN) { > + gtk_window_unfullscreen(GTK_WINDOW(vc->window)); > + > + if (vc->type == GD_VC_GFX) { > + vc->gfx.scale_x = 1.0; > + vc->gfx.scale_y = 1.0; > + gd_update_windowsize(vc); > + } > + } else { > + if (vc->type == GD_VC_GFX) { > + gtk_widget_set_size_request(vc->gfx.drawing_area, -1, -1); > + } > + gtk_window_fullscreen(GTK_WINDOW(vc->window)); > + } > +} > + > static void gd_menu_untabify(GtkMenuItem *item, void *opaque) > { > GtkDisplayState *s = opaque; > @@ -1428,10 +1456,13 @@ static void gd_menu_untabify(GtkMenuItem *item, > void *opaque) > if (qemu_console_is_graphic(vc->gfx.dcl.con)) { > GtkAccelGroup *ag = gtk_accel_group_new(); > gtk_window_add_accel_group(GTK_WINDOW(vc->window), ag); > - > - GClosure *cb = g_cclosure_new_swap(G_CALLBACK(gd_win_grab), > - vc, NULL); > - gtk_accel_group_connect(ag, GDK_KEY_g, HOTKEY_MODIFIERS, 0, > cb); > + GClosure *cb_grab = > g_cclosure_new_swap(G_CALLBACK(gd_win_grab), > + vc, NULL); > + gtk_accel_group_connect(ag, GDK_KEY_g, HOTKEY_MODIFIERS, 0, > cb_grab); > + GClosure *cb_fs = g_cclosure_new_swap( > + > G_CALLBACK(gd_vc_fullscreen_toggle), > + vc, NULL); > + gtk_accel_group_connect(ag, GDK_KEY_f, HOTKEY_MODIFIERS, 0, > cb_fs); > } > > gd_update_geometry_hints(vc); > -- > 2.34.1 > > > -- Marc-André Lureau