[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH] ui/gtk: full-screening all detached windows
From: |
Kim, Dongwon |
Subject: |
RE: [PATCH] ui/gtk: full-screening all detached windows |
Date: |
Tue, 17 Oct 2023 23:44:28 +0000 |
Hi Marc-André,
> Hi
>
> On Fri, Oct 13, 2023 at 2:51 AM Dongwon Kim <dongwon.kim@intel.com>
> wrote:
> >
> > When turning on or off full-screen menu, all detached windows should
> > be full-screened or un-full-screened altogether.
>
> I am not convinced this is desirable. Not only having multiple fullscreen
> windows
> on the same screen is usually a bit harder to deal with. You typically want
> one
> imho.
>
> But the most annoying thing is probably that detached windows/consoles do not
> have the same shortcuts as the main window, and you can't unfullscreen them
> then...
>
> Wouldn't you prefer to have a working fullscreen keyboard shortcut for
> detached tabs instead? This way, each window can be toggled full/unfull
> individually.
[DW] That is right. Two detached windows on the same display would be
overlapped, which will be ugly. I also thought about that as well as other
undesirable situations but my initial thought was the full-screen
menu is global and all QEMU windows should be controlled by it. Anyhow, I like
your idea about individual control.. so we would probably need to add more
full-screen menus, like 'fullscreen1, fullscreen2, fullscreen3..."
to the menu then also assign a hotkey to each one of them?
>
> thanks
>
> >
> > Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
> > Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
> > ---
> > ui/gtk.c | 44 ++++++++++++++++++++++++++++++++++----------
> > 1 file changed, 34 insertions(+), 10 deletions(-)
> >
> > diff --git a/ui/gtk.c b/ui/gtk.c
> > index 935de1209b..3a380f8d59 100644
> > --- a/ui/gtk.c
> > +++ b/ui/gtk.c
> > @@ -1452,29 +1452,53 @@ static void gd_accel_show_menubar(void
> > *opaque) static void gd_menu_full_screen(GtkMenuItem *item, void
> > *opaque) {
> > GtkDisplayState *s = opaque;
> > - VirtualConsole *vc = gd_vc_find_current(s);
> > + VirtualConsole *vc;
> > + int i;
> >
> > if (!s->full_screen) {
> > gtk_notebook_set_show_tabs(GTK_NOTEBOOK(s->notebook), FALSE);
> > gtk_widget_hide(s->menu_bar);
> > - if (vc->type == GD_VC_GFX) {
> > - gtk_widget_set_size_request(vc->gfx.drawing_area, -1, -1);
> > - }
> > - gtk_window_fullscreen(GTK_WINDOW(s->window));
> > s->full_screen = TRUE;
> > + gtk_window_fullscreen(GTK_WINDOW(s->window));
> > +
> > + for (i = 0; i < s->nb_vcs; i++) {
> > + vc = &s->vc[i];
> > + if (!vc->window) {
> > + continue;
> > + }
> > + if (vc->type == GD_VC_GFX) {
> > + gtk_widget_set_size_request(vc->gfx.drawing_area, -1, -1);
> > + }
> > + gtk_window_fullscreen(GTK_WINDOW(vc->window));
> > + }
> > } else {
> > gtk_window_unfullscreen(GTK_WINDOW(s->window));
> > +
> > + for (i = 0; i < s->nb_vcs; i++) {
> > + vc = &s->vc[i];
> > + if (!vc->window) {
> > + continue;
> > + }
> > + 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);
> > + }
> > + }
> > +
> > gd_menu_show_tabs(GTK_MENU_ITEM(s->show_tabs_item), s);
> > if (gtk_check_menu_item_get_active(
> > GTK_CHECK_MENU_ITEM(s->show_menubar_item))) {
> > gtk_widget_show(s->menu_bar);
> > }
> > s->full_screen = FALSE;
> > - if (vc->type == GD_VC_GFX) {
> > - vc->gfx.scale_x = 1.0;
> > - vc->gfx.scale_y = 1.0;
> > - gd_update_windowsize(vc);
> > - }
> > + }
> > +
> > + vc = gd_vc_find_current(s);
> > + if (!vc) {
> > + return;
> > }
> >
> > gd_update_cursor(vc);
> > --
> > 2.20.1
> >