diff options
author | Scott Moreau <oreaus@gmail.com> | 2012-05-14 11:39:29 -0600 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2012-05-14 14:30:01 -0400 |
commit | f7e498cb89ef1b740380414eaf557da4428557fb (patch) | |
tree | e2e54773c16a2424bd8a8e7829f877667faeb743 | |
parent | 79b5652de61362a137917a1b46fe87e81a48c406 (diff) |
toytoolkit: Recalculate input region if client has modified it's size.
If a client changes it's width/height values in it's widget resize handler,
the input region will be wrong because of the assumptions toytoolkit makes
in frame_resize_handler(). So far, gears is the only client that does this.
-rw-r--r-- | clients/window.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/clients/window.c b/clients/window.c index 472c85d..81a0d7d 100644 --- a/clients/window.c +++ b/clients/window.c @@ -1175,13 +1175,6 @@ frame_resize_handler(struct widget *widget, allocation.width = width - decoration_width; allocation.height = height - decoration_height; - widget->window->input_region = - wl_compositor_create_region(display->compositor); - wl_region_add(widget->window->input_region, - frame->margin, frame->margin, - width - 2 * frame->margin, - height - 2 * frame->margin); - opaque_margin = frame->margin + display->frame_radius; wl_list_for_each(button, &frame->buttons_list, link) @@ -1209,9 +1202,17 @@ frame_resize_handler(struct widget *widget, allocation.height, child->user_data); - widget_set_allocation(widget, 0, 0, - child->allocation.width + decoration_width, - child->allocation.height + decoration_height); + width = child->allocation.width + decoration_width; + height = child->allocation.height + decoration_height; + + widget->window->input_region = + wl_compositor_create_region(display->compositor); + wl_region_add(widget->window->input_region, + frame->margin, frame->margin, + width - 2 * frame->margin, + height - 2 * frame->margin); + + widget_set_allocation(widget, 0, 0, width, height); if (child->opaque) { widget->window->opaque_region = |