diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-05-28 15:56:19 +0200 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2017-06-07 14:45:34 +1000 |
commit | 513e3bd3870fdb8a8e0e2e52c0fa93872300bc8b (patch) | |
tree | d79cb7dc3174f6d12bb42648c4201bd9d17b7ecb | |
parent | fafdb0cc9697eb53635ed1e78bec1d4cd87ab3a2 (diff) |
xwayland: Update root window size when desktop size changes
This fixes grabs on InputOnly windows whose parent is the root window
failing with GrabNotViewable. This is due to window->borderSize/windowSize
being computed as clipped by its parent, resulting in a null region.
Setting up the right size on the root window makes the InputOnly size
correct too, so the GrabNotViewable paths aren't hit anymore.
Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | hw/xwayland/xwayland-output.c | 3 | ||||
-rw-r--r-- | hw/xwayland/xwayland.c | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c index bfaf9795a..460caaf56 100644 --- a/hw/xwayland/xwayland-output.c +++ b/hw/xwayland/xwayland-output.c @@ -188,8 +188,11 @@ update_screen_size(struct xwl_output *xwl_output, int width, int height) SetRootClip(xwl_screen->screen, xwl_screen->root_clip_mode); if (xwl_screen->screen->root) { + BoxRec box = { 0, 0, width, height }; + xwl_screen->screen->root->drawable.width = width; xwl_screen->screen->root->drawable.height = height; + RegionReset(&xwl_screen->screen->root->winSize, &box); RRScreenSizeNotify(xwl_screen->screen); } diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c index 993837f78..551443f93 100644 --- a/hw/xwayland/xwayland.c +++ b/hw/xwayland/xwayland.c @@ -443,9 +443,11 @@ xwl_realize_window(WindowPtr window) screen->RealizeWindow = xwl_realize_window; if (xwl_screen->rootless && !window->parent) { + BoxRec box = { 0, 0, xwl_screen->width, xwl_screen->height }; + + RegionReset(&window->winSize, &box); RegionNull(&window->clipList); RegionNull(&window->borderClip); - RegionNull(&window->winSize); } if (xwl_screen->rootless) { |