<AWT Dev> [PATCH] Fix X11 window size calculation

Omair Majid omajid at redhat.com
Mon Jan 12 07:16:57 PST 2009


Hi Artem,

Artem Ananiev wrote:
> Hi, Omair,
> 
> thank you for the patch. It seems that the bug was closed by mistake, so 
> I have just reopened it against AWT.
> 
Thanks!

> As for proposed changes, there is a single question:
> 
> --- jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java.orig 
> 2009-01-08 16:53:54.000000000 -0500
> +++ jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java    
> 2009-01-08 16:54:08.000000000 -0500
> @@ -478,7 +478,10 @@
>              // do nothing but accept it.
>              Rectangle reqBounds = newDimensions.getBounds();
>              Rectangle newBounds = constrainBounds(reqBounds.x, 
> reqBounds.y, reqBounds.width, reqBounds.height);
> -            newDimensions = new WindowDimensions(newBounds, 
> newDimensions.getInsets(), newDimensions.isClientSizeSet());
> +            Insets insets = newDimensions.getInsets();
> +            Rectangle fixedBounds = new Rectangle(newBounds.x, 
> newBounds.y, newBounds.width - insets.left - insets.right,
> +                    newBounds.height - insets.top - insets.bottom);
> +            newDimensions = new WindowDimensions(fixedBounds, insets, 
> newDimensions.isClientSizeSet());
>          }
>          XToolkit.awtLock();
>          try {
> 
> WindowDimensions class contains either client size or full size of the 
> window, depending on 'isClientSizeSet' flag. fixedBounds from your patch 
> is always a client rect, however isClientSizeSet is used from 
> newDimensions... I'd rewrite the last changed line this way:
> 
> +            newDimensions = new WindowDimensions(fixedBounds, insets, 
> true);
> 
> or, even better, this this one:
> 
> +            newDimensions = new 
> WindowDimensions(newDimensions.isClientSizeSet() ? fixedBounds : 
> newBounds, insets, newDimensions.isClientSizeSet());
> 
> Your comments?
> 

Thanks for looking over the patch! As for your change, that seems like 
the correct thing to do. Would it be possible to add the explanation for 
isClientSizeSet()'s usage to WindowDimensions class? I just want to make 
sure that nobody else makes the mistake I just did.

Cheers,

Omair




More information about the awt-dev mailing list