Revert "xwm: do not include shadow in input region"

This reverts commit 332d1892bb.
And re-introduces the bug it was intended to fix, see:
https://lists.freedesktop.org/archives/wayland-devel/2017-December/036402.html

Reverting this because it causes harm to all xwayland clients - the
input region no longer gets adjusted when resizing windows.

start an xterm, resize it larger, you can no longer interact with the
new area of the window (including the server side decor).
dev
Derek Foreman 7 years ago
parent bef761796c
commit 676523396e
  1. 34
      xwayland/window-manager.c

@ -644,20 +644,6 @@ weston_wm_window_get_child_position(struct weston_wm_window *window,
} }
} }
static void
weston_wm_window_get_input_rect(struct weston_wm_window *window,
int32_t *x, int32_t *y,
int32_t *width, int32_t *height)
{
if (!window->decorate) {
weston_wm_window_get_child_position(window, x, y);
*width = window->width;
*height = window->height;
} else {
frame_input_rect(window->frame, x, y, width, height);
}
}
static void static void
weston_wm_window_send_configure_notify(struct weston_wm_window *window) weston_wm_window_send_configure_notify(struct weston_wm_window *window)
{ {
@ -983,7 +969,6 @@ weston_wm_window_create_frame(struct weston_wm_window *window)
{ {
struct weston_wm *wm = window->wm; struct weston_wm *wm = window->wm;
uint32_t values[3]; uint32_t values[3];
xcb_rectangle_t rect;
int x, y, width, height; int x, y, width, height;
int buttons = FRAME_BUTTON_CLOSE; int buttons = FRAME_BUTTON_CLOSE;
@ -1040,25 +1025,6 @@ weston_wm_window_create_frame(struct weston_wm_window *window)
&wm->format_rgba, &wm->format_rgba,
width, height); width, height);
weston_wm_window_get_input_rect(window, &x, &y, &width, &height);
rect.x = x;
rect.y = y;
rect.width = width;
rect.height = height;
/* The window frame was created with position and size which include
* an offset for margins and shadow. Set the input region to ignore
* shadow. */
xcb_shape_rectangles(wm->conn,
XCB_SHAPE_SO_SET,
XCB_SHAPE_SK_INPUT,
0,
window->frame_id,
0,
0,
1,
&rect);
hash_table_insert(wm->window_hash, window->frame_id, window); hash_table_insert(wm->window_hash, window->frame_id, window);
} }

Loading…
Cancel
Save