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
