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
> _AT_@ -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);
> _AT_@ -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);
> _AT_@ -1603,7 +1599,6 @@ setup(void)
> focus(NULL);
> }
>
> -
> void
> seturgent(Client *c, int urg)
> {
> _AT_@ -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
Received on Sat Aug 06 2022 - 16:22:03 CEST