From 6f017eb4c18ea53cbc2782df10e078f5b939e87c Mon Sep 17 00:00:00 2001 From: Berke Güzel Date: Fri, 16 Oct 2026 13:26:20 +0300 Subject: End every drag with one event A drag that dropped on no YASL surface, such as one dropped on the desktop or canceled, ended unheard: the public drag start set no end listener. An application then waited for the drag's end forever. The public layer now listens for the end. When no surface got the drop, the origin gets DRAG with the new action YASL_DROP_CANCEL. Co-Authored-By: Claude Opus 5.5 --- src/common/backend.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/common/backend.h') diff --git a/src/common/backend.h b/src/common/backend.h index a9076e4..6d0388c 100644 --- a/src/common/backend.h +++ b/src/common/backend.h @@ -30,6 +30,8 @@ struct yasl_private_display { struct yasl_surface *surfaces; /* Set by the backend: a lost connection comes back (Wayland). */ bool reconnects; + /* The drag in progress dropped on one of the display's surfaces. */ + bool drag_dropped; /* Set by the public layer, or NULL. pending: an event is ready that the * queue does not hold, such as an owed REFRESH. deliver: hand queued events * to the application during the loop step. */ -- cgit v1.2.3