Make floating windows spawn within the monitor's window area - dwm - dynamic window manager
 (HTM) git clone https://git.parazyd.org/dwm
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 44adafe0069e73aa03a3829d7bb39591cd8b3f1d
 (DIR) parent a859676ead17017bbe81b4989b2f2e0b00a0b4ba
 (HTM) Author: Stein <bakkeby@gmail.com>
       Date:   Thu, 11 Aug 2022 11:15:55 +0200
       
       Make floating windows spawn within the monitor's window area
       
       This is a follow-up on this thread:
       https://lists.suckless.org/hackers/2208/18462.html
       
       The orginal code had constraints such that if a window's starting
       attributes (position and size) were to place the window outside of
       the edges of the monitor, then the window would be moved into view
       at the closest monitor edge.
       
       There was an exception to this where if a top bar is used then the
       window should not obscure the bar if present, which meant to place
       the window within the window area instead.
       
       The proposed change here makes it the general rule that floating
       windows should spawn within the window area rather than within the
       monitor area. This makes it simple and consistent with no
       exceptions and it makes the intention of the code clear.
       
       This has the benefit of making the behaviour consistent regardless
       of whether the user is using a top bar or a bottom bar.
       
       Additionally this will have an effect on patches that modify the
       size of the window area. For example if the insets patch is used to
       reserve space on the left hand side of the monitor for a dock or a
       vertical bar then new floating clients will not obscure that area.
       
       Diffstat:
         M dwm.c                               |      10 +++++-----
       
       1 file changed, 5 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/dwm.c b/dwm.c
       @@ -1044,11 +1044,11 @@ manage(Window w, XWindowAttributes *wa)
                        applyrules(c);
                }
        
       -        if (c->x + WIDTH(c) > c->mon->mx + c->mon->mw)
       -                c->x = c->mon->mx + c->mon->mw - WIDTH(c);
       -        if (c->y + HEIGHT(c) > c->mon->my + c->mon->mh)
       -                c->y = c->mon->my + c->mon->mh - HEIGHT(c);
       -        c->x = MAX(c->x, c->mon->mx);
       +        if (c->x + WIDTH(c) > c->mon->wx + c->mon->ww)
       +                c->x = c->mon->wx + c->mon->ww - WIDTH(c);
       +        if (c->y + HEIGHT(c) > c->mon->wy + c->mon->wh)
       +                c->y = c->mon->wy + c->mon->wh - HEIGHT(c);
       +        c->x = MAX(c->x, c->mon->wx);
                c->y = MAX(c->y, c->mon->wy);
                c->bw = borderpx;