diff options
Diffstat (limited to 'src/wayland/drag.c')
| -rw-r--r-- | src/wayland/drag.c | 12 |
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) |
