<AWT Dev> [9] Review request for JDK-7011513: GTK FileDialog modality issues

Oleg Pekhovskiy oleg.pekhovskiy at oracle.com
Thu Jan 23 14:21:13 PST 2014


Hi Alexander,

Just to clarify some things...

On X11 Frame utilizes XFramePeer and FileDialog utilizes GtkFileDialogPeer.
These peers have common superclass XDecoratedPeer (GtkFileDialogPeer 
through XDialogPeer).

For Frame the following two chains occur:

[#1]
"AWT-XAWT"
sun.awt.X11.XContentWindow.handleResize(XContentWindow.java:141)
sun.awt.X11.XContentWindow.setContentBounds(XContentWindow.java:129)
sun.awt.X11.XDecoratedPeer.reconfigureContentWindow(XDecoratedPeer.java:662)
sun.awt.X11.XDecoratedPeer.handleConfigureNotifyEvent(XDecoratedPeer.java:763)
sun.awt.X11.XBaseWindow.dispatchEvent(XBaseWindow.java:1135)
sun.awt.X11.XBaseWindow.dispatchToWindow(XBaseWindow.java:1090)
sun.awt.X11.XToolkit.dispatchEvent(XToolkit.java:512)
sun.awt.X11.XToolkit.run(XToolkit.java:621)
sun.awt.X11.XToolkit.run(XToolkit.java:542)
java.lang.Thread.run(Thread.java:744)

This posts ComponentEvent.COMPONENT_RESIZED.

[#2]
"AWT-XAWT"
sun.awt.X11.XDecoratedPeer.handleMoved(XDecoratedPeer.java:430)
sun.awt.X11.XDecoratedPeer.handleConfigureNotifyEvent(XDecoratedPeer.java:761)
sun.awt.X11.XBaseWindow.dispatchEvent(XBaseWindow.java:1135)
sun.awt.X11.XBaseWindow.dispatchToWindow(XBaseWindow.java:1090)
sun.awt.X11.XToolkit.dispatchEvent(XToolkit.java:512)
sun.awt.X11.XToolkit.run(XToolkit.java:621)
sun.awt.X11.XToolkit.run(XToolkit.java:542)
java.lang.Thread.run(Thread.java:744)

This posts ComponentEvent.COMPONENT_MOVED.

But these chains don't happen for FileDialog.

So the questions are:
Why?
Could we make FileDialog handle event such way too?

Maybe that would be enough and would require less code to implement.

Thanks,
Oleg

On 01/20/2014 07:16 PM, Alexander Zvegintsev wrote:
> Hi Sergey,
>
> I've updated the fix:
> http://cr.openjdk.java.net/~azvegint/jdk/9/7011513/webrev.01/
>
> Now it returns location and size of a file dialog correctly.
>
> [1] 
> https://developer.gnome.org/gtk2/stable/GtkWidget.html#GtkWidget-configure-event
> Thanks,
>
> Alexander.
> On 01/10/2014 04:32 PM, Sergey Bylokhov wrote:
>> Hi, Alexander.
>> The fix looks good.
>>
>> On 10.01.2014 15:25, Alexander Zvegintsev wrote:
>>> Hello AWT team,
>>>
>>> Please review the fix
>>> http://cr.openjdk.java.net/~azvegint/jdk/9/7011513/webrev.00/
>>> for
>>> https://bugs.openjdk.java.net/browse/JDK-7011513
>>>
>>> Currently a Gtk file chooser dialog window can be obscured by its 
>>> owner window,
>>> this happens because we do not specify a parent window for obvious 
>>> reason: our owner window in not an instance of GtkWindow.
>>> However it can be workarounded by setting up a WM_TRANSIENT_FOR 
>>> property [1][2].
>>>
>>> I tested this on Solaris 10/11, OEL 6, Ubuntu 13.04, all works fine 
>>> for me.
>>>
>>> [1] http://tronche.com/gui/x/icccm/sec-4.html#WM_TRANSIENT_FOR
>>> [2] 
>>> http://tronche.com/gui/x/xlib/ICC/client-to-window-manager/XSetTransientForHint.html
>>> [3] 
>>> https://developer.gnome.org/gtk2/stable/GtkWidget.html#gtk-widget-realize
>>> [4] 
>>> https://developer.gnome.org/gdk/stable/gdk-X-Window-System-Interaction.html#gdk-x11-drawable-get-xid
>>>
>>> -- 
>>> Thanks,
>>>
>>> Alexander.
>>
>>
>> -- 
>> Best regards, Sergey.
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20140124/cac8e744/attachment.html 


More information about the awt-dev mailing list