6V3JKJZJ7KBS5I3Q266ZCRJYVO56ZQKLJL4EOHN6XC222CZFXCDQC 3EDO6OUSMQ77E3GRBT5QDQ556NF4YEU4LMRXT5IU2MQVOG2D3KUAC LQPHYO7IIMLXHUD5IK657BO4BE3SGT5HYDRJDU5OFDF5YUXKIRTAC 24QUH6X2AJRSRNFW274P2TN73GSV5LR45TGRLJDUD655IH2AAZWQC 7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC D425ND7AT3F7QJ3CCSESMVDOC3J5C5P32M5SJDBHECZJXLHNQ2FAC L4X3HG56S4DS7QJTLMLP47BGCPF2TM5XRUFEN56BTWYJICBYUUEAC ZOOCZQBGZ4PCOU54EPPUPWNOIFWCM5RMZ4EFL2WFR7LFJTAMHZGAC S7RXJJZG4IEIVLPHEWFT5M2T3SRRO5US5SYBPXSYSWJJLXAKNNPAC J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC MZ734MOA6IYZE7SDSQGTBLYUF5VWLLK7M7E6T3KIY6DBEJR3CFMAC F72VJF4KJZEYZEYGAGKCWPMEQGPKS7T5PEEJPJKZO6ZG246TTLAQC UCSTVE5NIAIQ3NJL5YLDFDKDPOCJS6NMAGABSWG67RGCPH47JQEQC DEYEAIOK6XPZXJXKS4S6EFXRZL7U65VBC2T3ABPDTSTEQRBXY25AC O5JVMDEEKP334BAYMJ6HHXROW4X4WC24JHCYZTKJRQE5UGYXV7YQC IWYHVSLDXIRLG2CZRN46XQFZKBRXCKKD6ME24XC5KFZRDOBGBTQQC 46MQCVOAPLYAM3HMYFA7E2B6IXSXO2Z57JNBORUBRL6P2GXADSPQC 6XZIQSMIVP2GZ5S3UCKEVNDSLTHSQEVSXLV4UIFF3G3SRCGJPXYAC KD353LTTUI6LTMYDTNPH3W6NXETRKDTNB6MA64K3WBQC6GSYKPMAC XKWY25ZVEJIJU7R23CEG5CTYRAWKZ5FXSHY3ZEZRGCIWYIKQSLOAC Z53RRSEGCT3PGEZNNSAREB3WVYOHCTDXXPNAKOWWGCEYW4G2QC4QC static Client *xytoclient(double x, double y,struct wlr_surface **surface, double *sx, double *sy);
static Client *xytoclient(double x, double y);
wl_list_for_each(c, &stack, slink) {if (VISIBLEON(c, c->mon) && wlr_box_contains_point(&c->geom, x, y)) {/** XDG toplevels may have nested surfaces, such as popup windows* for context menus or tooltips. This function tests if any of* those are underneath the coordinates x and y (in layout* coordinates). If so, it sets the surface pointer to that* wlr_surface and the sx and sy coordinates to the coordinates* relative to that surface's top-left corner.*//* XXX set *surface to xdg_surface->surface instead of* NULL? what should sx/sy be in that case? */if (surface)*surface = wlr_xdg_surface_surface_at(c->xdg_surface,x - c->geom.x - c->bw,y - c->geom.y - c->bw, sx, sy);
wl_list_for_each(c, &stack, slink)if (VISIBLEON(c, c->mon) && wlr_box_contains_point(&c->geom, x, y))
Client *xytosurface(double x, double y,struct wlr_surface **surface, double *sx, double *sy){Client *c = xytoclient(x, y);/** XDG toplevels may have nested surfaces, such as popup windows* for context menus or tooltips. This function tests if any of* those are underneath the coordinates x and y (in layout* coordinates). If so, it sets the surface pointer to that* wlr_surface and the sx and sy coordinates to the coordinates* relative to that surface's top-left corner.*//* XXX set *surface to xdg_surface->surface otherwise? what should* sx/sy be in that case? */if (c)*surface = wlr_xdg_surface_surface_at(c->xdg_surface,x - c->geom.x - c->bw,y - c->geom.y - c->bw, sx, sy);return c;}