<AWT Dev> Modal dialogs for fullscreen window

Vladimir Kravets vova.kravets at gmail.com
Thu Apr 18 02:01:58 PDT 2013


Hi Anthony,

You can look on the attached patch.
Sorry but I cant figure out how I can do this with webrev.ksh... Since I
performed checkout without forest extension... And really don't know what I
should do to generate normal code review... I'm not good familiar with
Mercurial... =(

Let me know if you are need something from my side also...

Patch was tested on Ubuntu 12.10 with tested application which I mentioned
before and also with "always on top" application. Java 1.7 without patch -
issue reproducible, with patch - issue is NOT reproducible.

Thanks,
Vladimir


2013/4/17 Anthony Petrov <anthony.petrov at oracle.com>

> Hi Vladimir,
>
> Thanks for your investigations. Setting the _NET_WM_WINDOW_TYPE_DIALOG
> type for dialog windows looks reasonable to me.
>
> Do you want to make a patch, test it, and post it here for review? Since
> you're on a *NIX system, building OpenJDK shouldn't be a problem at all.
> Just `bash ./configure && make`. The ./configure script will tell you about
> all the required packages that need to be installed.
>
> --
> best regards,
> Anthony
>
>
> On 04/16/2013 08:03 PM, Vladimir Kravets wrote:
>
>> Guys we have the real problem....And appears it not related to
>> fullscreen window =)
>> If window.alwaysOnTop(true) all dialogs in Metacity and its clones will
>> be shown under the main window..... =(
>>
>> Thanks,
>> Vladimir
>>
>>
>> 2013/4/16 Vladimir Kravets <vova.kravets at gmail.com
>> <mailto:vova.kravets at gmail.com**>>
>>
>>
>>     I look at the mutter source and found that for dialog or for window
>>     which have WM_TRANSIENT_FOR should set type
>> _NET_WM_WINDOW_TYPE_DIALOG.
>>
>>     If you look at
>>     https://git.gnome.org/browse/**mutter/tree/src/core/window.c#**n8059<https://git.gnome.org/browse/mutter/tree/src/core/window.c#n8059>and
>>     https://git.gnome.org/browse/**mutter/tree/src/core/window.c#**n8120<https://git.gnome.org/browse/mutter/tree/src/core/window.c#n8120>
>>
>>     At the fist step will check _NET_WM_WINDOW_TYPE if this set it will
>>     set the window type according to this type and WM_TRANSIENT_FOR will
>>     not check in this case. If _NET_WM_WINDOW_TYPE is not set and
>>     WM_TRANSIENT_FOR is set the mutter will set to this  window the
>>     _NET_WM_WINDOW_TYPE_DIALOG window type. Thus _NET_WM_WINDOW_TYPE
>>     have more priority then WM_TRANSIENT_FOR...
>>
>>     Thus since AWT even for dialogs set _NET_WM_WINDOW_TYPE_NORMAL (AWT
>>     sets this always!!!!) we have incorrect behavior of modal dialogs in
>>     mutter and posible in another WM which using the same behavior.
>>
>>     Please fix this, since it's regression from 1.7 and this problem
>>     touch even Gnome3!
>>
>>
>>     2013/4/16 Vladimir Kravets <vova.kravets at gmail.com
>>     <mailto:vova.kravets at gmail.com**>>
>>
>>
>>         Heh... I see that Anthony made this changes 3 years ago =(
>>         http://hg.openjdk.java.net/**jdk7/build/jdk/rev/**ca34cfff70a4<http://hg.openjdk.java.net/jdk7/build/jdk/rev/ca34cfff70a4>
>>
>>         Thanks,
>>         Vladimir
>>
>>
>>
>>         2013/4/16 Artem Ananiev <artem.ananiev at oracle.com
>>         <mailto:artem.ananiev at oracle.**com <artem.ananiev at oracle.com>>>
>>
>>
>>             Hi, Vladimir,
>>
>>             I took a short look at your test at github. The test
>>             implements its own mechanism to enter fullscreen by adding
>>             _NET_WM_STATE_FULLSCREEN to the list of atoms in
>>             _NET_WM_STATE. There may be a conflict between XToolkit and
>>             the test, for example, caused by using different Display
>>             objects.
>>
>>             In XToolkit, _NET_WM_STATE_FULLSCREEN is only used in
>>             exclusive fullscreen mode, see the code in
>>             X11GraphicsDevice. I can't say for sure if OpenGL is used in
>>             this case. As for owned windows, nothing special is done
>>             about them. If a window has an owner, WM_TRANSIENT_FOR is
>>             set for it, which should be respected by WM. As you say that
>>             WM_TRANSIENT_FOR works fine together with
>>             _NET_WM_STATE_FULLSCREEN in most of the modern WMs, it
>>             should work for Java windows as well.
>>
>>             Could you check all the window properties both for the
>>             fullscreen window and for the child windows, in your
>>             environment, please? Are there any chances some of the
>>             properties (_NET_WM_STATE, WM_TRANSIENT_FOR) are not set for
>>             some reason?
>>
>>             Thanks,
>>
>>             Artem
>>
>>
>>             On 4/15/2013 8:56 PM, Vladimir Kravets wrote:
>>
>>                 Hi guys,
>>
>>                 I'm using in my application fullscreen mode. Since 1.6
>>                 java have a lot
>>                 of issue with it I using X11 native binding for it.
>>                 Use JNA 3.4. To going to fullscreen I send XSendEvent as
>>                 _NET_WM_STATE
>>                 with _NET_WM_STATE_FULLSCREEN
>>
>>                 You can look at test application on the github:
>>                 https://github.com/vkravets/__**FullScreenTest<https://github.com/vkravets/__FullScreenTest>
>>                 <https://github.com/vkravets/**FullScreenTest<https://github.com/vkravets/FullScreenTest>>.
>> Main
>>
>>                 Class: Main or MinTest
>>
>>                 So about the issue... I have an issue with modal dialogs
>>                 or windows
>>                 which I try to show when my main window in fullscreen
>> mode.
>>                   From 1.7 java is not working as expected. In 1.6 java
>>                 modal
>>                 dialogs/windows appeared above fullscreen window as it
>>                 should be, but in
>>                 1.7 and 1.8 all modal dialogs/windows appeared under the
>>                 fullscreen window.
>>
>>                 I'm using wm Metacity, the same I have noticed on Gnome
>>                 Shell... It
>>                 seems that it's related to all clones of Metacity...
>>
>>                 I'm try to see how it's perform by defult native
>>                 frameworks and I tested
>>                 GTK3 and SWT which is using GTK bindings. And everything
>>                 is working as
>>                 expected. SmartGit which written on Java and use SWT
>>                 don't have such
>>                 problem. VLC/GTK the same - in fullscreen mode I can
>>                 call some dialogs
>>                 which will be appeared above fullscreen window.
>>
>>                 It's very strange  for me that Java in own documentation
>>                 have such lines:
>>                 Quote from GraphicsDevice#__**setFullScreenWindow:
>>
>>                 "
>>                 Windows cannot overlap the full-screen window. All other
>>                 application
>>                 windows will always appear beneath the full-screen
>>                 window in the Z-order.
>>                 "
>>
>>                 Since from 1.7 java is using the same message
>>                 _NET_WM_STATE with
>>                 _NET_WM_STATE_FULLSCREEN to going to fullscreeb and is
>>                 not clear why we
>>                 have such broken behavior with modal dialogs from 1.7
>>                 java and such
>>                 lines in the documentation....
>>
>>                 I'm already posted a defect to Oracle but Ithink it will
>>                 be marked as
>>                 duplicate since I found such issue
>>                 http://bugs.sun.com/__**bugdatabase/view_bug.do?bug___**
>> id=7192269<http://bugs.sun.com/__bugdatabase/view_bug.do?bug___id=7192269>
>>
>>                 <http://bugs.sun.com/**bugdatabase/view_bug.do?bug_**
>> id=7192269 <http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7192269>>
>>                 which marked
>>                 as Not an Issue and for me is not clear why?
>>
>>                 Could you please suggest workaround? Or please fix this =)
>>
>>                 Best Regards,
>>                 Vladimir
>>
>>
>>
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20130418/88f2f8cb/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fix_modal_dialogs_x11.patch
Type: application/octet-stream
Size: 4228 bytes
Desc: not available
Url : http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20130418/88f2f8cb/fix_modal_dialogs_x11.patch 


More information about the awt-dev mailing list