diff --git a/shared/cairo-util.h b/shared/cairo-util.h index 019424ea..4fee0877 100644 --- a/shared/cairo-util.h +++ b/shared/cairo-util.h @@ -210,7 +210,7 @@ enum theme_location frame_pointer_button(struct frame *frame, void *pointer, uint32_t button, enum frame_button_state state); -void +enum theme_location frame_touch_down(struct frame *frame, void *data, int32_t id, int x, int y); void diff --git a/shared/frame.c b/shared/frame.c index 4179b0a8..1b67eb13 100644 --- a/shared/frame.c +++ b/shared/frame.c @@ -786,27 +786,27 @@ frame_pointer_button(struct frame *frame, void *data, return location; } -void +enum theme_location frame_touch_down(struct frame *frame, void *data, int32_t id, int x, int y) { struct frame_touch *touch = frame_touch_get(frame, data); struct frame_button *button = frame_find_button(frame, x, y); enum theme_location location; - if (id > 0) - return; - - if (touch && button) { - touch->button = button; - frame_button_press(touch->button); - return; - } - location = theme_get_location(frame->theme, x, y, frame->width, frame->height, frame->flags & FRAME_FLAG_MAXIMIZED ? THEME_FRAME_MAXIMIZED : 0); + if (id > 0) + return location; + + if (touch && button) { + touch->button = button; + frame_button_press(touch->button); + return location; + } + switch (location) { case THEME_LOCATION_TITLEBAR: frame->status |= FRAME_STATUS_MOVE; @@ -824,6 +824,7 @@ frame_touch_down(struct frame *frame, void *data, int32_t id, int x, int y) default: break; } + return location; } void