diff options
| author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-07-22 19:48:14 +0200 |
|---|---|---|
| committer | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-07-30 21:11:28 +0200 |
| commit | e044fe254452dd9046c4d85af14ecbe12ea81fce (patch) | |
| tree | 9d889ec88397466d0c9a6232fb7934fd850341b7 /src | |
| parent | a0d8844b56890d069a42b96bac5c4458c38d9ad6 (diff) | |
window: use dynamically generated menu
Remove the static Glade menu in favour of the one generated dynamically
already used for the toolbar.
Diffstat (limited to 'src')
| -rw-r--r-- | src/virt-viewer-window.c | 33 | ||||
| -rw-r--r-- | src/virt-viewer.xml | 168 |
2 files changed, 31 insertions, 170 deletions
diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c index d73312e..adbf7ca 100644 --- a/src/virt-viewer-window.c +++ b/src/virt-viewer-window.c @@ -194,6 +194,33 @@ virt_viewer_window_dispose (GObject *object) } static void +rebuild_combo_menu(GObject *gobject G_GNUC_UNUSED, + GParamSpec *pspec G_GNUC_UNUSED, + gpointer user_data) +{ + VirtViewerWindow *self = user_data; + GtkWidget *menu; + + menu = GTK_WIDGET(gtk_builder_get_object(self->priv->builder, "menu-send")); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu), + GTK_WIDGET(virt_viewer_window_get_keycombo_menu(self))); + gtk_widget_set_sensitive(menu, FALSE); +} + +static void +virt_viewer_window_constructed(GObject *object) +{ + VirtViewerWindowPrivate *priv = VIRT_VIEWER_WINDOW(object)->priv; + + if (G_OBJECT_CLASS(virt_viewer_window_parent_class)->constructed) + G_OBJECT_CLASS(virt_viewer_window_parent_class)->constructed(object); + + g_signal_connect(priv->app, "notify::enable-accel", + G_CALLBACK(rebuild_combo_menu), object); + rebuild_combo_menu(NULL, NULL, object); +} + +static void virt_viewer_window_class_init (VirtViewerWindowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); @@ -203,6 +230,7 @@ virt_viewer_window_class_init (VirtViewerWindowClass *klass) object_class->get_property = virt_viewer_window_get_property; object_class->set_property = virt_viewer_window_set_property; object_class->dispose = virt_viewer_window_dispose; + object_class->constructed = virt_viewer_window_constructed; g_object_class_install_property(object_class, PROP_SUBTITLE, @@ -609,9 +637,8 @@ virt_viewer_window_get_keycombo_menu(VirtViewerWindow *self) virt_viewer_menu_add_combo(self, menu, keyCombos[i].keys, keyCombos[i].label); } - gtk_menu_attach_to_widget(menu, GTK_WIDGET(priv->window), NULL); gtk_widget_show_all(GTK_WIDGET(menu)); - return g_object_ref_sink(menu); + return menu; } void @@ -731,6 +758,8 @@ virt_viewer_window_toolbar_send_key(GtkWidget *button G_GNUC_UNUSED, VirtViewerWindow *self) { GtkMenu *menu = virt_viewer_window_get_keycombo_menu(self); + gtk_menu_attach_to_widget(menu, GTK_WIDGET(self->priv->window), NULL); + g_object_ref_sink(menu); gtk_menu_popup(menu, NULL, NULL, keycombo_menu_location, self, 0, gtk_get_current_event_time()); g_object_unref(menu); diff --git a/src/virt-viewer.xml b/src/virt-viewer.xml index 00f87b5..e9f91f7 100644 --- a/src/virt-viewer.xml +++ b/src/virt-viewer.xml @@ -211,174 +211,6 @@ <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Send key</property> <property name="use_underline">True</property> - <child type="submenu"> - <object class="GtkMenu" id="menu5"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <object class="GtkMenuItem" id="menu-send-cad"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+_Del</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-cab"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+_Backspace</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="separatormenuitem2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F_1</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F_2</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F_3</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf4"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F_4</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf5"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F_5</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf6"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F_6</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf7"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F_7</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf8"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F_8</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf9"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F_9</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf10"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F1_0</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf11"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F11</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-caf12"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Ctrl+Alt+F12</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="separatormenuitem3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkMenuItem" id="menu-send-print"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">_PrintScreen</property> - <property name="use_underline">True</property> - <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> - </object> - </child> - </object> - </child> </object> </child> <child> |
