summaryrefslogtreecommitdiff
path: root/src/wayland/drag.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wayland/drag.c')
-rw-r--r--src/wayland/drag.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/wayland/drag.c b/src/wayland/drag.c
index 7c15002..989dbb6 100644
--- a/src/wayland/drag.c
+++ b/src/wayland/drag.c
@@ -90,11 +90,11 @@ static void drag_clear(struct wayland_display *c, bool ended)
static void drag_finish(struct wayland_display *c, enum yasl_drag_end how, bool ended)
{
- const struct yasl_drag_listener *l = c->drag.listener;
+ struct yasl_drag_listener l = c->drag.listener;
void *ud = c->drag.ud;
drag_clear(c, ended);
- if (l && l->end)
- l->end(ud, how);
+ if (l.end)
+ l.end(ud, how);
}
void conn_drag_end(struct wayland_display *c)
@@ -111,7 +111,7 @@ static void source_cancelled(void *ud, struct wl_data_source *s)
{
(void)s;
struct wayland_display *c = ud;
- bool released = c->drag.dropped || !c->drag.carrying;
+ bool released = c->drag.dropped;
drag_finish(c, released ? YASL_DRAG_DROPPED : YASL_DRAG_CANCELLED, true);
}
@@ -171,7 +171,7 @@ bool wayland_display_drag_start(struct wayland_display *c, struct wayland_surfac
}
c->drag.source = s;
c->drag.seat = seat;
- c->drag.listener = l;
+ c->drag.listener = *l;
c->drag.ud = ud;
wl_data_source_add_listener(s, &source_listener, c);
wl_data_source_offer(s, clipboard_drag_mime());
@@ -190,7 +190,7 @@ bool wayland_display_drag_start(struct wayland_display *c, struct wayland_surfac
void wayland_display_drag_cancel(struct wayland_display *c)
{
if (c && c->drag.source)
- drag_clear(c, false);
+ drag_finish(c, YASL_DRAG_CANCELLED, false);
}
bool wayland_surface_drag_carry(struct wayland_surface *w, struct yasl_vector2i offset)