[Xfce4-commits] [xfce/xfwm4] 03/05: tabwin: apply a proper scaling for icons and previews
noreply at xfce.org
noreply at xfce.org
Thu Jun 6 21:20:33 CEST 2019
This is an automated email from the git hooks/post-receive script.
o l i v i e r p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository xfce/xfwm4.
commit b5c07beffa7f8a939bba432aeedac30fed6d164b
Author: Viktor Odintsev <ninetls at xfce.org>
Date: Wed Dec 26 16:50:23 2018 +0300
tabwin: apply a proper scaling for icons and previews
---
src/tabwin.c | 28 +++++++++++++++++++++-------
src/tabwin.h | 1 +
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/src/tabwin.c b/src/tabwin.c
index 3b76940..35dfba0 100644
--- a/src/tabwin.c
+++ b/src/tabwin.c
@@ -317,18 +317,28 @@ tabwinSelectWidget (Tabwin *tabwin)
}
static GtkWidget *
-createWindowIcon (GdkScreen *screen, GdkPixbuf *icon_pixbuf, gint size)
+createWindowIcon (GdkScreen *screen, GdkPixbuf *icon_pixbuf, gint size, gint scale)
{
GtkIconTheme *icon_theme;
+ GtkWidget * icon;
+ cairo_surface_t *surface;
TRACE ("entering");
if (icon_pixbuf == NULL)
{
icon_theme = gtk_icon_theme_get_for_screen (screen);
- icon_pixbuf = gtk_icon_theme_load_icon (icon_theme, "xfwm4-default", size, 0, NULL);
+ icon_pixbuf = gtk_icon_theme_load_icon (icon_theme, "xfwm4-default",
+ size * scale, 0, NULL);
}
- return gtk_image_new_from_pixbuf (icon_pixbuf);
+
+ icon = gtk_image_new ();
+ surface = gdk_cairo_surface_create_from_pixbuf (icon_pixbuf, scale, NULL);
+ if (surface != NULL) {
+ gtk_image_set_from_surface (GTK_IMAGE (icon), surface);
+ cairo_surface_destroy (surface);
+ }
+ return icon;
}
static int
@@ -496,7 +506,7 @@ createWindowlist (ScreenInfo *screen_info, TabwinWidget *tabwin_widget)
G_CALLBACK (cb_window_button_leave), tabwin_widget);
gtk_widget_add_events (window_button, GDK_ENTER_NOTIFY_MASK);
- icon = createWindowIcon (screen_info->gscr, icon_pixbuf, tabwin->icon_size);
+ icon = createWindowIcon (screen_info->gscr, icon_pixbuf, tabwin->icon_size, tabwin->icon_scale);
if (screen_info->params->cycle_tabwin_mode == STANDARD_ICON_GRID)
{
gtk_widget_set_size_request (GTK_WIDGET (window_button), size_request, size_request);
@@ -641,6 +651,7 @@ computeTabwinData (ScreenInfo *screen_info, TabwinWidget *tabwin_widget)
tabwin->monitor_height = getMinMonitorHeight (screen_info);
tabwin->label_height = 30;
preview = screen_info->params->cycle_preview && compositorIsActive (screen_info);
+ tabwin->icon_scale = gtk_widget_get_scale_factor (GTK_WIDGET (tabwin_widget));
/* We need to account for changes to the font size in the user's
* appearance theme and gtkrc settings */
@@ -719,19 +730,22 @@ computeTabwinData (ScreenInfo *screen_info, TabwinWidget *tabwin_widget)
{
if (preview)
{
- icon_pixbuf = getClientIcon (c, tabwin->icon_size, tabwin->icon_size);
+ icon_pixbuf = getClientIcon (c, tabwin->icon_size * tabwin->icon_scale,
+ tabwin->icon_size * tabwin->icon_scale);
}
else
{
icon_pixbuf = getAppIcon (c->screen_info, c->window,
- tabwin->icon_size, tabwin->icon_size);
+ tabwin->icon_size * tabwin->icon_scale,
+ tabwin->icon_size * tabwin->icon_scale);
}
}
else
{
/* No preview in list mode */
icon_pixbuf = getAppIcon (c->screen_info, c->window,
- tabwin->icon_size, tabwin->icon_size);
+ tabwin->icon_size * tabwin->icon_scale,
+ tabwin->icon_size * tabwin->icon_scale);
}
tabwin->icon_list = g_list_append(tabwin->icon_list, icon_pixbuf);
}
diff --git a/src/tabwin.h b/src/tabwin.h
index e9d138c..15bb751 100644
--- a/src/tabwin.h
+++ b/src/tabwin.h
@@ -54,6 +54,7 @@ struct _Tabwin
gint grid_cols;
gint grid_rows;
gint icon_size;
+ gint icon_scale;
gint label_height;
gboolean display_workspace;
};
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list