Applied into hg tip, though I ask others to recheck if this
really does not break anything ;)

Thanks Eric!

Regards,
        Anselm

On Sun, Oct 14, 2007 at 04:04:55AM -0700, Eric Mertens wrote:
> Hello,
> 
> When using dwm I noticed that mplayer was not being resized using the
> window hints correctly. I fixed the issue on my local copy of the
> source and I wanted to share
> 
> I wasn't sure what the most appropriate way to share this change was,
> so I have included the "hg diff" output and the "hg bundle" output.
> -- 
> Eric Mertens


> diff -r e50c3eb0f55a dwm.c
> --- a/dwm.c   Thu Oct 11 20:50:01 2007 +0200
> +++ b/dwm.c   Sun Oct 14 04:01:33 2007 -0700
> @@ -1150,39 +1150,42 @@ resize(Client *c, int x, int y, int w, i
>       XWindowChanges wc;
>  
>       if(sizehints) {
> -             if(c->minay > 0 && c->maxay > 0 && (h - c->baseh) > 0 && (w - 
> c->basew) > 0) {
> -                     dx = (double)(w - c->basew);
> -                     dy = (double)(h - c->baseh);
> -                     min = (double)(c->minax) / (double)(c->minay);
> -                     max = (double)(c->maxax) / (double)(c->maxay);
> -                     ratio = dx / dy;
> -                     if(max > 0 && min > 0 && ratio > 0) {
> -                             if(ratio < min) {
> -                                     dy = (dx * min + dy) / (min * min + 1);
> -                                     dx = dy * min;
> -                                     w = (int)dx + c->basew;
> -                                     h = (int)dy + c->baseh;
> -                             }
> -                             else if(ratio > max) {
> -                                     dy = (dx * min + dy) / (max * max + 1);
> -                                     dx = dy * min;
> -                                     w = (int)dx + c->basew;
> -                                     h = (int)dy + c->baseh;
> -                             }
> -                     }
> -             }
> -             if(c->minw && w < c->minw)
> +             /* set minimum possible */
> +             if (w < 1)
> +                     w = 1;
> +             if (h < 1)
> +                     h = 1;
> +
> +             /* temporarily remove base dimensions */
> +             w -= c->basew;
> +             h -= c->baseh;
> +
> +             /* adjust for aspect limits */
> +             if (c->minay > 0 && c->maxay > 0 && c->minax > 0 && c->maxax > 
> 0) {
> +                     if (w * c->maxay > h * c->maxax)
> +                             w = h * c->maxax / c->maxay;
> +                     else if (w * c->minay < h * c->minax)
> +                             h = w * c->minay / c->minax;
> +             }
> +
> +             /* adjust for increment value */
> +             if(c->incw)
> +                     w -= w % c->incw;
> +             if(c->inch)
> +                     h -= h % c->inch;
> +
> +             /* restore base dimensions */
> +             w += c->basew;
> +             h += c->baseh;
> +
> +             if(c->minw > 0 && w < c->minw)
>                       w = c->minw;
> -             if(c->minh && h < c->minh)
> +             if(c->minh > 0 && h < c->minh)
>                       h = c->minh;
> -             if(c->maxw && w > c->maxw)
> +             if(c->maxw > 0 && w > c->maxw)
>                       w = c->maxw;
> -             if(c->maxh && h > c->maxh)
> +             if(c->maxh > 0 && h > c->maxh)
>                       h = c->maxh;
> -             if(c->incw)
> -                     w -= (w - c->basew) % c->incw;
> -             if(c->inch)
> -                     h -= (h - c->baseh) % c->inch;
>       }
>       if(w <= 0 || h <= 0)
>               return;


-- 
 Anselm R. Garbe >< http://www.suckless.org/ >< GPG key: 0D73F361

Reply via email to