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

Artem Ananiev Artem.Ananiev at Sun.COM
Sun Jan 11 02:30:27 PST 2009


Hi, Omair,

thank you for the patch. It seems that the bug was closed by mistake, so 
I have just reopened it against AWT.

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,

Artem

Omair Majid wrote:
> Hi,
> 
> This patch fixes an error in the calculation of an X11 window size. The 
> inset size was being included in the calculation of the client area size 
> for a window. A jtreg test is included. This was tested with openjdk6 
> but seems to be present in openjdk7 too.
> 
> Bug:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6721088
> 
> Cheers,
> 
> Omair
> 



More information about the awt-dev mailing list