Re: [dev] [dwm] bugfix for multi monitor setup

From: Anselm R Garbe <garbeam_AT_gmail.com>
Date: Fri, 4 Nov 2011 18:43:59 +0100

Hi Brian,

thanks for your patch. I would like to test it.

Can you resend it as attachment that is created using

cd dwm/
hg diff > dwm_two_monitor_fix.patch

Thanks in advance,
Anselm

On 2 November 2011 22:19, Brian L Angus <angus_AT_eng.utah.edu> wrote:
> Hello and thanks for the wonder that is dwm.
>
> Below is a patch for issues I have found with 2 monitors where one
> monitor is below another.
>
> The issue can be found when moving a floating window that fills the
> entire available area from one monitor to another.  (This is with a
> borderpx of 0)
>
> thanks,
> Brian
>
>
> Index: dwm.c
> ===================================================================
> --- dwm.c
> +++ dwm.c
> _AT_@ -338,18 +338,18 @@
>                        *x = 0;
>                if(*y + *h + 2 * c->bw < 0)
>                        *y = 0;
>        }
>        else {
> -               if(*x > m->mx + m->mw)
> -                       *x = m->mx + m->mw - WIDTH(c);
> -               if(*y > m->my + m->mh)
> -                       *y = m->my + m->mh - HEIGHT(c);
> -               if(*x + *w + 2 * c->bw < m->mx)
> -                       *x = m->mx;
> -               if(*y + *h + 2 * c->bw < m->my)
> -                       *y = m->my;
> +               if(*x >= m->wx + m->ww)
> +                       *x = m->wx + m->ww - WIDTH(c);
> +               if(*y >= m->wy + m->wh)
> +                       *y = m->wy + m->wh - HEIGHT(c);
> +               if(*x + *w + 2 * c->bw <= m->wx)
> +                       *x = m->wx;
> +               if(*y + *h + 2 * c->bw <= m->wy)
> +                       *y = m->wy;
>        }
>        if(*h < bh)
>                *h = bh;
>        if(*w < bh)
>                *w = bh;
> _AT_@ -1144,11 +1144,11 @@
>                        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);
>                /* only fix client y-offset, if the client center might cover the bar */
> -               c->y = MAX(c->y, ((c->mon->by == 0) && (c->x + (c->w / 2) >= c->mon->wx)
> +               c->y = MAX(c->y, ((c->mon->by == c->mon->my) && (c->x + (c->w / 2) >= c->mon->wx)
>                           && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my);
>                c->bw = borderpx;
>        }
>        wc.border_width = c->bw;
>        XConfigureWindow(dpy, w, CWBorderWidth, &wc);
>
>
>
Received on Fri Nov 04 2011 - 18:43:59 CET

This archive was generated by hypermail 2.3.0 : Fri Nov 04 2011 - 18:48:04 CET