window: use dynamically generated menu

Remove the static Glade menu in favour of the one generated dynamically
already used for the toolbar.
This commit is contained in:
Marc-André Lureau 2013-07-22 19:48:14 +02:00
parent a0d8844b56
commit e044fe2544
2 changed files with 31 additions and 170 deletions

View File

@ -193,6 +193,33 @@ virt_viewer_window_dispose (GObject *object)
g_value_unset(&priv->accel_setting);
}
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)
{
@ -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);

View File

@ -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>