<AWT Dev> hg: jdk7/awt/jdk: 6708392: Provide internal API to create OverrideRedirect windows, XToolkit
Artem.Ananiev at Sun.COM
Fri Aug 15 00:16:16 PDT 2008
my comments are inline.
Mark Wielaard wrote:
> Hi Artem,
> On Thu, 2008-08-14 at 09:01 +0000, artem.ananiev at sun.com wrote:
>> Changeset: 99658a8d42fa
>> Author: art
>> Date: 2008-08-14 12:58 +0400
>> URL: http://hg.openjdk.java.net/jdk7/awt/jdk/rev/99658a8d42fa
>> 6708392: Provide internal API to create OverrideRedirect windows, XToolkit
>> Summary: SunToolkit.setOverrideRedirect() method is introduced
>> Reviewed-by: mlapshin, yan
> This looks like a different way to fix the issue I reported back in May
> for bug #6695441. I didn't see the review on the list and unfortunately
> the bug referenced #6708392 isn't available. So some questions about
> this solution.
> - The original used the solution of having the window name set to a
> special value. Although slightly hacky, this would in general work with
> any Toolkit that understood this hint. And it would prevent having to
> keep another cache.
You have already answered the question: using Component's name to
specify an OverrideRedirect attribute is a hack. Do you think it is fine
to have such cross-toolkit hacks in our code?
> - Why keep a weak cache for this hint? Why not add a property to Window
> or WindowPeer?
> - You add this to the generic SunToolkit class, but it seems specific to
> the XToolkit. It might be better to rename this property from
> OverrideRedirect to something X11/ICCCM specific. Maybe call it
> isPopupWindow? Then it is clear why some windows might have this hint
> set for their (swing) popups and then other toolkits/window/display
> managers could act appropriately.
The answer for both questions is: java.awt.* classes should only expose
functionality available on all the supported platforms. Otherwise (like
in this case with OverrideRedirect hint), sun.awt.* packages are used.
If we later find a Win32 hint which corresponds to X11 OverrideRedirect,
we'll move the code from sun.awt.* to java.awt.* and/or make it public.
I understand the current solution is not ideal, however it is still
better than having all the windows OverrideRedirect or a new method in
More information about the awt-dev