For brevity, only a single drag icon at a time is supported.
Co-authored-by: Leonardo Hernández Hernández <leohdz172@protonmail.com>
DGJFEKNKYTSZNU4VGJXLHBOQGRGKYQVDN6IHN25DPKPDEGYQBBAQC
FUZEZTLBNTVGUNLBGFLMVZOHLGMMHFPQD7USP4JYMGGVXBL2EUBQC
AEOM6GBTSH3NGIN365GS5L2PAUUSXSMDPMYTGJPL7UDMHDWLYXSQC
TOFCZFUYVBVEBHMKVG6G5MKCAEF2QCQ4GKMKGQUSJRLGLDZEJF4QC
7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC
J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC
S7RXJJZG4IEIVLPHEWFT5M2T3SRRO5US5SYBPXSYSWJJLXAKNNPAC
LQPHYO7IIMLXHUD5IK657BO4BE3SGT5HYDRJDU5OFDF5YUXKIRTAC
IIWDZCVWWDAJITIXQXCFIAF7Z46DTFV2FYCUYMS4P7JMP34A6BUQC
4QUF4MKRSB5LYYS5FSYTCDSIEMYIERI2BQZLRGJ3GIGVYCPJVEPAC
MIZBQX6SKECIVNNGBF3LCR3IHXQVWQ5BJURMRSBNEVEUWFBH3MTQC
Q2X3PNJKODBITH6W5ZNPJULJRQN6XJTEVYLEEBUXEAQTHIWUWPAAC
2GP4MXKEDQMZ7E6TCRSMV2AGN7HLEAHR3QEAC2QFCQQNPMNJSIHQC
7L3TU7JVWPBPHN7WF4TJ263BZ6BC3AYRRW6PULFUP5JZUGWWNUSAC
NLOBELMSKHUSKSMPZ2QSDVIOJRGWV7HNXNIKZ55TMUCH7DI73TAAC
}
void
requeststartdrag(struct wl_listener *listener, void *data)
{
struct wlr_seat_request_start_drag_event *event = data;
if (wlr_seat_validate_pointer_grab_serial(seat, event->origin,
event->serial))
wlr_seat_start_pointer_drag(seat, event->drag, event->serial);
else
wlr_data_source_destroy(event->drag->source);
}
void
startdrag(struct wl_listener *listener, void *data)
{
struct wlr_drag *drag = data;
if (!drag->icon)
return;
drag->icon->data = wlr_scene_subsurface_tree_create(layers[LyrTop], drag->icon->surface);
wlr_scene_node_raise_to_top(drag->icon->data);
wl_signal_add(&drag->icon->events.destroy, &drag_icon_destroy);