From 160dbe6eaa8fccc1eb5c9cde036b9256c2e820c5 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Sun, 23 Apr 2017 18:46:47 +1000 Subject: [PATCH] use canarrange over sellmon->sellt repeated pattern --- dwm.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/dwm.c b/dwm.c index 7861512..fdea9e2 100644 --- a/dwm.c +++ b/dwm.c @@ -235,6 +235,10 @@ static int xerrordummy(Display *dpy, XErrorEvent *ee); static int xerrorstart(Display *dpy, XErrorEvent *ee); static void zoom(const Arg *arg); +int canarrange (Monitor* m) { + return m->lt[m->sellt]->arrange != NULL; +} + /* variables */ static const char broken[] = "broken"; static char stext[256]; @@ -344,7 +348,7 @@ applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact) *h = bh; if (*w < bh) *w = bh; - if (resizehints || c->isfloating || !c->mon->lt[c->mon->sellt]->arrange) { + if (resizehints || c->isfloating || !canarrange(c->mon)) { /* see last two sentences in ICCCM 4.1.2.3 */ baseismin = c->basew == c->minw && c->baseh == c->minh; if (!baseismin) { /* temporarily remove base dimensions */ @@ -396,7 +400,7 @@ void arrangemon(Monitor *m) { strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol); - if (m->lt[m->sellt]->arrange) + if (canarrange(m)) m->lt[m->sellt]->arrange(m); } @@ -587,7 +591,7 @@ configurerequest(XEvent *e) if ((c = wintoclient(ev->window))) { if (ev->value_mask & CWBorderWidth) c->bw = ev->border_width; - else if (c->isfloating || !selmon->lt[selmon->sellt]->arrange) { + else if (c->isfloating || !canarrange(selmon)) { m = c->mon; if (ev->value_mask & CWX) { c->oldx = c->x; @@ -1178,10 +1182,10 @@ movemouse(const Arg *arg) ny = selmon->wy; else if (abs((selmon->wy + selmon->wh) - (ny + HEIGHT(c))) < snap) ny = selmon->wy + selmon->wh - HEIGHT(c); - if (!c->isfloating && selmon->lt[selmon->sellt]->arrange + if (!c->isfloating && canarrange(selmon) && (abs(nx - c->x) > snap || abs(ny - c->y) > snap)) togglefloating(NULL); - if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) + if (!canarrange(selmon) || c->isfloating) resize(c, nx, ny, c->w, c->h, 1); break; } @@ -1327,11 +1331,11 @@ resizemouse(const Arg *arg) if (c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww && c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh) { - if (!c->isfloating && selmon->lt[selmon->sellt]->arrange + if (!c->isfloating && canarrange(selmon) && (abs(nw - c->w) > snap || abs(nh - c->h) > snap)) togglefloating(NULL); } - if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) + if (!canarrange(selmon) || c->isfloating) resize(c, c->x, c->y, nw, nh, 1); break; } @@ -1356,9 +1360,9 @@ restack(Monitor *m) drawbar(m); if (!m->sel) return; - if (m->sel->isfloating || !m->lt[m->sellt]->arrange) + if (m->sel->isfloating || !canarrange(m)) XRaiseWindow(dpy, m->sel->win); - if (m->lt[m->sellt]->arrange) { + if (canarrange(m)) { wc.stack_mode = Below; wc.sibling = m->barwin; for (c = m->stack; c; c = c->snext) @@ -1519,7 +1523,7 @@ setmfact(const Arg *arg) { float f; - if (!arg || !selmon->lt[selmon->sellt]->arrange) + if (!arg || !canarrange(selmon)) return; f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0; if (f < 0.1 || f > 0.9) @@ -1620,7 +1624,7 @@ showhide(Client *c) if (ISVISIBLE(c)) { /* show clients top down */ XMoveWindow(dpy, c->win, c->x, c->y); - if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen) + if ((!canarrange(c->mon) || c->isfloating) && !c->isfullscreen) resize(c, c->x, c->y, c->w, c->h, 0); showhide(c->snext); } else { @@ -2116,7 +2120,7 @@ zoom(const Arg *arg) { Client *c = selmon->sel; - if (!selmon->lt[selmon->sellt]->arrange + if (!canarrange(selmon) || (selmon->sel && selmon->sel->isfloating)) return; if (c == nexttiled(selmon->clients)) -- 2.12.2