]> spindle.queued.net Git - midori/commitdiff
Add katze_item_get_pixbuf and use in panels
authorChristian Dywan <christian@twotoasts.de>
Sat, 12 May 2012 23:53:19 +0000 (01:53 +0200)
committerChristian Dywan <christian@twotoasts.de>
Sun, 13 May 2012 00:22:38 +0000 (02:22 +0200)
katze/katze-item.c
katze/katze-item.h
panels/midori-bookmarks.c
panels/midori-history.c

index 36446b775942396cf2edf86e2ec3833f3dabd52f..43ed856c78dff8651c13884f9834053282bdfd5a 100644 (file)
@@ -423,6 +423,40 @@ katze_item_set_icon (KatzeItem*   item,
     g_object_notify (G_OBJECT (item), "icon");
 }
 
+/**
+ * katze_item_get_pixbuf:
+ * @item: a #KatzeItem
+ * @widget: a #GtkWidget, or %NULL
+ *
+ * Retrieves a #GdkPixbuf fit to display @item.
+ *
+ * Return value: the icon of the item
+ *
+ * Since: 0.4.6
+ **/
+GdkPixbuf*
+katze_item_get_pixbuf (KatzeItem* item,
+                       GtkWidget*  widget)
+{
+    GdkPixbuf* pixbuf;
+
+    g_return_val_if_fail (KATZE_IS_ITEM (item), NULL);
+
+    if (item->uri == NULL)
+        return NULL;
+
+    #if WEBKIT_CHECK_VERSION (1, 8, 0)
+    /* FIXME: Don't hard-code icon size */
+    if ((pixbuf = webkit_favicon_database_try_get_favicon_pixbuf (
+        webkit_get_favicon_database (), item->uri, 16, 16)))
+        return pixbuf;
+    #else
+    if ((pixbuf = g_object_get_data (G_OBJECT (item), "pixbuf")))
+        return pixbuf;
+    #endif
+    return NULL;
+}
+
 /**
  * katze_item_get_image:
  * @item: a #KatzeItem
@@ -444,13 +478,8 @@ katze_item_get_image (KatzeItem* item)
 
     if (KATZE_ITEM_IS_FOLDER (item))
         image = gtk_image_new_from_stock (GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU);
-    #if WEBKIT_CHECK_VERSION (1, 8, 0)
-    /* FIXME: Don't hard-code icon size */
-    else if ((pixbuf = webkit_favicon_database_try_get_favicon_pixbuf (
-        webkit_get_favicon_database (), item->uri, 16, 16)))
-        image = gtk_image_new_from_pixbuf (pixbuf);
-    #endif
-    else if ((pixbuf = g_object_get_data (G_OBJECT (item), "pixbuf")))
+    /* FIXME: Pass widget for icon size */
+    else if ((pixbuf = katze_item_get_pixbuf (item, NULL)))
         image = gtk_image_new_from_pixbuf (pixbuf);
     else if ((icon = katze_item_get_icon (item)) && !strchr (icon, '/'))
         image = gtk_image_new_from_icon_name (icon, GTK_ICON_SIZE_MENU);
index ceb7f3cf683b29c1ac9be4d4d5ebe3a481f00491..0bd44fdb38bb852e397380a0e7ebfb19f6ddc7bf 100644 (file)
@@ -91,6 +91,10 @@ void
 katze_item_set_icon               (KatzeItem*      item,
                                    const gchar*    icon);
 
+GdkPixbuf*
+katze_item_get_pixbuf             (KatzeItem*      item,
+                                   GtkWidget*      widget);
+
 GtkWidget*
 katze_item_get_image              (KatzeItem*      item);
 
index d6dfa29cbc2186a99c95ffabf5394b13253eafee..099e9d8051503d3fda3c784fc3745cbb76653268 100644 (file)
@@ -563,6 +563,8 @@ midori_bookmarks_treeview_render_icon_cb (GtkTreeViewColumn* column,
     if (KATZE_ITEM_IS_FOLDER (item))
         pixbuf = gtk_widget_render_icon (treeview, GTK_STOCK_DIRECTORY,
                                          GTK_ICON_SIZE_MENU, NULL);
+    else if ((pixbuf = katze_item_get_pixbuf (item, treeview)))
+        ;
     else if (KATZE_ITEM_IS_BOOKMARK (item))
         pixbuf = katze_load_cached_icon (katze_item_get_uri (item), treeview);
     g_object_set (renderer, "pixbuf", pixbuf, NULL);
index f54a2b82c5c2a32fba134b86607637e1062beb11..7ec1717f871a433fe2404dd0f8f8a80795c35ca8 100644 (file)
@@ -594,6 +594,8 @@ midori_history_treeview_render_icon_cb (GtkTreeViewColumn* column,
 
     if (!item)
         pixbuf = NULL;
+    else if ((pixbuf = katze_item_get_pixbuf (item, treeview)))
+        ;
     else if (katze_item_get_uri (item))
         pixbuf = katze_load_cached_icon (katze_item_get_uri (item), treeview);
     else