diff --git a/shared/cairo-util.h b/shared/cairo-util.h index 019424eafbb3f61945744e3bed0b7f699e9ba7b5..4fee08779cb01ab34e37c0fc1f4509485a08dbc2 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 4179b0a81de815bc56d8eb851e230a8b4b7cb98c..1b67eb13639040dc4fd68fc636063f2260734279 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; + 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; + return location; if (touch && button) { touch->button = button; frame_button_press(touch->button); - return; + return location; } - location = theme_get_location(frame->theme, x, y, - frame->width, frame->height, - frame->flags & FRAME_FLAG_MAXIMIZED ? - THEME_FRAME_MAXIMIZED : 0); - 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