summaryrefslogtreecommitdiff
path: root/mate-panel/panel-struts.c
diff options
context:
space:
mode:
authorVictor Kareh <[email protected]>2018-02-24 11:02:15 -0500
committerVictor Kareh <[email protected]>2018-02-24 11:02:15 -0500
commit87a376956154563d72192f74608b46622aaa753a (patch)
tree7db3d964f09b417de76b1cba72b14ce4871cc164 /mate-panel/panel-struts.c
parentb08bc130853b2f737eb47113357513f5e937eb47 (diff)
downloadmate-panel-87a376956154563d72192f74608b46622aaa753a.tar.bz2
mate-panel-87a376956154563d72192f74608b46622aaa753a.tar.xz
Scale monitor geometries down to device pixels to support multiple monitors in HiDPI
Diffstat (limited to 'mate-panel/panel-struts.c')
-rw-r--r--mate-panel/panel-struts.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/mate-panel/panel-struts.c b/mate-panel/panel-struts.c
index d59587e5..f702f565 100644
--- a/mate-panel/panel-struts.c
+++ b/mate-panel/panel-struts.c
@@ -75,10 +75,17 @@ panel_struts_get_monitor_geometry (GdkScreen *screen,
int *width,
int *height)
{
- *x = panel_multiscreen_x (screen, monitor);
- *y = panel_multiscreen_y (screen, monitor);
- *width = panel_multiscreen_width (screen, monitor);
- *height = panel_multiscreen_height (screen, monitor);
+ GdkDisplay *display;
+ int scale;
+
+ /* Use scale factor to bring strut dimensions up to application pixels to support HiDPI displays */
+ display = gdk_screen_get_display (screen);
+ scale = gdk_monitor_get_scale_factor (gdk_display_get_monitor (display, monitor));
+
+ *x = panel_multiscreen_x (screen, monitor) * scale;
+ *y = panel_multiscreen_y (screen, monitor) * scale;
+ *width = panel_multiscreen_width (screen, monitor) * scale;
+ *height = panel_multiscreen_height (screen, monitor) * scale;
}
static PanelStrut *