diff options
Diffstat (limited to 'gdk/x11/gdkmonitor-x11.c')
-rw-r--r-- | gdk/x11/gdkmonitor-x11.c | 33 |
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; + } } } |