summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moreau <oreaus@gmail.com>2012-05-14 11:39:29 -0600
committerKristian Høgsberg <krh@bitplanet.net>2012-05-14 14:30:01 -0400
commitf7e498cb89ef1b740380414eaf557da4428557fb (patch)
treee2e54773c16a2424bd8a8e7829f877667faeb743
parent79b5652de61362a137917a1b46fe87e81a48c406 (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.c21
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 =