From: Ning Tang <[email protected]>

 The method to determine whether a point is in an rectangle area is common and
 could be used by applications.

 Signed-off-by: Ning Tang <[email protected]>
---
 clients/window.c | 17 +++++++++++++----
 clients/window.h |  3 +++
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/clients/window.c b/clients/window.c
index 3846e15..38cd835 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -917,10 +917,7 @@ widget_find_widget(struct widget *widget, int32_t x, 
int32_t y)
                        return target;
        }
 
-       if (widget->allocation.x <= x &&
-           x < widget->allocation.x + widget->allocation.width &&
-           widget->allocation.y <= y &&
-           y < widget->allocation.y + widget->allocation.height) {
+       if (input_in_allocation(widget->allocation, x, y)) {
                return widget;
        }
 
@@ -2229,6 +2226,18 @@ input_get_focus_widget(struct input *input)
        return input->focus_widget;
 }
 
+int
+input_in_allocation(struct rectangle allocation, int x, int y)
+{
+       if (allocation.x <= x &&
+           x < allocation.x + allocation.width &&
+           allocation.y <= y &&
+           y < allocation.y + allocation.height) {
+               return 1;
+       }
+       return 0;
+}
+
 struct data_offer {
        struct wl_data_offer *offer;
        struct input *input;
diff --git a/clients/window.h b/clients/window.h
index 41f63da..7e3843b 100644
--- a/clients/window.h
+++ b/clients/window.h
@@ -388,6 +388,9 @@ input_set_pointer_image(struct input *input, int pointer);
 void
 input_get_position(struct input *input, int32_t *x, int32_t *y);
 
+int
+input_in_allocation(struct rectangle allocation, int x, int y);
+
 #define MOD_SHIFT_MASK         0x01
 #define MOD_ALT_MASK           0x02
 #define MOD_CONTROL_MASK       0x04
-- 
1.7.11.5

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to