Generate thumbnails of open tabs
The images aren't used for anything yet, and can't be disabled
This commit is contained in:
parent
f93c3c166f
commit
8c8551d384
1 changed files with 61 additions and 0 deletions
|
@ -394,6 +394,61 @@ midori_view_notify_icon_cb (MidoriView* view,
|
||||||
MIDORI_LOCATION_ACTION (action), midori_view_get_icon (view), uri);
|
MIDORI_LOCATION_ACTION (action), midori_view_get_icon (view), uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
midori_browser_update_thumbnail (GtkWidget* view,
|
||||||
|
const gchar* uri)
|
||||||
|
{
|
||||||
|
GtkWidget* child;
|
||||||
|
|
||||||
|
#if GTK_CHECK_VERSION (2, 12, 0)
|
||||||
|
/* FIXME: A preference should toggle thumbnails */
|
||||||
|
|
||||||
|
if (midori_view_get_load_status (MIDORI_VIEW (view)) != MIDORI_LOAD_FINISHED)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* gtk_widget_get_snapshot works only with visible widgets */
|
||||||
|
if (!GTK_WIDGET_DRAWABLE (view))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((child = gtk_bin_get_child (GTK_BIN (view))))
|
||||||
|
{
|
||||||
|
static gchar* folder = NULL;
|
||||||
|
GdkRectangle rect;
|
||||||
|
GdkPixmap* pixmap;
|
||||||
|
GdkPixbuf* pixbuf;
|
||||||
|
gchar* thumb;
|
||||||
|
gchar* filename;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (!folder))
|
||||||
|
{
|
||||||
|
folder = g_build_filename (g_get_user_cache_dir (), PACKAGE_NAME,
|
||||||
|
"thumbs", NULL);
|
||||||
|
g_mkdir_with_parents (folder, 0700);
|
||||||
|
}
|
||||||
|
|
||||||
|
thumb = g_compute_checksum_for_string (G_CHECKSUM_MD5, uri, -1);
|
||||||
|
filename = g_build_filename (folder, thumb, NULL);
|
||||||
|
g_free (thumb);
|
||||||
|
/* FIXME: Regenerate if needed */
|
||||||
|
if (g_file_test (filename, G_FILE_TEST_EXISTS))
|
||||||
|
{
|
||||||
|
g_free (filename);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
rect.x = rect.y = -1;
|
||||||
|
rect.width = rect.height = 0;
|
||||||
|
pixmap = gtk_widget_get_snapshot (child, &rect);
|
||||||
|
pixbuf = gdk_pixbuf_get_from_drawable (NULL, pixmap, NULL, 0, 0,
|
||||||
|
0, 0, rect.width, rect.height);
|
||||||
|
g_object_unref (pixmap);
|
||||||
|
gdk_pixbuf_save (pixbuf, filename, "png", NULL, NULL);
|
||||||
|
g_free (filename);
|
||||||
|
g_object_unref (pixbuf);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_view_notify_load_status_cb (GtkWidget* view,
|
midori_view_notify_load_status_cb (GtkWidget* view,
|
||||||
GParamSpec* pspec,
|
GParamSpec* pspec,
|
||||||
|
@ -423,6 +478,7 @@ midori_view_notify_load_status_cb (GtkWidget* view,
|
||||||
MIDORI_LOCATION_ACTION (action), NULL);
|
MIDORI_LOCATION_ACTION (action), NULL);
|
||||||
g_object_notify (G_OBJECT (browser), "uri");
|
g_object_notify (G_OBJECT (browser), "uri");
|
||||||
}
|
}
|
||||||
|
midori_browser_update_thumbnail (view, uri);
|
||||||
|
|
||||||
_midori_browser_update_interface (browser);
|
_midori_browser_update_interface (browser);
|
||||||
_midori_browser_set_statusbar_text (browser, NULL);
|
_midori_browser_set_statusbar_text (browser, NULL);
|
||||||
|
@ -2661,6 +2717,9 @@ _action_search_submit (GtkAction* action,
|
||||||
const gchar* url;
|
const gchar* url;
|
||||||
gchar* search;
|
gchar* search;
|
||||||
|
|
||||||
|
if (!browser->settings)
|
||||||
|
return;
|
||||||
|
|
||||||
g_object_get (browser->settings, "last-web-search", &last_web_search, NULL);
|
g_object_get (browser->settings, "last-web-search", &last_web_search, NULL);
|
||||||
item = katze_array_get_nth_item (browser->search_engines, last_web_search);
|
item = katze_array_get_nth_item (browser->search_engines, last_web_search);
|
||||||
if (item)
|
if (item)
|
||||||
|
@ -3303,6 +3362,8 @@ gtk_notebook_switch_page_cb (GtkWidget* notebook,
|
||||||
_midori_browser_set_statusbar_text (browser, NULL);
|
_midori_browser_set_statusbar_text (browser, NULL);
|
||||||
_midori_browser_update_interface (browser);
|
_midori_browser_update_interface (browser);
|
||||||
_midori_browser_update_progress (browser, MIDORI_VIEW (view));
|
_midori_browser_update_progress (browser, MIDORI_VIEW (view));
|
||||||
|
|
||||||
|
midori_browser_update_thumbnail (view, uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue