<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