summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hofmann <scm@uninformativ.de>2020-04-27 18:03:51 +0200
committerPeter Hofmann <scm@uninformativ.de>2020-04-27 18:03:51 +0200
commit813150ab894f92565735ad5b140a41a512fc6264 (patch)
treec104d28103cb8601e61f42752f246618520c2d5b
parentf4d5f98aa3341cf9c01ba3d9d74e2dedbafe7fe3 (diff)
downloadlariza-813150ab894f92565735ad5b140a41a512fc6264.tar.gz
Scale favicons
-rw-r--r--browser.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/browser.c b/browser.c
index 5828b40..847cf09 100644
--- a/browser.c
+++ b/browser.c
@@ -410,8 +410,8 @@ changed_favicon(GObject *obj, GParamSpec *pspec, gpointer data)
{
struct Client *c = (struct Client *)data;
cairo_surface_t *f;
- int w, h;
- GdkPixbuf *pb;
+ int w, h, w_scaled, h_scaled;
+ GdkPixbuf *pb, *pb_scaled;
f = webkit_web_view_get_favicon(WEBKIT_WEB_VIEW(c->web_view));
if (f != NULL)
@@ -421,8 +421,18 @@ changed_favicon(GObject *obj, GParamSpec *pspec, gpointer data)
pb = gdk_pixbuf_get_from_surface(f, 0, 0, w, h);
if (pb != NULL)
{
- /* TODO: Resize icon */
- gtk_image_set_from_pixbuf(GTK_IMAGE(c->tabicon), pb);
+ if (w > 16 || h > 16)
+ {
+ w_scaled = 16 * gtk_widget_get_scale_factor(c->tabicon);
+ h_scaled = 16 * gtk_widget_get_scale_factor(c->tabicon);
+ pb_scaled = gdk_pixbuf_scale_simple(pb, w_scaled, h_scaled,
+ GDK_INTERP_BILINEAR);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(c->tabicon), pb_scaled);
+ g_object_unref(pb_scaled);
+ }
+ else
+ gtk_image_set_from_pixbuf(GTK_IMAGE(c->tabicon), pb);
+
g_object_unref(pb);
}
}