File gnome-panel-2-11-bring-back-my-run-item.patch of Package gnome-panel
Index: gnome-panel/menu.c
===================================================================
--- gnome-panel/menu.c.orig
+++ gnome-panel/menu.c
@@ -1831,6 +1831,12 @@ main_menu_append (GtkWidget *main_menu,
gtk_menu_shell_append (GTK_MENU_SHELL (main_menu), item);
gtk_widget_show (item);
+ item = panel_menu_items_create_action_item (PANEL_ACTION_RUN);
+ if (item != NULL) {
+ add_menu_separator (main_menu);
+ gtk_menu_shell_append (GTK_MENU_SHELL (main_menu), item);
+ }
+
panel_menu_items_append_lock_logout (main_menu);
}
Index: gnome-panel/panel-menu-bar.c
===================================================================
--- gnome-panel/panel-menu-bar.c.orig
+++ gnome-panel/panel-menu-bar.c
@@ -145,6 +145,65 @@ panel_menu_bar_setup_tooltip (PanelMenuB
}
static void
+panel_menu_bar_append_applications_menu (GtkWidget *menu,
+ PanelMenuBar *menubar)
+{
+ GtkWidget *item;
+ gboolean add_separator;
+ GList *children;
+ GList *last;
+
+ item = panel_menu_items_create_action_item (PANEL_ACTION_RUN);
+ if (!item)
+ return;
+
+ add_separator = FALSE;
+ children = gtk_container_get_children (GTK_CONTAINER (menu));
+ last = g_list_last (children);
+
+ if (last != NULL)
+ add_separator = !GTK_IS_SEPARATOR (GTK_WIDGET (last->data));
+
+ g_list_free (children);
+
+ if (add_separator)
+ add_menu_separator (menu);
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+}
+
+static GtkWidget *
+panel_menu_bar_create_applications_menu (PanelMenuBar *menubar)
+{
+ GtkWidget *applications_menu;
+
+ applications_menu = create_applications_menu ("applications.menu", NULL, TRUE);
+
+ g_object_set_data (G_OBJECT (applications_menu),
+ "panel-menu-append-callback",
+ panel_menu_bar_append_applications_menu);
+ g_object_set_data (G_OBJECT (applications_menu),
+ "panel-menu-append-callback-data",
+ menubar);
+
+ return applications_menu;
+}
+
+static void
+panel_menu_bar_recreate_menus (PanelMenuBar *menubar)
+{
+ if (menubar->priv->applications_menu) {
+ gtk_widget_destroy (menubar->priv->applications_menu);
+ menubar->priv->applications_menu = panel_menu_bar_create_applications_menu (menubar);
+ panel_applet_menu_set_recurse (GTK_MENU (menubar->priv->applications_menu),
+ "menu_panel",
+ menubar->priv->panel);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (menubar->priv->applications_item),
+ menubar->priv->applications_menu);
+ }
+}
+
+static void
panel_menu_bar_init (PanelMenuBar *menubar)
{
GtkStyleContext *context;
@@ -167,7 +226,7 @@ panel_menu_bar_init (PanelMenuBar *menub
menubar->priv->info = NULL;
- menubar->priv->applications_menu = create_applications_menu ("applications.menu", NULL, TRUE);
+ menubar->priv->applications_menu = panel_menu_bar_create_applications_menu (menubar);
menubar->priv->applications_item = panel_image_menu_item_new ();
gtk_menu_item_set_label (GTK_MENU_ITEM (menubar->priv->applications_item),
@@ -190,6 +249,9 @@ panel_menu_bar_init (PanelMenuBar *menub
panel_menu_bar_setup_tooltip (menubar);
+ panel_lockdown_notify_add (G_CALLBACK (panel_menu_bar_recreate_menus),
+ menubar);
+
panel_menu_bar_update_text_gravity (menubar);
g_signal_connect (menubar, "screen-changed",
G_CALLBACK (panel_menu_bar_update_text_gravity),
@@ -314,6 +376,17 @@ panel_menu_bar_style_updated (GtkWidget
NULL);
}
+ static void
+panel_menu_bar_finalize (GObject *object)
+{
+ PanelMenuBar *menubar = (PanelMenuBar *) object;
+
+ panel_lockdown_notify_remove (G_CALLBACK (panel_menu_bar_recreate_menus),
+ menubar);
+
+ G_OBJECT_CLASS (panel_menu_bar_parent_class)->finalize (object);
+}
+
static void
panel_menu_bar_class_init (PanelMenuBarClass *klass)
{
@@ -322,6 +395,7 @@ panel_menu_bar_class_init (PanelMenuBarC
gobject_class->get_property = panel_menu_bar_get_property;
gobject_class->set_property = panel_menu_bar_set_property;
+ gobject_class->finalize = panel_menu_bar_finalize;
widget_class->parent_set = panel_menu_bar_parent_set;
widget_class->size_allocate = panel_menu_bar_size_allocate;
Index: gnome-panel/panel-menu-items.c
===================================================================
--- gnome-panel/panel-menu-items.c.orig
+++ gnome-panel/panel-menu-items.c
@@ -341,7 +341,7 @@ panel_menu_items_create_action_item_full
return item;
}
-static GtkWidget *
+GtkWidget *
panel_menu_items_create_action_item (PanelActionButtonType action_type)
{
return panel_menu_items_create_action_item_full (action_type,
Index: gnome-panel/panel-menu-items.h
===================================================================
--- gnome-panel/panel-menu-items.h.orig
+++ gnome-panel/panel-menu-items.h
@@ -91,6 +91,9 @@ void panel_menu_items_append_lock_logout
void panel_menu_item_activate_desktop_file (GtkWidget *menuitem,
const char *path);
+
+GtkWidget *panel_menu_items_create_action_item (PanelActionButtonType action_type);
+
G_END_DECLS
#endif /* __PANEL_MENU_ITEMS_H__ */