mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-26 19:18:50 +00:00
Scale monitor dimensions obtained from GTK
This is part one of a two part fix for the GTK scaling problems. See the thread starting at http://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00372.html for an explanation of why it has been added to Emacs 26. * src/xfns.c (Fx_display_monitor_attributes_list): Take scaling factor into account when using GTK to query the monitor dimensions, which allows frameset-restore to position frames correctly.
This commit is contained in:
parent
1fc98ed073
commit
2892f05792
11
src/xfns.c
11
src/xfns.c
@ -4940,6 +4940,7 @@ Internal use only, use `display-monitor-attributes-list' instead. */)
|
||||
gint width_mm = -1, height_mm = -1;
|
||||
GdkRectangle rec, work;
|
||||
struct MonitorInfo *mi = &monitors[i];
|
||||
int scale;
|
||||
|
||||
#if GTK_CHECK_VERSION (3, 22, 0)
|
||||
GdkMonitor *monitor = gdk_display_get_monitor (gdpy, i);
|
||||
@ -4985,6 +4986,16 @@ Internal use only, use `display-monitor-attributes-list' instead. */)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* GTK returns scaled sizes for the workareas. */
|
||||
#if GTK_CHECK_VERSION (3, 22, 0)
|
||||
scale = gdk_monitor_get_scale_factor (monitor);
|
||||
#else
|
||||
scale = gdk_screen_get_monitor_scale_factor (gscreen, i);
|
||||
#endif
|
||||
rec.width *= scale;
|
||||
rec.height *= scale;
|
||||
work.width *= scale;
|
||||
work.height *= scale;
|
||||
|
||||
mi->geom.x = rec.x;
|
||||
mi->geom.y = rec.y;
|
||||
|
Loading…
Reference in New Issue
Block a user