HLXA5JC7DDDZOMLM6LTGTVULIJTLVUW5GPMNNTUPKUXYKPBJBZYAC TRGHSV7WZDJK4N2GYF54ZPP3SQKRN3L3XAPZ2NCAZU4SVMBCD2YQC AMIEYPJ6D6FRG3KGI2FT3WSZBP2KUAU7AIG6N6EYLKQ35XPSJM2QC JWJKNS7TBF7CPMKR4HSVP5LTWDO4BXLBMTS5BTV7P5XS6JB47S5QC TINMCJXVMLM3X5UM677SJNA6UGI3XCNMZ4ZOLQPBSRAOOY2USOSQC 7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC 7L3TU7JVWPBPHN7WF4TJ263BZ6BC3AYRRW6PULFUP5JZUGWWNUSAC 22QYEUSXWCAT2P3PWTLTDZOIW75HDPICYESRPK4BRLY2XKFG5GWQC DBS6UQ2KJAFLCREUIGGCN5UYTGNPNODS275TFWDAL2KUGFQMNWKQC LQPHYO7IIMLXHUD5IK657BO4BE3SGT5HYDRJDU5OFDF5YUXKIRTAC PLJJLNS7E2UXW2YARGBSV6IHZEBGL5EW354IMMHPDATY5DQD77DAC TOFCZFUYVBVEBHMKVG6G5MKCAEF2QCQ4GKMKGQUSJRLGLDZEJF4QC D425ND7AT3F7QJ3CCSESMVDOC3J5C5P32M5SJDBHECZJXLHNQ2FAC 6XZIQSMIVP2GZ5S3UCKEVNDSLTHSQEVSXLV4UIFF3G3SRCGJPXYAC S7RXJJZG4IEIVLPHEWFT5M2T3SRRO5US5SYBPXSYSWJJLXAKNNPAC 2GP4MXKEDQMZ7E6TCRSMV2AGN7HLEAHR3QEAC2QFCQQNPMNJSIHQC BFWKVWAIUKHCZVRA62GW6QZUEUKQLW365HUWIVKTEIPJNJSOZBAQC XUF22VC6FRHE755HMNIKOHMPKGZWSS4WBML4POEN43TH3QYRWRAAC MGXITQBGBWZZDRAYZOLAQCLJIX3TUBPOF6QZLQ3CECI3HHOFKLGQC JTZBFGPCDJDJWECXH2LLXY3SUAQNCP45HLJQKG3V7XGTPLD634WAC STNAKFBNSAXICF6AJNYSCQKE4YYQGIMZHR7RSLZJBEOSSUMKBCNAC F72VJF4KJZEYZEYGAGKCWPMEQGPKS7T5PEEJPJKZO6ZG246TTLAQC STQCOMJFP365KC42CYLC22QKL3MFWZ5JNVA3LADAVZFMVQKO7K7QC SCBBNYN2ZEI2UBCW5C5QXQLLQGEWY4DWM2UHGTRZ7B653AONDQKAC MJZ6RCUUOK7R2RMXPXMLRWBAEM6234D2IS7RGPHAE5UN2S64GLGAC EQRGODLKSVSPFSUZU7BV5ER72U4QS4ATSBKV544XXQVKKTOSC7EAC DVIBBDIRHCREHHOHZNQ2L3JJTW6GRSUGBHDJD2OKUBHWIBJ5WJUQC 5NXELRTS2KF2SZJRXZBJNNDXZG23OSWVUVCIQSPV7TH7T3XKL4PAC MBIOTFB64GH3E53GQRKHD2DJ7ITNT3CYH237F6DRIS4DSFN5CT4AC LOHDGUC5DSHX2YPEG7H6ZWTLAEA3RYKIAIAWHI7PQFTLANV6EKJAC 6SNHSYM443LJULHPH3O2QXO2FTKBBZCK6TM3IWACSVEBCCSJX7LAC DLEGXFXT7725CU3KBORDOAK3TOYGLO5KN3Q4M3APJLRZT77W6CDAC FUZEZTLBNTVGUNLBGFLMVZOHLGMMHFPQD7USP4JYMGGVXBL2EUBQC c = grabc;if (c && c->was_tiled && !strcmp(selmon->ltsymbol, "|w|")) {/* Check if more than one tag is active, if so we escape */if (active_tags && (active_tags & (active_tags - 1)))break;if (cursor_mode == CurMove && c->isfloating) {target = NULL;surface = NULL;xytonode(cursor->x, cursor->y, &surface, &target, NULL, &sx, &sy);if (target && !target->isfloating && !target->isfullscreen) {insert_client(selmon, target, c, root, tiled_clients);} else {if (!root) {*root = create_client_node(c);add_client_to_tiled_list(c, tiled_clients);} else {old_root = *root;*root = create_split_node(1, old_root, create_client_node(c));add_client_to_tiled_list(c, tiled_clients);}}setfloating(c, 0);arrange(selmon);} else if (cursor_mode == CurResize && !c->isfloating) {resizing_from_mouse = 0;}} else {if (cursor_mode == CurResize && resizing_from_mouse)resizing_from_mouse = 0;}/* Default behaviour */
/* We check if the destroyed client was part of any tiled_list, to catch* client removals even if they would not be currently managed by btrtile */if (selmon && selmon->tree_layout) {for (int i = 0; i < TAGCOUNT; i++) {remove_client(selmon, c,&selmon->tree_layout->root[i],&selmon->tree_layout->tiled_clients[i]);}}
/* If we are currently grabbing the mouse, handle and return */
/* Skip if internal call or already resizing */if (time == 0 && resizing_from_mouse)goto focus;tiled = grabc && !grabc->isfloating && !grabc->isfullscreen;
resize(grabc, (struct wlr_box){.x = (int)round(cursor->x) - grabcx, .y = (int)round(cursor->y) - grabcy,.width = grabc->geom.width, .height = grabc->geom.height}, 1);return;
if (grabc && grabc->isfloating) {resize(grabc, (struct wlr_box){.x = (int)round(cursor->x) - grabcx,.y = (int)round(cursor->y) - grabcy,.width = grabc->geom.width,.height = grabc->geom.height}, 1);return;}
resize(grabc, (struct wlr_box){.x = grabc->geom.x, .y = grabc->geom.y,.width = (int)round(cursor->x) - grabc->geom.x, .height = (int)round(cursor->y) - grabc->geom.y}, 1);return;
if (tiled && resizing_from_mouse) {dx_total = cursor->x - resize_last_update_x;dy_total = cursor->y - resize_last_update_y;if (time - last_resize_time >= resize_interval_ms) {Arg a = {0};if (fabs(dx_total) > fabs(dy_total)) {a.f = (float)(dx_total * resize_factor);setratio_h(&a);} else {a.f = (float)(dy_total * resize_factor);setratio_v(&a);}arrange(selmon);last_resize_time = time;resize_last_update_x = cursor->x;resize_last_update_y = cursor->y;}} else if (grabc && grabc->isfloating) {/* Floating resize as original */resize(grabc, (struct wlr_box){.x = grabc->geom.x,.y = grabc->geom.y,.width = (int)round(cursor->x) - grabc->geom.x,.height = (int)round(cursor->y) - grabc->geom.y}, 1);return;}
/* Float the window and tell motionnotify to grab it */setfloating(grabc, 1);switch (cursor_mode = arg->ui) {case CurMove:grabcx = (int)round(cursor->x) - grabc->geom.x;grabcy = (int)round(cursor->y) - grabc->geom.y;wlr_cursor_set_xcursor(cursor, cursor_mgr, "fleur");break;case CurResize:/* Doesn't work for X11 output - the next absolute motion event* returns the cursor to where it started */wlr_cursor_warp_closest(cursor, NULL,
cursor_mode = arg->ui;grabc->was_tiled = (!grabc->isfloating && !grabc->isfullscreen);if (grabc->was_tiled) {switch (cursor_mode) {case CurMove:setfloating(grabc, 1);grabcx = (int)round(cursor->x) - grabc->geom.x;grabcy = (int)round(cursor->y) - grabc->geom.y;wlr_cursor_set_xcursor(cursor, cursor_mgr, "fleur");break;case CurResize:wlr_cursor_set_xcursor(cursor, cursor_mgr, "se-resize");resize_last_update_x = cursor->x;resize_last_update_y = cursor->y;resizing_from_mouse = 1;break;}} else {/* Default floating logic *//* Float the window and tell motionnotify to grab it */setfloating(grabc, 1);switch (cursor_mode) {case CurMove:grabcx = (int)round(cursor->x) - grabc->geom.x;grabcy = (int)round(cursor->y) - grabc->geom.y;wlr_cursor_set_xcursor(cursor, cursor_mgr, "fleur");break;case CurResize:wlr_cursor_warp_closest(cursor, NULL,
wlr_cursor_set_xcursor(cursor, cursor_mgr, "se-resize");break;
wlr_cursor_set_xcursor(cursor, cursor_mgr, "se-resize");break;}
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Up, swapclients, {.i = DIR_UP} },{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Down, swapclients, {.i = DIR_DOWN} },{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Right, swapclients, {.i = DIR_RIGHT} },{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Left, swapclients, {.i = DIR_LEFT} },{ MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_Right, setratio_h, {.f = +0.025f} },{ MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_Left, setratio_h, {.f = -0.025f} },{ MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_Up, setratio_v, {.f = -0.025f} },{ MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_Down, setratio_v, {.f = +0.025f} },