[gnome-panel] [panel] Always show icons in panel menus



commit bf6bef101288543f3e3bc526b83d5b2da316d5d4
Author: William Jon McCann <william jon mccann gmail com>
Date:   Wed Jul 1 14:39:44 2009 +0200

    [panel] Always show icons in panel menus
    
    This possible thanks to gtk_image_menu_item_set_always_show_image().
    This also removes some code.
    
    The patch contains some changes by Vincent Untz <vuntz gnome org>
    
    http://bugzilla.gnome.org/show_bug.cgi?id=322932

 gnome-panel/menu.c             |   86 ++++++++-------------------------------
 gnome-panel/menu.h             |    2 +
 gnome-panel/panel-menu-bar.c   |    4 +-
 gnome-panel/panel-menu-items.c |   16 ++++----
 gnome-panel/panel-recent.c     |    4 +-
 5 files changed, 33 insertions(+), 79 deletions(-)
---
diff --git a/gnome-panel/menu.c b/gnome-panel/menu.c
index d89fa69..942cb7f 100644
--- a/gnome-panel/menu.c
+++ b/gnome-panel/menu.c
@@ -87,15 +87,6 @@ static gboolean panel_menu_key_press_handler (GtkWidget   *widget,
 					      GdkEventKey *event);
 
 static inline gboolean
-panel_menu_have_icons (void)
-{	
-	return gconf_client_get_bool (
-			panel_gconf_get_client (),
-			"/desktop/gnome/interface/menus_have_icons",
-			NULL);
-}
-
-static inline gboolean
 desktop_is_home_dir (void)
 {	
 	return gconf_client_get_bool (
@@ -191,51 +182,6 @@ menuitem_to_screen (GtkWidget *menuitem)
 }
 
 static void
-menus_have_icons_changed (GConfClient *client,
-			  guint        cnxn_id,
-			  GConfEntry  *entry,
-			  GtkWidget   *menu)
-{
-	GConfValue *value;
-	GList      *list, *l;
-	gboolean    have_icons = TRUE;
-
-	value = gconf_entry_get_value (entry);
-
-	if (value != NULL && value->type == GCONF_VALUE_BOOL)
-		have_icons = gconf_value_get_bool (value);
-
-	list = g_list_copy (GTK_MENU_SHELL (menu)->children);
-	for (l = list; l; l = l->next) {
-		GtkWidget *item = l->data;
-		GtkWidget *cur_image;
-		GtkWidget *image;
-
-		if (!GTK_IS_IMAGE_MENU_ITEM (item))
-			continue;
-
-		image = g_object_get_data (G_OBJECT (item), "Panel:Image");
-		if (!image)
-			continue;
-
-		cur_image = gtk_image_menu_item_get_image (
-					GTK_IMAGE_MENU_ITEM (item));
-
-		if (have_icons) {
-			if (cur_image != image) {
-				gtk_image_menu_item_set_image (
-					GTK_IMAGE_MENU_ITEM (item), image);
-				gtk_widget_show (image);
-			}
-		} else {
-			gtk_image_menu_item_set_image (
-				GTK_IMAGE_MENU_ITEM (item), NULL);
-		}
-	}
-	g_list_free (list);
-}
-
-static void
 reload_image_menu_items (void)
 {
 	GSList *l;
@@ -279,10 +225,6 @@ panel_create_menu (void)
 	
 	retval = gtk_menu_new ();
 	gtk_widget_set_name (retval, "gnome-panel-main-menu");
-	
-	panel_gconf_notify_add_while_alive ("/desktop/gnome/interface/menus_have_icons",
-					    (GConfClientNotifyFunc) menus_have_icons_changed,
-					    G_OBJECT (retval));
 
 	g_signal_connect (retval, "key_press_event",
 			  G_CALLBACK (panel_menu_key_press_handler),
@@ -1247,9 +1189,8 @@ setup_menuitem (GtkWidget   *menuitem,
 					g_object_ref (image),
 					(GDestroyNotify) g_object_unref);
 		gtk_widget_show (image);
-		if (panel_menu_have_icons ())
-			gtk_image_menu_item_set_image (
-				GTK_IMAGE_MENU_ITEM (menuitem), image);
+		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
+					       image);
 	} else if (icon_size != GTK_ICON_SIZE_INVALID)
 		g_signal_connect (menuitem, "size_request",
 				  G_CALLBACK (image_menuitem_size_request),
@@ -1431,14 +1372,24 @@ create_fake_menu (GMenuTreeDirectory *directory)
 	return menu;
 }
 
+GtkWidget *
+panel_image_menu_item_new (void)
+{
+	GtkWidget *menuitem;
+
+	menuitem = gtk_image_menu_item_new ();
+	gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem),
+						   TRUE);
+	return menuitem;
+}
+
 static GtkWidget *
 create_submenu_entry (GtkWidget          *menu,
 		      GMenuTreeDirectory *directory)
 {
 	GtkWidget *menuitem;
 
-	menuitem = gtk_image_menu_item_new ();
-
+	menuitem = panel_image_menu_item_new ();
 	panel_load_menu_image_deferred (menuitem,
 					panel_menu_icon_get_size (),
 					NULL, NULL,
@@ -1502,7 +1453,7 @@ create_menuitem (GtkWidget          *menu,
 {
 	GtkWidget  *menuitem;
 	
-	menuitem = gtk_image_menu_item_new ();
+	menuitem = panel_image_menu_item_new ();
 
 	g_object_set_data_full (G_OBJECT (menuitem),
 				"panel-menu-tree-entry",
@@ -1899,10 +1850,9 @@ panel_load_menu_image_deferred (GtkWidget   *image_menu_item,
 				"Panel:Image",
 				g_object_ref (image),
 				(GDestroyNotify) g_object_unref);
- 
-	if (panel_menu_have_icons ())
-		gtk_image_menu_item_set_image (
-			GTK_IMAGE_MENU_ITEM (image_menu_item), image);
+
+	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (image_menu_item),
+				       image);
 
 	g_signal_connect_data (image, "map",
 			       G_CALLBACK (image_menu_shown), icon,
diff --git a/gnome-panel/menu.h b/gnome-panel/menu.h
index c17f960..5c9b48d 100644
--- a/gnome-panel/menu.h
+++ b/gnome-panel/menu.h
@@ -54,6 +54,8 @@ void            setup_uri_drag             (GtkWidget  *menuitem,
 
 GtkWidget *	panel_create_menu              (void);
 
+GtkWidget *	panel_image_menu_item_new      (void);
+
 GdkPixbuf *	panel_make_menu_icon (GtkIconTheme *icon_theme,
 				      const char   *icon,
 				      const char   *fallback,
diff --git a/gnome-panel/panel-menu-bar.c b/gnome-panel/panel-menu-bar.c
index 0d36cbd..190ceaa 100644
--- a/gnome-panel/panel-menu-bar.c
+++ b/gnome-panel/panel-menu-bar.c
@@ -142,7 +142,9 @@ panel_menu_bar_init (PanelMenuBar *menubar)
 
 	menubar->priv->applications_menu = create_applications_menu ("applications.menu", NULL);
 
-	menubar->priv->applications_item = gtk_image_menu_item_new_with_label (_("Applications"));
+	menubar->priv->applications_item = panel_image_menu_item_new ();
+	gtk_menu_item_set_label (GTK_MENU_ITEM (menubar->priv->applications_item),
+				 _("Applications"));
 	image = gtk_image_new_from_icon_name (PANEL_ICON_MAIN_MENU,
 					      panel_menu_bar_icon_get_size ());
 	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menubar->priv->applications_item),
diff --git a/gnome-panel/panel-menu-items.c b/gnome-panel/panel-menu-items.c
index ed28a84..d1b0c09 100644
--- a/gnome-panel/panel-menu-items.c
+++ b/gnome-panel/panel-menu-items.c
@@ -237,7 +237,7 @@ panel_menu_items_append_from_desktop (GtkWidget *menu,
 	else
 		name = g_strdup (force_name);
 
-	item = gtk_image_menu_item_new ();
+	item = panel_image_menu_item_new ();
 	setup_menu_item_with_icon (item, panel_menu_icon_get_size (),
 				   icon, NULL, NULL, name);
 
@@ -283,7 +283,7 @@ panel_menu_items_append_place_item (const char *icon_name,
 	GtkWidget *item;
 	char      *user_data;
 
-	item = gtk_image_menu_item_new ();
+	item = panel_image_menu_item_new ();
 	setup_menu_item_with_icon (item,
 				   panel_menu_icon_get_size (),
 				   icon_name, NULL, gicon,
@@ -313,7 +313,7 @@ panel_menu_items_create_action_item_full (PanelActionButtonType  action_type,
 	if (panel_action_get_is_disabled (action_type))
 		return NULL;
 
-	item = gtk_image_menu_item_new ();
+	item = panel_image_menu_item_new ();
         setup_menu_item_with_icon (item,
 				   panel_menu_icon_get_size (),
 				   panel_action_get_icon_name (action_type),
@@ -426,7 +426,7 @@ panel_place_menu_item_append_gtk_bookmarks (GtkWidget *menu)
 	} else {
 		GtkWidget *item;
 
-		item = gtk_image_menu_item_new ();
+		item = panel_image_menu_item_new ();
 		setup_menu_item_with_icon (item, panel_menu_icon_get_size (),
 					   PANEL_ICON_BOOKMARKS, NULL, NULL,
 					   _("Bookmarks"));
@@ -555,7 +555,7 @@ panel_menu_item_append_drive (GtkWidget *menu,
 	icon = g_drive_get_icon (drive);
 	title = g_drive_get_name (drive);
 
-	item = gtk_image_menu_item_new ();
+	item = panel_image_menu_item_new ();
 	setup_menu_item_with_icon (item,
 				   panel_menu_icon_get_size (),
 				   NULL, NULL, icon,
@@ -655,7 +655,7 @@ panel_menu_item_append_volume (GtkWidget *menu,
 	icon = g_volume_get_icon (volume);
 	title = g_volume_get_name (volume);
 
-	item = gtk_image_menu_item_new ();
+	item = panel_image_menu_item_new ();
 	setup_menu_item_with_icon (item,
 				   panel_menu_icon_get_size (),
 				   NULL, NULL, icon,
@@ -866,7 +866,7 @@ panel_place_menu_item_append_local_gio (PanelPlaceMenuItem *place_item,
 	} else {
 		GtkWidget  *item;
 
-		item = gtk_image_menu_item_new ();
+		item = panel_image_menu_item_new ();
 		setup_menu_item_with_icon (item, panel_menu_icon_get_size (),
 					   PANEL_ICON_REMOVABLE_MEDIA,
 					   NULL, NULL,
@@ -953,7 +953,7 @@ panel_place_menu_item_append_remote_gio (PanelPlaceMenuItem *place_item,
 	} else {
 		GtkWidget  *item;
 
-		item = gtk_image_menu_item_new ();
+		item = panel_image_menu_item_new ();
 		setup_menu_item_with_icon (item, panel_menu_icon_get_size (),
 					   PANEL_ICON_NETWORK_SERVER,
 					   NULL, NULL,
diff --git a/gnome-panel/panel-recent.c b/gnome-panel/panel-recent.c
index 4b6c494..807650f 100644
--- a/gnome-panel/panel-recent.c
+++ b/gnome-panel/panel-recent.c
@@ -188,7 +188,7 @@ panel_recent_append_documents_menu (GtkWidget        *top_menu,
 	GtkWidget      *menu_item;
 	int             size;
 
-	menu_item = gtk_image_menu_item_new ();
+	menu_item = panel_image_menu_item_new ();
 	setup_menu_item_with_icon (menu_item,
 				   panel_menu_icon_get_size (),
 				   PANEL_ICON_RECENT,
@@ -227,7 +227,7 @@ panel_recent_append_documents_menu (GtkWidget        *top_menu,
 
 	add_menu_separator (recent_menu);
 
-	menu_item = gtk_image_menu_item_new ();
+	menu_item = panel_image_menu_item_new ();
 	setup_menu_item_with_icon (menu_item,
 				   panel_menu_icon_get_size (),
 				   NULL,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]