From 44a6c2f7e478fce00cc987bb76ac519704c13da2 Mon Sep 17 00:00:00 2001 From: Sorokin Alexei Date: Tue, 16 Feb 2016 02:09:29 +0300 Subject: merge panel_load_menu_image_deferred() into setup_menuitem_with_icon() also rename setup_menu_item_with_icon() to setup_menuitem_with_icon(), and drop GtkStock support from it --- mate-panel/menu.c | 123 +++++++++++++++++++----------------------------------- 1 file changed, 42 insertions(+), 81 deletions(-) (limited to 'mate-panel/menu.c') 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); @@ -817,6 +810,32 @@ menu_escape_underscores_and_prepend (const char *text) return g_string_free (escaped_text, FALSE); } +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, @@ -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) -- cgit v1.2.1