On Sat, Aug 06, 2022 at 04:27:13AM +0600, NRK wrote:
> main change here is making the `zoom()` logic saner. the rest of the
> changes are just small stuff which accumulated on my local branch.
> 
> pop() must not be called with NULL. and `zoom()` achieves this, but in a
> very (unnecessarily) complicated way:
> 
> if c == NULL then nexttiled() will return NULL as well, so we enter this
> branch:
> 
>       if (c == nexttiled(selmon->clients))
> 
> in here the !c check fails and the function returns before calling pop()
> 
>               if (!c || !(c = nexttiled(c->next)))
>                       return;
> 
> however, none of this was needed. we can simply return early if c was NULL.
> Also `c` is set to `selmon->sel` so we can use `c` in the first check
> instead which makes things shorter.
> ---
>  dwm.c | 23 ++++++++---------------
>  1 file changed, 8 insertions(+), 15 deletions(-)
> 
> diff --git a/dwm.c b/dwm.c
> index b3c43ee..fe6f475 100644
> --- a/dwm.c
> +++ b/dwm.c
> @@ -918,13 +918,11 @@ gettextprop(Window w, Atom atom, char *text, unsigned 
> int size)
>       text[0] = '\0';
>       if (!XGetTextProperty(dpy, w, &name, atom) || !name.nitems)
>               return 0;
> -     if (name.encoding == XA_STRING)
> +     if (name.encoding == XA_STRING) {
>               strncpy(text, (char *)name.value, size - 1);
> -     else {
> -             if (XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success 
> && n > 0 && *list) {
> -                     strncpy(text, *list, size - 1);
> -                     XFreeStringList(list);
> -             }
> +     } else if (XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success 
> && n > 0 && *list) {
> +             strncpy(text, *list, size - 1);
> +             XFreeStringList(list);
>       }
>       text[size - 1] = '\0';
>       XFree(name.value);
> @@ -1099,9 +1097,7 @@ maprequest(XEvent *e)
>       static XWindowAttributes wa;
>       XMapRequestEvent *ev = &e->xmaprequest;
>  
> -     if (!XGetWindowAttributes(dpy, ev->window, &wa))
> -             return;
> -     if (wa.override_redirect)
> +     if (!XGetWindowAttributes(dpy, ev->window, &wa) || wa.override_redirect)
>               return;
>       if (!wintoclient(ev->window))
>               manage(ev->window, &wa);
> @@ -1603,7 +1599,6 @@ setup(void)
>       focus(NULL);
>  }
>  
> -
>  void
>  seturgent(Client *c, int urg)
>  {
> @@ -2125,12 +2120,10 @@ zoom(const Arg *arg)
>  {
>       Client *c = selmon->sel;
>  
> -     if (!selmon->lt[selmon->sellt]->arrange
> -     || (selmon->sel && selmon->sel->isfloating))
> +     if (!selmon->lt[selmon->sellt]->arrange || !c || c->isfloating)
> +             return;
> +     if (c == nexttiled(selmon->clients) && !(c = nexttiled(c->next)))
>               return;
> -     if (c == nexttiled(selmon->clients))
> -             if (!c || !(c = nexttiled(c->next)))
> -                     return;
>       pop(c);
>  }
>  
> -- 
> 2.35.1
> 
> 

Pushed, thank you

-- 
Kind regards,
Hiltjo

Reply via email to