diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-09-30 18:42:20 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-09-30 18:42:20 -0400 |
commit | 84c7f6c747e646e45c0a2297ebd30a198b394b5a (patch) | |
tree | 803fb704ff626a650e86ab8a4de6f36b03d86cbc | |
parent | 983cd2f7cc9e7d7f54a07d6b286e24e0a8dc37d5 (diff) | |
download | gtk+-84c7f6c747e646e45c0a2297ebd30a198b394b5a.tar.gz |
header bar: Show a non-pixellated app icon
Load a hi-dpi icon when we are running with scale=2.
https://bugzilla.gnome.org/show_bug.cgi?id=751787
-rw-r--r-- | gtk/gtkheaderbar.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/gtk/gtkheaderbar.c b/gtk/gtkheaderbar.c index 7589e1faa8..042bb42c5d 100644 --- a/gtk/gtkheaderbar.c +++ b/gtk/gtkheaderbar.c @@ -220,18 +220,25 @@ _gtk_header_bar_update_window_icon (GtkHeaderBar *bar, { GtkHeaderBarPrivate *priv = gtk_header_bar_get_instance_private (bar); GdkPixbuf *pixbuf; + gint scale; if (priv->titlebar_icon == NULL) return FALSE; + scale = gtk_widget_get_scale_factor (priv->titlebar_icon); if (GTK_IS_BUTTON (gtk_widget_get_parent (priv->titlebar_icon))) - pixbuf = gtk_window_get_icon_for_size (window, 16); + pixbuf = gtk_window_get_icon_for_size (window, scale * 16); else - pixbuf = gtk_window_get_icon_for_size (window, 20); + pixbuf = gtk_window_get_icon_for_size (window, scale * 20); if (pixbuf) { - gtk_image_set_from_pixbuf (GTK_IMAGE (priv->titlebar_icon), pixbuf); + cairo_surface_t *surface; + + surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, scale, gtk_widget_get_window (priv->titlebar_icon)); + + gtk_image_set_from_surface (GTK_IMAGE (priv->titlebar_icon), surface); + cairo_surface_destroy (surface); g_object_unref (pixbuf); gtk_widget_show (priv->titlebar_icon); |