[virt-tools-list] [PATCH virt-viewer] Fix key-combo menu not showing up with Gtk3
Marc-André Lureau
marcandre.lureau at gmail.com
Fri Mar 23 17:20:42 UTC 2012
For some reason, the behaviour changed between gtk2 and gtk3, the menu
is removed from display when we unref it with gtk3. Keep a ref on
built menu and reuse it until the window is disposed.
---
src/virt-viewer-window.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
index ec96532..0763481 100644
--- a/src/virt-viewer-window.c
+++ b/src/virt-viewer-window.c
@@ -98,6 +98,7 @@ struct _VirtViewerWindowPrivate {
GtkWidget *toolbar_usb_device_selection;
GtkWidget *toolbar_send_key;
GtkAccelGroup *accel_group;
+ GtkMenu *keycombo_menu;
VirtViewerNotebook *notebook;
VirtViewerDisplay *display;
@@ -187,6 +188,11 @@ virt_viewer_window_dispose (GObject *object)
priv->display = NULL;
}
+ if (priv->keycombo_menu) {
+ g_object_unref(priv->keycombo_menu);
+ priv->keycombo_menu = NULL;
+ }
+
g_free(priv->subtitle);
priv->subtitle = NULL;
}
@@ -568,6 +574,10 @@ virt_viewer_window_menu_send(GtkWidget *menu,
static GtkMenu*
virt_viewer_window_get_keycombo_menu(VirtViewerWindow *self)
{
+ if (self->priv->keycombo_menu != NULL) {
+ return self->priv->keycombo_menu;
+ }
+
gint i;
GtkMenu *menu = GTK_MENU(gtk_menu_new());
@@ -583,7 +593,9 @@ virt_viewer_window_get_keycombo_menu(VirtViewerWindow *self)
}
gtk_widget_show_all(GTK_WIDGET(menu));
- return g_object_ref_sink(menu);
+ self->priv->keycombo_menu = g_object_ref_sink(menu);
+
+ return self->priv->keycombo_menu;
}
static gboolean
@@ -713,7 +725,6 @@ virt_viewer_window_toolbar_send_key(GtkWidget *button G_GNUC_UNUSED,
GtkMenu *menu = virt_viewer_window_get_keycombo_menu(self);
gtk_menu_popup(menu, NULL, NULL, keycombo_menu_location, self,
0, gtk_get_current_event_time());
- g_object_unref(menu);
}
--
1.7.7.6
More information about the virt-tools-list
mailing list