summaryrefslogtreecommitdiff
path: root/gdk/x11/gdkmonitor-x11.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdk/x11/gdkmonitor-x11.c')
-rw-r--r--gdk/x11/gdkmonitor-x11.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/gdk/x11/gdkmonitor-x11.c b/gdk/x11/gdkmonitor-x11.c
index 34d88e98f8..0aac784cbc 100644
--- a/gdk/x11/gdkmonitor-x11.c
+++ b/gdk/x11/gdkmonitor-x11.c
@@ -67,18 +67,29 @@ gdk_x11_monitor_get_workarea (GdkMonitor *monitor,
gdk_monitor_get_geometry (monitor, dest);
- /* The EWMH constrains workarea to be a rectangle, so it
- * can't adequately deal with L-shaped monitor arrangements.
- * As a workaround, we ignore the workarea for anything
- * but the primary monitor. Since that is where the 'desktop
- * chrome' usually lives, this works ok in practice.
- */
- if (gdk_monitor_is_primary (monitor) &&
- !gdk_monitor_has_fullscreen_window (monitor))
+ if (_gdk_x11_screen_get_monitor_work_area (screen, monitor, &workarea))
{
- gdk_x11_screen_get_work_area (screen, &workarea);
- if (gdk_rectangle_intersect (dest, &workarea, &workarea))
- *dest = workarea;
+ if (!gdk_monitor_has_fullscreen_window (monitor))
+ {
+ if (gdk_rectangle_intersect (dest, &workarea, &workarea))
+ *dest = workarea;
+ }
+ }
+ else
+ {
+ /* The EWMH constrains workarea to be a rectangle, so it
+ * can't adequately deal with L-shaped monitor arrangements.
+ * As a workaround, we ignore the workarea for anything
+ * but the primary monitor. Since that is where the 'desktop
+ * chrome' usually lives, this works ok in practice.
+ */
+ if (gdk_monitor_is_primary (monitor) &&
+ !gdk_monitor_has_fullscreen_window (monitor))
+ {
+ gdk_x11_screen_get_work_area (screen, &workarea);
+ if (gdk_rectangle_intersect (dest, &workarea, &workarea))
+ *dest = workarea;
+ }
}
}