summaryrefslogtreecommitdiff
path: root/mate-panel/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'mate-panel/menu.c')
-rw-r--r--mate-panel/menu.c123
1 files changed, 42 insertions, 81 deletions
diff --git a/mate-panel/menu.c b/mate-panel/menu.c
index fd713d53..1a80fb02 100644
--- a/mate-panel/menu.c
+++ b/mate-panel/menu.c
@@ -55,13 +55,6 @@
static GtkWidget *populate_menu_from_directory (GtkWidget *menu,
MateMenuTreeDirectory *directory);
-static void panel_load_menu_image_deferred (GtkWidget *image_menu_item,
- GtkIconSize icon_size,
- const char *stock_id,
- GIcon *gicon,
- const char *image_filename,
- const char *fallback_image_filename);
-
static gboolean panel_menu_key_press_handler (GtkWidget *widget,
GdkEventKey *event);
@@ -818,6 +811,32 @@ menu_escape_underscores_and_prepend (const char *text)
}
void
+setup_menuitem_with_icon (GtkWidget *menuitem,
+ GtkIconSize icon_size,
+ GIcon *gicon,
+ const char *image_filename,
+ const char *title)
+{
+ GtkWidget *image;
+ GIcon *icon = NULL;
+
+ image = gtk_image_new ();
+ g_object_set (image, "icon-size", icon_size, NULL);
+
+ if (gicon)
+ icon = g_object_ref (gicon);
+ else if (image_filename)
+ icon = panel_gicon_from_icon_name (image_filename);
+
+ gtk_image_set_from_gicon (GTK_IMAGE(image), icon, icon_size);
+ g_object_unref (icon);
+
+ gtk_widget_show (image);
+
+ setup_menuitem (menuitem, icon_size, image, title);
+}
+
+void
setup_menuitem (GtkWidget *menuitem,
GtkIconSize icon_size,
GtkWidget *image,
@@ -848,9 +867,13 @@ setup_menuitem (GtkWidget *menuitem,
gtk_container_add (GTK_CONTAINER (menuitem), label);
if (image) {
+ gint icon_height = PANEL_DEFAULT_MENU_ICON_SIZE;
+
+ gtk_icon_size_lookup (icon_size, NULL, &icon_height);
gtk_widget_show (image);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
image);
+ gtk_image_set_pixel_size (GTK_IMAGE(image), icon_height);
}
gtk_widget_show (menuitem);
@@ -1063,16 +1086,11 @@ create_submenu_entry (GtkWidget *menu,
else
menuitem = gtk_image_menu_item_new ();
- panel_load_menu_image_deferred (menuitem,
- panel_menu_icon_get_size (),
- NULL, NULL,
- matemenu_tree_directory_get_icon (directory),
- PANEL_ICON_FOLDER);
-
- setup_menuitem (menuitem,
- panel_menu_icon_get_size (),
- NULL,
- matemenu_tree_directory_get_name (directory));
+ setup_menuitem_with_icon (menuitem,
+ panel_menu_icon_get_size (),
+ NULL,
+ matemenu_tree_directory_get_icon (directory),
+ matemenu_tree_directory_get_name (directory));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
@@ -1149,18 +1167,13 @@ create_menuitem (GtkWidget *menu,
matemenu_tree_item_ref (alias_directory),
(GDestroyNotify) matemenu_tree_item_unref);
- panel_load_menu_image_deferred (menuitem,
- panel_menu_icon_get_size (),
- NULL, NULL,
- alias_directory ? matemenu_tree_directory_get_icon (alias_directory) :
- matemenu_tree_entry_get_icon (entry),
- PANEL_STOCK_DEFAULT_ICON);
-
- setup_menuitem (menuitem,
- panel_menu_icon_get_size (),
- NULL,
- alias_directory ? matemenu_tree_directory_get_name (alias_directory) :
- matemenu_tree_entry_get_display_name (entry));
+ setup_menuitem_with_icon (menuitem,
+ panel_menu_icon_get_size (),
+ NULL,
+ alias_directory ? matemenu_tree_directory_get_icon (alias_directory) :
+ matemenu_tree_entry_get_icon (entry),
+ alias_directory ? matemenu_tree_directory_get_name (alias_directory) :
+ matemenu_tree_entry_get_display_name (entry));
if (alias_directory &&
matemenu_tree_directory_get_comment (alias_directory))
@@ -1412,22 +1425,6 @@ populate_menu_from_directory (GtkWidget *menu,
return menu;
}
-void
-setup_menu_item_with_icon (GtkWidget *item,
- GtkIconSize icon_size,
- const char *icon_name,
- const char *stock_id,
- GIcon *gicon,
- const char *title)
-{
- if (icon_name || gicon || stock_id)
- panel_load_menu_image_deferred (item, icon_size,
- stock_id, gicon,
- icon_name, NULL);
-
- setup_menuitem (item, icon_size, NULL, title);
-}
-
static void
main_menu_append (GtkWidget *main_menu,
gpointer data)
@@ -1479,42 +1476,6 @@ GtkWidget* create_main_menu(PanelWidget* panel)
return main_menu;
}
-static void
-panel_load_menu_image_deferred (GtkWidget *image_menu_item,
- GtkIconSize icon_size,
- const char *stock_id,
- GIcon *gicon,
- const char *image_filename,
- const char *fallback_image_filename)
-{
- GtkWidget *image;
- int icon_height = PANEL_DEFAULT_MENU_ICON_SIZE;
-
- gtk_icon_size_lookup (icon_size, NULL, &icon_height);
-
- image = gtk_image_new ();
- g_object_set (image, "icon-size", icon_size, NULL);
- gtk_image_set_pixel_size (GTK_IMAGE(image), icon_height);
-
- GIcon *icon = NULL;
-
- if (gicon != NULL) {
- icon = g_object_ref (gicon);
- } else if (stock_id != NULL ) {
- icon = g_themed_icon_new (stock_id);
- } else if (image_filename != NULL) {
- icon = panel_gicon_from_icon_name (image_filename);
- }
-
- gtk_image_set_from_gicon (GTK_IMAGE(image), icon, icon_size);
- g_object_unref (icon);
-
- gtk_widget_show (image);
-
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (image_menu_item),
- image);
-}
-
static gboolean
panel_menu_key_press_handler (GtkWidget *widget,
GdkEventKey *event)