On Thu, 2007-04-05 at 14:54 -0600, Mike Cook wrote:
> Here's a quick patch to have either horz or vert (instead of both) maximized 
> windows honor the "ignore" option:
> --- src/window.c
> +++ src/window.c
> @@ -4012,7 +4012,7 @@ constrainNewWindowSize (CompWindow *w,
> 
>      if (d->opt[COMP_DISPLAY_OPTION_IGNORE_HINTS_WHEN_MAXIMIZED].value.b)
>      {
> -       if ((w->state & MAXIMIZE_STATE) == MAXIMIZE_STATE)
> +       if (w->state & MAXIMIZE_STATE)
>             flags &= ~(PResizeInc | PAspect);
>      }
> 
> After playing with that, however, I wonder if something like the following 
> would be more correct, as it still enforces increment in the axis that isn't 
> maximized (but it wouldn't allow resize at all if aspect is constrained-- 
> should we?).  What do you folks think?
> --- src/window.c
> +++ src/window.c
> @@ -4059,8 +4059,13 @@ constrainNewWindowSize (CompWindow *w,
> 
>      if (flags & PResizeInc)
>      {
> -       xinc = MAX (xinc, hints->width_inc);
> -       yinc = MAX (yinc, hints->height_inc);
> +       if (!d->opt[COMP_DISPLAY_OPTION_IGNORE_HINTS_WHEN_MAXIMIZED].value.b 
> ||
> +           !(w->state & CompWindowStateMaximizedHorzMask))
> +           xinc = MAX (xinc, hints->width_inc);
> +
> +       if (!d->opt[COMP_DISPLAY_OPTION_IGNORE_HINTS_WHEN_MAXIMIZED].value.b 
> ||
> +           !(w->state & CompWindowStateMaximizedVertMask))
> +           yinc = MAX (yinc, hints->height_inc);
>      }
> 
>      /* clamp width and height to min and max values */


Yes, this is more correct. I've made some changes that should give this
behavior. I think the aspect hint should be ignore when any window
dimension is maximized. If that's bad for some reason, let me know.

> 
> Oh, also a tiny whitespace issue I noticed:
> --- src/window.c
> +++ src/window.c
> @@ -3314,7 +3314,7 @@ addWindowSizeChanges (CompWindow     *w,
>      x = (vx - w->screen->x) * w->screen->width;
>      y = (vy - w->screen->y) * w->screen->height;
> 
> -   output = outputDeviceForGeometry (w->screen,
> +    output = outputDeviceForGeometry (w->screen,
>                                       oldX,
>                                       oldY,
>                                       oldWidth,

Yeah, I've noticed this before. It's now fixed. :)

Thanks,

- David

_______________________________________________
compiz mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/compiz

Reply via email to