static void applet_show_menu (AppletInfo *info, GtkWidget *menu, gboolean custom_position, GdkEventButton *event) { PanelWidget *panel_widget; g_return_if_fail (info != NULL); if (menu == NULL) return; panel_widget = panel_applet_get_panel_widget (info); panel_applet_menu_set_recurse (GTK_MENU (menu), "menu_panel", panel_widget); gtk_menu_set_screen (GTK_MENU (menu), gtk_window_get_screen (GTK_WINDOW (panel_widget->toplevel))); if (!gtk_widget_get_realized (menu)) gtk_widget_show (menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, custom_position ? (GtkMenuPositionFunc) panel_applet_position_menu : NULL, info->widget, event->button, event->time); }
void panel_desktop_menu_item_set_panel (GtkWidget *item, PanelWidget *panel) { PanelDesktopMenuItem *desktop_item; desktop_item = PANEL_DESKTOP_MENU_ITEM (item); desktop_item->priv->panel = panel; panel_applet_menu_set_recurse (GTK_MENU (desktop_item->priv->menu), "menu_panel", panel); }
void panel_place_menu_item_set_panel (GtkWidget *item, PanelWidget *panel) { PanelPlaceMenuItem *place_item; place_item = PANEL_PLACE_MENU_ITEM (item); place_item->priv->panel = panel; panel_applet_menu_set_recurse (GTK_MENU (place_item->priv->menu), "menu_panel", panel); }
static void panel_desktop_menu_item_recreate_menu (PanelDesktopMenuItem *desktop_item) { if (desktop_item->priv->menu) { gtk_widget_destroy (desktop_item->priv->menu); desktop_item->priv->menu = panel_desktop_menu_item_create_menu (desktop_item); gtk_menu_item_set_submenu (GTK_MENU_ITEM (desktop_item), desktop_item->priv->menu); panel_applet_menu_set_recurse (GTK_MENU (desktop_item->priv->menu), "menu_panel", desktop_item->priv->panel); } }
static void panel_menu_button_associate_panel (PanelMenuButton *button) { PanelWidget *panel_widget = NULL; if (!button->priv->menu) return; if (button->priv->toplevel) panel_widget = panel_toplevel_get_panel_widget (button->priv->toplevel); panel_applet_menu_set_recurse (GTK_MENU (button->priv->menu), "menu_panel", panel_widget); }
static void panel_place_menu_item_recreate_menu (GtkWidget *widget) { PanelPlaceMenuItem *place_item; place_item = PANEL_PLACE_MENU_ITEM (widget); if (place_item->priv->menu) { gtk_widget_destroy (place_item->priv->menu); place_item->priv->menu = panel_place_menu_item_create_menu (place_item); gtk_menu_item_set_submenu (GTK_MENU_ITEM (place_item), place_item->priv->menu); panel_applet_menu_set_recurse (GTK_MENU (place_item->priv->menu), "menu_panel", place_item->priv->panel); } }
static void panel_menu_bar_parent_set (GtkWidget *widget, GtkWidget *previous_parent) { PanelMenuBar *menubar = PANEL_MENU_BAR (widget); GtkWidget *parent; parent = gtk_widget_get_parent (widget); g_assert (!parent || PANEL_IS_WIDGET (parent)); menubar->priv->panel = (PanelWidget *) parent; if (menubar->priv->applications_menu) panel_applet_menu_set_recurse (GTK_MENU (menubar->priv->applications_menu), "menu_panel", menubar->priv->panel); if (menubar->priv->places_item) panel_place_menu_item_set_panel (menubar->priv->places_item, menubar->priv->panel); }
void panel_applet_menu_set_recurse (GtkMenu *menu, const gchar *key, gpointer data) { GList *children; GList *l; g_object_set_data (G_OBJECT (menu), key, data); children = gtk_container_get_children (GTK_CONTAINER (menu)); for (l = children; l; l = l->next) { GtkWidget *submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (l->data)); if (submenu) panel_applet_menu_set_recurse ( GTK_MENU (submenu), key, data); } g_list_free (children); }