[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