From f51508f13fc21ddab561d291e5b1923e39e20f0e Mon Sep 17 00:00:00 2001 From: Mars-Wave <57585293+Mars-Wave@users.noreply.github.com> Date: Wed, 23 Sep 2026 21:07:44 +0200 Subject: [PATCH] Apply a held drag when its release is missed --- src/main.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main.c b/src/main.c index 1441e35..a6b38a1 100644 --- a/src/main.c +++ b/src/main.c @@ -814,14 +814,19 @@ static void canvas_drag1_update(GtkGestureDrag *drag, wd_head_form_set_position(form, round(new_pos.x), round(new_pos.y)); } +static void release_clicked_head(struct wd_state *state) { + bool dragged = state->clicked != NULL; + set_clicked_head(state, NULL); + if (dragged && state->autoapply) { + show_apply(state); + } +} + static void canvas_drag1_end(GtkGestureDrag *drag, gdouble mouse_x, gdouble mouse_y, gpointer data) { struct wd_state *state = data; - set_clicked_head(state, NULL); + release_clicked_head(state); update_cursor(state); - if (state->autoapply) { - show_apply(state); - } } static void canvas_drag2_begin(GtkGestureDrag *drag, @@ -864,7 +869,7 @@ static void canvas_enter(GtkEventControllerMotion *controller, GdkModifierType mod_state = event->crossing.state; if (!(mod_state & GDK_BUTTON1_MASK)) { - set_clicked_head(state, NULL); + release_clicked_head(state); } if (!(mod_state & GDK_BUTTON2_MASK)) { state->panning = FALSE;