[gtk+/gtk-3-18] color chooser: Render icons sharp at scale 2
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-18] color chooser: Render icons sharp at scale 2
- Date: Mon, 12 Oct 2015 17:27:10 +0000 (UTC)
commit 5d70f4bd44131e4923277370be9df7fe091a0369
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Oct 7 23:19:32 2015 -0400
color chooser: Render icons sharp at scale 2
We need to load the icons at the right scale, and render them
to a surface with the right scale too.
https://bugzilla.gnome.org/show_bug.cgi?id=756195
gtk/gtkcolorswatch.c | 30 ++++++++++++++++++------------
1 files changed, 18 insertions(+), 12 deletions(-)
---
diff --git a/gtk/gtkcolorswatch.c b/gtk/gtkcolorswatch.c
index 15770ba..472b4f9 100644
--- a/gtk/gtkcolorswatch.c
+++ b/gtk/gtkcolorswatch.c
@@ -118,6 +118,7 @@ swatch_draw (GtkWidget *widget,
GtkBorder border, padding;
GdkRectangle rect;
GtkIconInfo *icon_info = NULL;
+ gint scale;
theme = gtk_icon_theme_get_default ();
context = gtk_widget_get_style_context (widget);
@@ -168,11 +169,13 @@ swatch_draw (GtkWidget *widget,
gtk_render_frame (context, cr, 0, 0, width, height);
+ scale = gtk_widget_get_scale_factor (widget);
if (swatch->priv->icon)
{
- icon_info = gtk_icon_theme_lookup_icon (theme, swatch->priv->icon, PIXBUF_SIZE,
- GTK_ICON_LOOKUP_GENERIC_FALLBACK
- | GTK_ICON_LOOKUP_USE_BUILTIN);
+ icon_info = gtk_icon_theme_lookup_icon_for_scale (theme, swatch->priv->icon, PIXBUF_SIZE,
+ scale,
+ GTK_ICON_LOOKUP_GENERIC_FALLBACK
+ | GTK_ICON_LOOKUP_USE_BUILTIN);
}
else if ((state & GTK_STATE_FLAG_SELECTED) != 0)
{
@@ -182,9 +185,10 @@ swatch_draw (GtkWidget *widget,
/* fallback for themes that don't have object-select-symbolic */
g_themed_icon_append_name (G_THEMED_ICON (gicon), "gtk-apply");
- icon_info = gtk_icon_theme_lookup_by_gicon (theme, gicon, PIXBUF_SIZE,
- GTK_ICON_LOOKUP_GENERIC_FALLBACK
- | GTK_ICON_LOOKUP_USE_BUILTIN);
+ icon_info = gtk_icon_theme_lookup_by_gicon_for_scale (theme, gicon, PIXBUF_SIZE,
+ scale,
+ GTK_ICON_LOOKUP_GENERIC_FALLBACK
+ | GTK_ICON_LOOKUP_USE_BUILTIN);
g_object_unref (gicon);
}
@@ -206,14 +210,16 @@ swatch_draw (GtkWidget *widget,
{
GdkPixbuf *pixbuf;
- pixbuf = gtk_icon_info_load_symbolic_for_context (icon_info, context,
- NULL, NULL);
-
+ pixbuf = gtk_icon_info_load_symbolic_for_context (icon_info, context, NULL, NULL);
if (pixbuf != NULL)
{
- gtk_render_icon (context, cr, pixbuf,
- rect.x + (rect.width - gdk_pixbuf_get_width (pixbuf)) / 2,
- rect.y + (rect.height - gdk_pixbuf_get_height (pixbuf)) / 2);
+ cairo_surface_t *surface;
+
+ surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, scale, gtk_widget_get_window (widget));
+ gtk_render_icon_surface (context, cr, surface,
+ rect.x + (rect.width - (gdk_pixbuf_get_width (pixbuf) / scale)) / 2,
+ rect.y + (rect.height - (gdk_pixbuf_get_height (pixbuf) / scale)) / 2);
+ cairo_surface_destroy (surface);
g_object_unref (pixbuf);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]