[Xfce4-commits] [xfce/xfwm4] 01/01: tabwin: Place tabwin in center when display is scaled

noreply at xfce.org noreply at xfce.org
Sun Dec 9 17:13:53 CET 2018


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 07773e608413a370932c5f2d59ed0b656240970a
Author: Jonas Zetterberg <jozz at jozz.se>
Date:   Sat Dec 1 12:53:46 2018 +0100

    tabwin: Place tabwin in center when display is scaled
    
    Bug: 14931
    
    On scaled display the tabwin is using unscaled window coordinates to calculate
    its position. Let the callert choose scaled or unscaled display size and use
    scaled in tabwin.
    
    fixes: 9d5ac6a4 Introduce xfwm-common static library
    
    Signed-off-by: Jonas Zetterberg <jozz at jozz.se>
---
 common/xfwm-common.c | 17 ++++++++++-------
 common/xfwm-common.h |  3 ++-
 src/screen.c         |  8 ++++----
 src/tabwin.c         |  8 ++++----
 4 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/common/xfwm-common.c b/common/xfwm-common.c
index a991b35..04f45e0 100644
--- a/common/xfwm-common.c
+++ b/common/xfwm-common.c
@@ -78,23 +78,26 @@ xfwm_get_screen_dimensions (gint *width, gint *height)
 void
 xfwm_get_monitor_geometry (GdkScreen    *screen,
                            gint          monitor_num,
-                           GdkRectangle *geometry)
+                           GdkRectangle *geometry,
+                           gboolean      scaled)
 {
 #if GTK_CHECK_VERSION(3, 22, 0)
   GdkDisplay *display;
   GdkMonitor *monitor;
-  int scale;
 
   display = gdk_screen_get_display (screen);
   monitor = gdk_display_get_monitor (display, monitor_num);
   gdk_monitor_get_geometry (monitor, geometry);
 
   /* Convert to device pixels */
-  scale = gdk_monitor_get_scale_factor (monitor);
-  geometry->x *= scale;
-  geometry->y *= scale;
-  geometry->width *= scale;
-  geometry->height *= scale;
+  if (scaled)
+    {
+      int scale = gdk_monitor_get_scale_factor (monitor);
+      geometry->x *= scale;
+      geometry->y *= scale;
+      geometry->width *= scale;
+      geometry->height *= scale;
+    }
 #else
   gdk_screen_get_monitor_geometry (screen, monitor_num, geometry);
 #endif
diff --git a/common/xfwm-common.h b/common/xfwm-common.h
index e2e8c97..3cd2b62 100644
--- a/common/xfwm-common.h
+++ b/common/xfwm-common.h
@@ -31,7 +31,8 @@ void              xfwm_get_screen_dimensions            (gint         *width,
 
 void              xfwm_get_monitor_geometry             (GdkScreen    *screen,
                                                          gint          monitor_num,
-                                                         GdkRectangle *geometry);
+                                                         GdkRectangle *geometry,
+                                                         gboolean      scaled);
 
 void              xfwm_get_primary_monitor_geometry     (GdkScreen    *screen,
                                                          GdkRectangle *geometry);
diff --git a/src/screen.c b/src/screen.c
index a40e3db..f112432 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -642,7 +642,7 @@ myScreenComputeSize (ScreenInfo *screen_info)
 
     for (i = 0; i < num_monitors; i++)
     {
-        xfwm_get_monitor_geometry (screen_info->gscr, i, &monitor);
+        xfwm_get_monitor_geometry (screen_info->gscr, i, &monitor, TRUE);
         width = MAX (monitor.x + monitor.width, width);
         height = MAX (monitor.y + monitor.height, height);
     }
@@ -717,11 +717,11 @@ myScreenRebuildMonitorIndex (ScreenInfo *screen_info)
     num_monitors = xfwm_get_n_monitors (screen_info->gscr);
     for (i = 0; i < num_monitors; i++)
     {
-        xfwm_get_monitor_geometry (screen_info->gscr, i, &monitor);
+        xfwm_get_monitor_geometry (screen_info->gscr, i, &monitor, TRUE);
         cloned = FALSE;
         for (j = 0; j < (gint) screen_info->monitors_index->len; j++)
         {
-            xfwm_get_monitor_geometry (screen_info->gscr, j, &previous);
+            xfwm_get_monitor_geometry (screen_info->gscr, j, &previous, TRUE);
             if ((previous.x == monitor.x) && (previous.y == monitor.y))
             {
                 cloned = TRUE;
@@ -784,7 +784,7 @@ myScreenFindMonitorAtPoint (ScreenInfo *screen_info, gint x, gint y, GdkRectangl
         gint monitor_index;
 
         monitor_index = myScreenGetMonitorIndex (screen_info, i);
-        xfwm_get_monitor_geometry (screen_info->gscr, monitor_index, &monitor);
+        xfwm_get_monitor_geometry (screen_info->gscr, monitor_index, &monitor, TRUE);
 
         if ((x >= monitor.x) && (x < (monitor.x + monitor.width)) &&
             (y >= monitor.y) && (y < (monitor.y + monitor.height)))
diff --git a/src/tabwin.c b/src/tabwin.c
index 4be61fb..fe875de 100644
--- a/src/tabwin.c
+++ b/src/tabwin.c
@@ -329,7 +329,7 @@ getMinMonitorWidth (ScreenInfo *screen_info)
     for (min_width = i = 0; i < num_monitors; i++)
     {
         GdkRectangle monitor;
-        xfwm_get_monitor_geometry (screen_info->gscr, i, &monitor);
+        xfwm_get_monitor_geometry (screen_info->gscr, i, &monitor, FALSE);
         if (min_width == 0 || monitor.width < min_width)
             min_width = monitor.width;
     }
@@ -343,7 +343,7 @@ getMinMonitorHeight (ScreenInfo *screen_info)
     for (min_height = i = 0; i < num_monitors; i++)
     {
         GdkRectangle monitor;
-        xfwm_get_monitor_geometry (screen_info->gscr, i, &monitor);
+        xfwm_get_monitor_geometry (screen_info->gscr, i, &monitor, FALSE);
         if (min_height == 0 || monitor.height < min_height)
         {
             min_height = monitor.height;
@@ -573,7 +573,7 @@ tabwinConfigure (TabwinWidget *tabwin_widget, GdkEventConfigure *event)
     }
 
     xfwm_get_monitor_geometry (gtk_widget_get_screen (GTK_WIDGET (tabwin_widget)),
-                               tabwin_widget->monitor_num, &monitor);
+                               tabwin_widget->monitor_num, &monitor, FALSE);
     x = monitor.x + (monitor.width - event->width) / 2;
     y = monitor.y + (monitor.height - event->height) / 2;
     gtk_window_move (GTK_WINDOW (tabwin_widget), x, y);
@@ -784,7 +784,7 @@ tabwinCreateWidget (Tabwin *tabwin, ScreenInfo *screen_info, gint monitor_num)
                                     MAX (border.left, MAX (border.top, (MAX (border.right, border.bottom)))) +
                                     MAX (padding.left, MAX (padding.top, (MAX (padding.right, padding.bottom)))));
     gtk_window_set_position (GTK_WINDOW (tabwin_widget), GTK_WIN_POS_NONE);
-    xfwm_get_monitor_geometry (screen_info->gscr, tabwin_widget->monitor_num, &monitor);
+    xfwm_get_monitor_geometry (screen_info->gscr, tabwin_widget->monitor_num, &monitor, FALSE);
     gtk_window_move (GTK_WINDOW (tabwin_widget), monitor.x + monitor.width / 2,
                                       monitor.y + monitor.height / 2);
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list