[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [Bug 1294898] Re: gtk: menubar visible in fullscreen mode w

From: T. Huth
Subject: [Qemu-devel] [Bug 1294898] Re: gtk: menubar visible in fullscreen mode with gtk3
Date: Thu, 23 Jun 2016 09:07:35 -0000

Patch has been included upstream here:

** Changed in: qemu
       Status: New => Fix Released

You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.

  gtk: menubar visible in fullscreen mode with gtk3

Status in QEMU:
  Fix Released
Status in ubuntu-gnome3-desktop package in Ubuntu:

Bug description:
  Using the gtk UI, compiled with gtk3, the menu bar is fully visible in
  full screen mode. On gtk2 it's hidden. The set_size_request call isn't
  abided on gtk3 it seems.

  Simple fix is:

  diff --git a/ui/gtk.c b/ui/gtk.c
  index 66e886f..7b3bd3d 100644
  --- a/ui/gtk.c
  +++ b/ui/gtk.c
  @@ -805,7 +805,7 @@ static void gd_menu_full_screen(GtkMenuItem *item, void 
       if (!s->full_screen) {
           gtk_notebook_set_show_tabs(GTK_NOTEBOOK(s->notebook), FALSE);
  -        gtk_widget_set_size_request(s->menu_bar, 0, 0);
  +        gtk_widget_hide(s->menu_bar);
           gtk_widget_set_size_request(s->drawing_area, -1, -1);
           if (gd_on_vga(s)) {
  @@ -815,7 +815,7 @@ static void gd_menu_full_screen(GtkMenuItem *item, void 
       } else {
           gd_menu_show_tabs(GTK_MENU_ITEM(s->show_tabs_item), s);
  -        gtk_widget_set_size_request(s->menu_bar, -1, -1);
  +        gtk_widget_show(s->menu_bar);

  The problem with that is that hiding the menu bar means all its associated 
accelerators are no longer usable, so there's way to exit fullscreen mode. 
That's kind of a problem :)

  We can install the accelerators on the window, but make sure the menu
  item still shows the accelerator short cut. Example with the
  fullscreen accelerator:

  diff --git a/ui/gtk.c b/ui/gtk.c
  index 66e886f..fbce2b0 100644
  --- a/ui/gtk.c
  +++ b/ui/gtk.c
  @@ -799,7 +799,7 @@ static void gd_menu_show_tabs(GtkMenuItem *item, void 
  -static void gd_menu_full_screen(GtkMenuItem *item, void *opaque)
  +static void gd_do_full_screen(void *opaque)
       GtkDisplayState *s = opaque;
  @@ -828,6 +828,11 @@ static void gd_menu_full_screen(GtkMenuItem *item, void 
       gd_update_cursor(s, FALSE);
  +static void gd_menu_full_screen(GtkMenuItem *item, void *opaque)
  +    gd_do_full_screen(opaque);
   static void gd_menu_zoom_in(GtkMenuItem *item, void *opaque)
       GtkDisplayState *s = opaque;
  @@ -1304,10 +1309,11 @@ static GtkWidget *gd_create_menu_view(GtkDisplayState 
*s, GtkAccelGroup *accel_g
       gtk_menu_set_accel_group(GTK_MENU(view_menu), accel_group);
       s->full_screen_item = gtk_menu_item_new_with_mnemonic(_("_Fullscreen"));
  -    gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->full_screen_item),
  -                                 "<QEMU>/View/Full Screen");
  -    gtk_accel_map_add_entry("<QEMU>/View/Full Screen", GDK_KEY_f,
  -                            HOTKEY_MODIFIERS);
  +    gtk_accel_group_connect(accel_group, GDK_KEY_f, HOTKEY_MODIFIERS, 0,
  +         g_cclosure_new_swap(G_CALLBACK(gd_do_full_screen), s, NULL));
  +    gtk_accel_label_set_accel(
  +        GTK_ACCEL_LABEL(gtk_bin_get_child(GTK_BIN(s->full_screen_item))),
       gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), s->full_screen_item);
       separator = gtk_separator_menu_item_new();

  However gtk_accel_label_set_accel, which shows the accel key sequence in the 
menu, is gtk 3.8+ :/ So older versions wouldn't have any visual indication of 
the shortcuts. Maybe that's not a problem, SDL didn't have any indication of 
shortcuts either.

To manage notifications about this bug go to:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]