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

Reply via email to