On Sun, Apr 23, 2017 at 11:54:31PM +1000, Daniel Cousens wrote:
>    I have found this pattern to take up significant parts of my time when
>    rebasing my changes onto suckless/master, �  such that I feel the
>    following patch will both increase readability, � reduce diffs and
>    overall increase code quality :).
>    Thoughts?

> From 160dbe6eaa8fccc1eb5c9cde036b9256c2e820c5 Mon Sep 17 00:00:00 2001
> From: Daniel Cousens <[email protected]>
> 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;
> +}
> +

Minor style:

> +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
> 

Looks good to me, apart from a minor style thingy (see above) :)

-- 
Kind regards,
Hiltjo

Reply via email to