[PATCH weston v2] toytoolkit: Recalculate input region if client has modified it's size.

Scott Moreau oreaus at gmail.com
Mon May 14 10:39:29 PDT 2012


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.
---

Move the input region code instead of duplicate it. Also reuse width and
height variables instead of create new ones.

 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 =
-- 
1.7.7.6



More information about the wayland-devel mailing list