Updating branch refs/heads/master to 05a3233396b531f3cf9fef033508412f8e47f6fa (commit) from b82ae64b2866e8cd068bddb893b82899fdb13523 (commit)
commit 05a3233396b531f3cf9fef033508412f8e47f6fa Author: Christian Dywan <christ...@twotoasts.de> Date: Thu Jan 24 01:24:17 2013 +0100 Optimize icon lookups and tag received icon-loaded katze/katze-item.c | 24 +++++++++++++++--------- katze/midori-paths.vala | 11 +++++++---- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/katze/katze-item.c b/katze/katze-item.c index 01300c1..4de44cf 100644 --- a/katze/katze-item.c +++ b/katze/katze-item.c @@ -445,16 +445,12 @@ katze_item_get_pixbuf (KatzeItem* item, g_return_val_if_fail (KATZE_IS_ITEM (item), NULL); + if (KATZE_ITEM_IS_FOLDER (item)) + return gtk_widget_render_icon (widget, GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU, NULL); if ((pixbuf = midori_paths_get_icon (item->uri, widget))) return pixbuf; if ((pixbuf = midori_paths_get_icon (katze_item_get_icon (item), widget))) return pixbuf; - if (widget != NULL) - { - if (KATZE_ITEM_IS_FOLDER (item)) - return gtk_widget_render_icon (widget, GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU, NULL); - return gtk_widget_render_icon (widget, GTK_STOCK_FILE, GTK_ICON_SIZE_MENU, NULL); - } return NULL; } @@ -469,10 +465,18 @@ katze_item_icon_loaded_cb (WebKitIconDatabase* database, const gchar* frame_uri, GtkWidget* image) { + /* This signal fires extremely often (WebKit bug?), we must throttle it */ + if (g_object_get_data (G_OBJECT (image), "midori-icon-loaded")) + return; + KatzeItem* item = g_object_get_data (G_OBJECT (image), "KatzeItem"); - GdkPixbuf* pixbuf = katze_item_get_pixbuf (item, image); - gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); - g_object_unref (pixbuf); + GdkPixbuf* pixbuf = midori_paths_get_icon (frame_uri, image); + if (pixbuf != NULL) + { + gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); + g_object_unref (pixbuf); + g_object_set_data (G_OBJECT (image), "midori-icon-loaded", (void*)1); + } } #endif @@ -519,6 +523,8 @@ katze_item_get_image (KatzeItem* item, gtk_widget_show (image); if (pixbuf != NULL) g_object_unref (pixbuf); + if (KATZE_ITEM_IS_FOLDER (item)) + return image; #if WEBKIT_CHECK_VERSION (1, 8, 0) g_signal_connect (webkit_get_favicon_database (), "icon-loaded", G_CALLBACK (katze_item_icon_loaded_cb), image); diff --git a/katze/midori-paths.vala b/katze/midori-paths.vala index 5cced9f..50de349 100644 --- a/katze/midori-paths.vala +++ b/katze/midori-paths.vala @@ -112,12 +112,15 @@ namespace Midori { tmp_dir = Path.build_path (Path.DIR_SEPARATOR_S, Environment.get_tmp_dir (), "midori-" + Environment.get_user_name ()); } +#if HAVE_WEBKIT_1_3_13 + if (user_data_dir != null) { + string folder = Path.build_filename (user_data_dir, "webkit", "icondatabase"); #if HAVE_WEBKIT_1_8_0 - if (user_data_dir != null) - WebKit.get_favicon_database ().set_path (Path.build_filename (user_data_dir, "webkit", "icondatabase")); + WebKit.get_favicon_database ().set_path (folder); #elif HAVE_WEBKIT_1_3_13 - if (user_data_dir != null) - WebKit.get_icon_database ().set_path (Path.build_filename (user_data_dir, "webkit", "icondatabase")); + WebKit.get_icon_database ().set_path (folder); +#endif + } #endif if (strcmp (Environment.get_variable ("MIDORI_DEBUG"), "paths") == 0) { stdout.printf ("config: %s\ncache: %s\nuser_data: %s\ntmp: %s\n", _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits