Avoid loading favicons unless we need to
This commit is contained in:
parent
272046d94a
commit
9ba5513934
2 changed files with 22 additions and 25 deletions
|
@ -188,26 +188,6 @@ _midori_browser_get_tab_title (MidoriBrowser* browser,
|
||||||
return "untitled";
|
return "untitled";
|
||||||
}
|
}
|
||||||
|
|
||||||
static GdkPixbuf*
|
|
||||||
_midori_browser_get_tab_icon (MidoriBrowser* browser,
|
|
||||||
GtkWidget* widget)
|
|
||||||
{
|
|
||||||
const gchar* uri;
|
|
||||||
GdkPixbuf* icon;
|
|
||||||
|
|
||||||
if (MIDORI_IS_WEB_VIEW (widget))
|
|
||||||
return midori_web_view_get_icon (MIDORI_WEB_VIEW (widget));
|
|
||||||
|
|
||||||
uri = g_object_get_data (G_OBJECT (widget), "browser-tab-uri");
|
|
||||||
if (g_str_has_prefix (uri, "view-source:"))
|
|
||||||
icon = gtk_widget_render_icon (widget, GTK_STOCK_EDIT,
|
|
||||||
GTK_ICON_SIZE_MENU, NULL);
|
|
||||||
else
|
|
||||||
icon = gtk_widget_render_icon (widget, GTK_STOCK_FILE,
|
|
||||||
GTK_ICON_SIZE_MENU, NULL);
|
|
||||||
return icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_midori_browser_open_uri (MidoriBrowser* browser,
|
_midori_browser_open_uri (MidoriBrowser* browser,
|
||||||
const gchar* uri)
|
const gchar* uri)
|
||||||
|
@ -296,9 +276,9 @@ _midori_browser_update_interface (MidoriBrowser* browser)
|
||||||
gtk_widget_show (browser->progressbar);
|
gtk_widget_show (browser->progressbar);
|
||||||
}
|
}
|
||||||
katze_throbber_set_animated (KATZE_THROBBER (browser->throbber), loading);
|
katze_throbber_set_animated (KATZE_THROBBER (browser->throbber), loading);
|
||||||
icon = _midori_browser_get_tab_icon (browser, widget);
|
icon = katze_throbber_get_static_pixbuf (KATZE_THROBBER (
|
||||||
|
g_object_get_data (G_OBJECT (widget), "browser-tab-icon")));
|
||||||
gtk_image_set_from_pixbuf (GTK_IMAGE (browser->location_icon), icon);
|
gtk_image_set_from_pixbuf (GTK_IMAGE (browser->location_icon), icon);
|
||||||
g_object_unref (icon);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget*
|
static GtkWidget*
|
||||||
|
@ -938,7 +918,12 @@ _midori_browser_add_tab (MidoriBrowser* browser,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
icon = _midori_browser_get_tab_icon (browser, widget);
|
if (GTK_IS_TEXT_VIEW (widget))
|
||||||
|
icon = gtk_widget_render_icon (widget, GTK_STOCK_EDIT,
|
||||||
|
GTK_ICON_SIZE_MENU, NULL);
|
||||||
|
else
|
||||||
|
icon = gtk_widget_render_icon (widget, GTK_STOCK_FILE,
|
||||||
|
GTK_ICON_SIZE_MENU, NULL);
|
||||||
tab_icon = gtk_image_new_from_pixbuf (icon);
|
tab_icon = gtk_image_new_from_pixbuf (icon);
|
||||||
title = _midori_browser_get_tab_title (browser, widget);
|
title = _midori_browser_get_tab_title (browser, widget);
|
||||||
tab_title = gtk_label_new (title);
|
tab_title = gtk_label_new (title);
|
||||||
|
@ -957,6 +942,7 @@ _midori_browser_add_tab (MidoriBrowser* browser,
|
||||||
xbel_item);
|
xbel_item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
g_object_set_data (G_OBJECT (widget), "browser-tab-icon", tab_icon);
|
||||||
browser->tab_titles = g_list_prepend (browser->tab_titles, tab_title);
|
browser->tab_titles = g_list_prepend (browser->tab_titles, tab_title);
|
||||||
|
|
||||||
g_signal_connect (widget, "leave-notify-event",
|
g_signal_connect (widget, "leave-notify-event",
|
||||||
|
|
|
@ -29,6 +29,7 @@ struct _MidoriWebView
|
||||||
{
|
{
|
||||||
WebKitWebView parent_instance;
|
WebKitWebView parent_instance;
|
||||||
|
|
||||||
|
GdkPixbuf* icon;
|
||||||
gchar* uri;
|
gchar* uri;
|
||||||
gchar* title;
|
gchar* title;
|
||||||
gboolean is_loading;
|
gboolean is_loading;
|
||||||
|
@ -239,7 +240,8 @@ webkit_web_view_load_committed (MidoriWebView* web_view,
|
||||||
_midori_web_view_set_uri (web_view, uri);
|
_midori_web_view_set_uri (web_view, uri);
|
||||||
if (web_view->tab_icon)
|
if (web_view->tab_icon)
|
||||||
{
|
{
|
||||||
icon = midori_web_view_get_icon (web_view);
|
icon = gtk_widget_render_icon (GTK_WIDGET (web_view),
|
||||||
|
GTK_STOCK_FILE, GTK_ICON_SIZE_MENU, NULL);
|
||||||
katze_throbber_set_static_pixbuf (KATZE_THROBBER (web_view->tab_icon),
|
katze_throbber_set_static_pixbuf (KATZE_THROBBER (web_view->tab_icon),
|
||||||
icon);
|
icon);
|
||||||
g_object_unref (icon);
|
g_object_unref (icon);
|
||||||
|
@ -281,6 +283,8 @@ 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;
|
||||||
|
katze_object_assign (web_view->icon, NULL);
|
||||||
|
|
||||||
if (web_view->tab_icon || web_view->menu_item)
|
if (web_view->tab_icon || web_view->menu_item)
|
||||||
{
|
{
|
||||||
icon = midori_web_view_get_icon (web_view);
|
icon = midori_web_view_get_icon (web_view);
|
||||||
|
@ -553,6 +557,8 @@ midori_web_view_finalize (GObject* object)
|
||||||
{
|
{
|
||||||
MidoriWebView* web_view = MIDORI_WEB_VIEW (object);
|
MidoriWebView* web_view = MIDORI_WEB_VIEW (object);
|
||||||
|
|
||||||
|
if (web_view->icon)
|
||||||
|
g_object_unref (web_view->icon);
|
||||||
g_free (web_view->uri);
|
g_free (web_view->uri);
|
||||||
g_free (web_view->title);
|
g_free (web_view->title);
|
||||||
g_free (web_view->statusbar_text);
|
g_free (web_view->statusbar_text);
|
||||||
|
@ -926,6 +932,9 @@ 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 (web_view->icon)
|
||||||
|
return g_object_ref (web_view->icon);
|
||||||
|
|
||||||
#if GLIB_CHECK_VERSION (2, 16, 0)
|
#if GLIB_CHECK_VERSION (2, 16, 0)
|
||||||
parent = g_file_new_for_uri (web_view->uri ? web_view->uri : "");
|
parent = g_file_new_for_uri (web_view->uri ? web_view->uri : "");
|
||||||
icon = NULL;
|
icon = NULL;
|
||||||
|
@ -966,5 +975,7 @@ midori_web_view_get_icon (MidoriWebView* web_view)
|
||||||
g_object_unref (icon_file);
|
g_object_unref (icon_file);
|
||||||
g_object_unref (file);
|
g_object_unref (file);
|
||||||
#endif
|
#endif
|
||||||
return pixbuf;
|
|
||||||
|
web_view->icon = pixbuf;
|
||||||
|
return g_object_ref (web_view->icon);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue