myvxwm

[fork] my vxwm config (optimised for my T480)
git clone https://git.lukeonline.net/repos/myvxwm
Log | Files | Refs | README | LICENSE

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