Add a workaround for icons not scaling right on HiDPI screens. (#2573)
This commit is contained in:
parent
65edc9ad9a
commit
f0554b27df
@ -89,7 +89,9 @@ pixmap_load_from_file (char *filename)
|
|||||||
static GdkPixbuf *
|
static GdkPixbuf *
|
||||||
load_pixmap (const char *filename)
|
load_pixmap (const char *filename)
|
||||||
{
|
{
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf, *scaledpixbuf;
|
||||||
|
const char *scale;
|
||||||
|
int iscale;
|
||||||
|
|
||||||
gchar *path = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "icons" G_DIR_SEPARATOR_S "%s.png", get_xdir (), filename);
|
gchar *path = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "icons" G_DIR_SEPARATOR_S "%s.png", get_xdir (), filename);
|
||||||
pixbuf = gdk_pixbuf_new_from_file (path, 0);
|
pixbuf = gdk_pixbuf_new_from_file (path, 0);
|
||||||
@ -102,6 +104,24 @@ load_pixmap (const char *filename)
|
|||||||
g_free (path);
|
g_free (path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hack to avoid unbearably tiny icons on HiDPI screens.
|
||||||
|
scale = g_getenv ("GDK_SCALE");
|
||||||
|
if (scale)
|
||||||
|
{
|
||||||
|
iscale = atoi (scale);
|
||||||
|
if (iscale > 0)
|
||||||
|
{
|
||||||
|
scaledpixbuf = gdk_pixbuf_scale_simple (pixbuf, gdk_pixbuf_get_width (pixbuf) * iscale,
|
||||||
|
gdk_pixbuf_get_height (pixbuf) * iscale, GDK_INTERP_BILINEAR);
|
||||||
|
|
||||||
|
if (scaledpixbuf)
|
||||||
|
{
|
||||||
|
g_object_unref (pixbuf);
|
||||||
|
pixbuf = scaledpixbuf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
g_warn_if_fail (pixbuf != NULL);
|
g_warn_if_fail (pixbuf != NULL);
|
||||||
|
|
||||||
return pixbuf;
|
return pixbuf;
|
||||||
|
Loading…
Reference in New Issue
Block a user