static void submenu_to_display (GtkWidget *menu) { MateMenuTree *tree; MateMenuTreeDirectory *directory; const char *menu_path; void (*append_callback) (GtkWidget *, gpointer); gpointer append_data; if (!g_object_get_data (G_OBJECT (menu), "panel-menu-needs-loading")) return; g_object_set_data (G_OBJECT (menu), "panel-menu-needs-loading", NULL); directory = g_object_get_data (G_OBJECT (menu), "panel-menu-tree-directory"); if (!directory) { menu_path = g_object_get_data (G_OBJECT (menu), "panel-menu-tree-path"); if (!menu_path) return; tree = g_object_get_data (G_OBJECT (menu), "panel-menu-tree"); if (!tree) return; directory = matemenu_tree_get_directory_from_path (tree, menu_path); g_object_set_data_full (G_OBJECT (menu), "panel-menu-tree-directory", directory, (GDestroyNotify) matemenu_tree_item_unref); } if (directory) populate_menu_from_directory (menu, directory); append_callback = g_object_get_data (G_OBJECT (menu), "panel-menu-append-callback"); append_data = g_object_get_data (G_OBJECT (menu), "panel-menu-append-callback-data"); if (append_callback) append_callback (menu, append_data); }
static char * panel_menu_button_get_icon (PanelMenuButton *button) { MateMenuTreeDirectory *directory; char *retval; retval = NULL; if (button->priv->use_custom_icon && button->priv->custom_icon) retval = g_strdup (button->priv->custom_icon); if (!retval && button->priv->use_menu_path && button->priv->menu_path && panel_menu_button_create_menu (button)) { directory = g_object_get_data (G_OBJECT (button->priv->menu), "panel-menu-tree-directory"); if (!directory) { MateMenuTree *tree; if ((tree = g_object_get_data (G_OBJECT (button->priv->menu), "panel-menu-tree"))) { directory = matemenu_tree_get_directory_from_path (tree, button->priv->menu_path); g_object_set_data_full (G_OBJECT (button->priv->menu), "panel-menu-tree-directory", directory, (GDestroyNotify) matemenu_tree_item_unref); } } if (directory) retval = g_strdup (matemenu_tree_directory_get_icon (directory)); } if (!retval) retval = g_strdup (PANEL_ICON_MAIN_MENU); return retval; }