data-device: only allow one drag at a time

master
emersion 6 years ago
parent faa00a4a33
commit 29952dee19
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48

@ -122,6 +122,9 @@ static void drag_end(struct wlr_drag *drag) {
drag_icon_set_mapped(drag->icon, false); drag_icon_set_mapped(drag->icon, false);
} }
assert(drag->seat->drag == drag);
drag->seat->drag = NULL;
wlr_signal_emit_safe(&drag->events.destroy, drag); wlr_signal_emit_safe(&drag->events.destroy, drag);
free(drag); free(drag);
} }
@ -434,6 +437,13 @@ bool seat_client_start_drag(struct wlr_seat_client *client,
return true; return true;
} }
if (seat->drag != NULL) {
wlr_log(WLR_DEBUG, "Refusing to start drag, "
"another drag is already in progress");
free(drag);
return true;
}
if (icon_surface) { if (icon_surface) {
int32_t touch_id = (point ? point->touch_id : 0); int32_t touch_id = (point ? point->touch_id : 0);
struct wlr_drag_icon *icon = struct wlr_drag_icon *icon =

Loading…
Cancel
Save