etf.c (2645B)
1 #if !RESTORE_SIZE_AND_POS_ETF 2 void 3 enhancedtogglefloating(const Arg *arg) 4 { 5 if (!selmon->sel || selmon->sel->isfullscreen) 6 return; 7 Client *c = selmon->sel; 8 const Layout *prevlayout = selmon->lt[selmon->sellt]; 9 c->isfloating = !c->isfloating; 10 if (c->isfloating) { 11 int w = c->sfw > 0 ? c->sfw : c->w; 12 int h = c->sfh > 0 ? c->sfh : c->h; 13 resize(c, 14 c->mon->wx + (c->mon->ww - w) / 2, 15 c->mon->wy + (c->mon->wh - h) / 2, 16 w, h, 0); 17 } else { 18 int tiled_sellt = -1; 19 for (int i = 0; i < LENGTH(layouts); i++) { 20 if (selmon->lt[i]->arrange != NULL) { 21 tiled_sellt = i; 22 break; 23 } 24 } 25 if (tiled_sellt != -1) { 26 selmon->sellt = tiled_sellt; 27 arrange(selmon); 28 } 29 for (int i = 0; i < LENGTH(layouts); i++) { 30 if (selmon->lt[i] == prevlayout) { 31 selmon->sellt = i; 32 break; 33 } 34 } 35 } 36 arrange(selmon); 37 #if WARP_TO_CLIENT && WARP_TO_CENTER_OF_WINDOW_AFFECTED_BY_ENHANCED_TOGGLE_FLOATING 38 warptoclient(selmon->sel); 39 #endif 40 } 41 #else 42 void 43 enhancedtogglefloating(const Arg *arg) 44 { 45 if (!selmon->sel || selmon->sel->isfullscreen) 46 return; 47 Client *c = selmon->sel; 48 const Layout *prevlayout = selmon->lt[selmon->sellt]; 49 c->isfloating = !c->isfloating; 50 if (c->isfloating) { 51 int w = c->sfw > 0 ? c->sfw : c->w; 52 int h = c->sfh > 0 ? c->sfh : c->h; 53 if (!c->wasmanuallyedited) { 54 resize(c, 55 c->mon->wx + (c->mon->ww - w) / 2, 56 c->mon->wy + (c->mon->wh - h) / 2, 57 w, h, 0); 58 } else { 59 resize(c, c->sfx, c->sfy, w, h, 0); 60 } 61 c->sfx = c->x; c->sfy = c->y; 62 c->sfw = c->w; c->sfh = c->h; 63 } else { 64 c->sfx = c->x; 65 c->sfy = c->y; 66 c->sfw = c->w; 67 c->sfh = c->h; 68 int tiled_sellt = -1; 69 for (int i = 0; i < LENGTH(layouts); i++) { 70 if (selmon->lt[i]->arrange != NULL) { 71 tiled_sellt = i; 72 break; 73 } 74 } 75 if (tiled_sellt != -1) { 76 selmon->sellt = tiled_sellt; 77 arrange(selmon); 78 } 79 for (int i = 0; i < LENGTH(layouts); i++) { 80 if (selmon->lt[i] == prevlayout) { 81 selmon->sellt = i; 82 break; 83 } 84 } 85 } 86 arrange(selmon); 87 #if WARP_TO_CLIENT && WARP_TO_CENTER_OF_WINDOW_AFFECTED_BY_ENHANCED_TOGGLE_FLOATING 88 warptoclient(selmon->sel); 89 #endif 90 } 91 #endif