[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