[gtk+] recent-chooser: Use gtk_recent_info_get_gicon()



commit 95610f2a1485fb5e2ceb5d44c73c09fd4773dbad
Author: Christian Persch <chpe gnome org>
Date:   Thu Apr 29 15:23:44 2010 +0200

    recent-chooser: Use gtk_recent_info_get_gicon()
    
    https://bugzilla.gnome.org/show_bug.cgi?id=617174

 gtk/gtkrecentchooserdefault.c |   25 ++++++++++---------------
 gtk/gtkrecentchoosermenu.c    |   39 +++++++--------------------------------
 2 files changed, 17 insertions(+), 47 deletions(-)
---
diff --git a/gtk/gtkrecentchooserdefault.c b/gtk/gtkrecentchooserdefault.c
index 88a891a..5445c65 100644
--- a/gtk/gtkrecentchooserdefault.c
+++ b/gtk/gtkrecentchooserdefault.c
@@ -435,6 +435,7 @@ gtk_recent_chooser_default_constructor (GType                  type,
   gtk_tree_view_column_set_resizable (impl->icon_column, FALSE);
   
   renderer = gtk_cell_renderer_pixbuf_new ();
+  g_object_set (renderer, "stock-size", GTK_ICON_SIZE_BUTTON, NULL);
   gtk_tree_view_column_pack_start (impl->icon_column, renderer, FALSE);
   gtk_tree_view_column_set_cell_data_func (impl->icon_column,
   					   renderer,
@@ -984,23 +985,17 @@ recent_icon_data_func (GtkTreeViewColumn *tree_column,
 		       GtkTreeIter       *iter,
 		       gpointer           user_data)
 {
-  GtkRecentChooserDefault *impl = GTK_RECENT_CHOOSER_DEFAULT (user_data);
   GtkRecentInfo *info = NULL;
-  GdkPixbuf *pixbuf;
-  
-  gtk_tree_model_get (model, iter,
-                      RECENT_INFO_COLUMN, &info,
-                      -1);
+  GIcon *icon;
+
+  gtk_tree_model_get (model, iter, RECENT_INFO_COLUMN, &info, -1);
   g_assert (info != NULL);
-  
-  pixbuf = gtk_recent_info_get_icon (info, impl->icon_size);
-  
-  g_object_set (cell,
-                "pixbuf", pixbuf,
-                NULL);
-  
-  if (pixbuf)  
-    g_object_unref (pixbuf);
+
+  icon = gtk_recent_info_get_gicon (info);
+  g_object_set (cell, "gicon", icon, NULL);
+
+  if (icon != NULL)
+    g_object_unref (icon);
 
   gtk_recent_info_unref (info);
 }
diff --git a/gtk/gtkrecentchoosermenu.c b/gtk/gtkrecentchoosermenu.c
index 3a11e83..9e37703 100644
--- a/gtk/gtkrecentchoosermenu.c
+++ b/gtk/gtkrecentchoosermenu.c
@@ -78,9 +78,6 @@ struct _GtkRecentChooserMenuPrivate
   /* the recent manager object */
   GtkRecentManager *manager;
   
-  /* size of the icons of the menu items */  
-  gint icon_size;
-
   /* max size of the menu item label */
   gint label_width;
 
@@ -121,7 +118,6 @@ enum {
 };
 
 
-#define FALLBACK_ICON_SIZE 	32
 #define FALLBACK_ITEM_LIMIT 	10
 #define DEFAULT_LABEL_WIDTH     30
 
@@ -178,8 +174,6 @@ static void     set_recent_manager (GtkRecentChooserMenu *menu,
 static void     chooser_set_sort_type (GtkRecentChooserMenu *menu,
 				       GtkRecentSortType     sort_type);
 
-static gint     get_icon_size_for_widget (GtkWidget *widget);
-
 static void     item_activate_cb   (GtkWidget        *widget,
 			            gpointer          user_data);
 static void     manager_changed_cb (GtkRecentManager *manager,
@@ -281,7 +275,6 @@ gtk_recent_chooser_menu_init (GtkRecentChooserMenu *menu)
   
   priv->limit = FALLBACK_ITEM_LIMIT;
   priv->sort_type = GTK_RECENT_SORT_NONE;
-  priv->icon_size = FALLBACK_ICON_SIZE;
   priv->label_width = DEFAULT_LABEL_WIDTH;
   
   priv->first_recent_item_pos = -1;
@@ -817,7 +810,7 @@ gtk_recent_chooser_menu_create_item (GtkRecentChooserMenu *menu,
   GtkRecentChooserMenuPrivate *priv;
   gchar *text;
   GtkWidget *item, *image, *label;
-  GdkPixbuf *icon;
+  GIcon *icon;
 
   g_assert (info != NULL);
 
@@ -875,11 +868,13 @@ gtk_recent_chooser_menu_create_item (GtkRecentChooserMenu *menu,
   
   if (priv->show_icons)
     {
-      icon = gtk_recent_info_get_icon (info, priv->icon_size);
-        
-      image = gtk_image_new_from_pixbuf (icon);
+      icon = gtk_recent_info_get_gicon (info);
+
+      image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_MENU);
       gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
-      g_object_unref (icon);
+      gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
+      if (icon)
+        g_object_unref (icon);
     }
 
   g_signal_connect (item, "activate",
@@ -1085,8 +1080,6 @@ gtk_recent_chooser_menu_populate (GtkRecentChooserMenu *menu)
   pdata->menu = menu;
   pdata->placeholder = g_object_ref (priv->placeholder);
 
-  priv->icon_size = get_icon_size_for_widget (GTK_WIDGET (menu));
-  
   /* remove our menu items first */
   gtk_recent_chooser_menu_dispose_items (menu);
   
@@ -1152,24 +1145,6 @@ set_recent_manager (GtkRecentChooserMenu *menu,
                                                  menu);
 }
 
-static gint
-get_icon_size_for_widget (GtkWidget *widget)
-{
-  GtkSettings *settings;
-  gint width, height;
-
-  if (gtk_widget_has_screen (widget))
-    settings = gtk_settings_get_for_screen (gtk_widget_get_screen (widget));
-  else
-    settings = gtk_settings_get_default ();
-
-  if (gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU,
-                                         &width, &height))
-    return MAX (width, height);
-
-  return FALLBACK_ICON_SIZE;
-}
-
 static void
 foreach_set_shot_tips (GtkWidget *widget,
                        gpointer   user_data)



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