Look for favicons in all parent folders
This commit is contained in:
parent
87f5ce1c55
commit
0c52a484e9
1 changed files with 36 additions and 7 deletions
|
@ -282,12 +282,23 @@ webkit_web_frame_load_done (WebKitWebFrame* web_frame, gboolean success,
|
||||||
|
|
||||||
web_view->is_loading = FALSE;
|
web_view->is_loading = FALSE;
|
||||||
web_view->progress = -1;
|
web_view->progress = -1;
|
||||||
|
if (web_view->tab_icon || web_view->menu_item)
|
||||||
|
{
|
||||||
|
icon = midori_web_view_get_icon (web_view);
|
||||||
|
|
||||||
if (web_view->tab_icon)
|
if (web_view->tab_icon)
|
||||||
{
|
{
|
||||||
katze_throbber_set_animated (KATZE_THROBBER (web_view->tab_icon), FALSE);
|
katze_throbber_set_animated (KATZE_THROBBER (web_view->tab_icon),
|
||||||
icon = midori_web_view_get_icon (web_view);
|
FALSE);
|
||||||
katze_throbber_set_static_pixbuf (KATZE_THROBBER (web_view->tab_icon),
|
katze_throbber_set_static_pixbuf (KATZE_THROBBER (web_view->tab_icon),
|
||||||
icon);
|
icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (web_view->menu_item)
|
||||||
|
gtk_image_menu_item_set_image (
|
||||||
|
GTK_IMAGE_MENU_ITEM (web_view->menu_item),
|
||||||
|
gtk_image_new_from_pixbuf (icon));
|
||||||
|
|
||||||
g_object_unref (icon);
|
g_object_unref (icon);
|
||||||
}
|
}
|
||||||
g_signal_emit (web_view, signals[LOAD_DONE], 0, web_frame);
|
g_signal_emit (web_view, signals[LOAD_DONE], 0, web_frame);
|
||||||
|
@ -945,7 +956,10 @@ midori_web_view_get_icon (MidoriWebView* web_view)
|
||||||
{
|
{
|
||||||
#if GLIB_CHECK_VERSION (2, 16, 0)
|
#if GLIB_CHECK_VERSION (2, 16, 0)
|
||||||
GFile* file;
|
GFile* file;
|
||||||
|
GFile* parent;
|
||||||
GFile* icon_file;
|
GFile* icon_file;
|
||||||
|
GFileInfo* info;
|
||||||
|
const gchar* content_type;
|
||||||
GIcon* icon;
|
GIcon* icon;
|
||||||
GInputStream* stream;
|
GInputStream* stream;
|
||||||
#endif
|
#endif
|
||||||
|
@ -954,9 +968,24 @@ midori_web_view_get_icon (MidoriWebView* web_view)
|
||||||
g_return_val_if_fail (MIDORI_IS_WEB_VIEW (web_view), NULL);
|
g_return_val_if_fail (MIDORI_IS_WEB_VIEW (web_view), NULL);
|
||||||
|
|
||||||
#if GLIB_CHECK_VERSION (2, 16, 0)
|
#if GLIB_CHECK_VERSION (2, 16, 0)
|
||||||
file = g_file_new_for_uri (web_view->uri ? web_view->uri : "");
|
parent = g_file_new_for_uri (web_view->uri ? web_view->uri : "");
|
||||||
|
do
|
||||||
|
{
|
||||||
|
file = parent;
|
||||||
icon_file = g_file_get_child (file, "favicon.ico");
|
icon_file = g_file_get_child (file, "favicon.ico");
|
||||||
icon = g_file_icon_new (icon_file);
|
info = g_file_query_info (icon_file, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
|
||||||
|
G_FILE_QUERY_INFO_NONE, NULL, NULL);
|
||||||
|
if (info)
|
||||||
|
{
|
||||||
|
content_type = g_file_info_get_content_type (info);
|
||||||
|
icon = !strcmp (content_type, "image/x-icon")
|
||||||
|
? g_file_icon_new (icon_file) : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
parent = g_file_get_parent (file);
|
||||||
|
}
|
||||||
|
while (!icon && parent);
|
||||||
|
|
||||||
if (icon && (stream = g_loadable_icon_load (G_LOADABLE_ICON (icon),
|
if (icon && (stream = g_loadable_icon_load (G_LOADABLE_ICON (icon),
|
||||||
GTK_ICON_SIZE_MENU,
|
GTK_ICON_SIZE_MENU,
|
||||||
NULL, NULL, NULL)))
|
NULL, NULL, NULL)))
|
||||||
|
|
Loading…
Reference in a new issue