<AWT Dev> Modal dialogs for fullscreen window

Vladimir Kravets vova.kravets at gmail.com
Thu Apr 18 11:09:04 PDT 2013


Artem,

In this case I agreen with you, and your's changes is more small and should
work as expected and touch only X11 area.
Perfect!

Thanks for this point.


2013/4/18 Artem Ananiev <artem.ananiev at oracle.com>

>
> On 4/18/2013 1:01 PM, Vladimir Kravets wrote:
>
>> 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.
>>
>
> java.awt.Window is a public class, so we can't change its API in minor JDK
> releases. Moreover, I don't see a need in new Type.DIALOG, it can be fixed
> in XAWT code only:
>
>  diff -r 8fbe247ad2d8 src/solaris/classes/sun/awt/**X11/XWindowPeer.java
>> --- a/src/solaris/classes/sun/awt/**X11/XWindowPeer.java  Wed Apr 17
>> 11:24:40 2013 -0700
>> +++ b/src/solaris/classes/sun/awt/**X11/XWindowPeer.java  Thu Apr 18
>> 17:13:39 2013 +0400
>> @@ -1887,7 +1887,9 @@
>>          switch (getWindowType())
>>          {
>>              case NORMAL:
>> -                typeAtom = protocol.XA_NET_WM_WINDOW_**TYPE_NORMAL;
>> +                typeAtom = (ownerPeer == null) ?
>> +                            protocol.XA_NET_WM_WINDOW_**TYPE_NORMAL :
>> +                            protocol.XA_NET_WM_WINDOW_**TYPE_DIALOG;
>>                  break;
>>              case UTILITY:
>>                  typeAtom = protocol.XA_NET_WM_WINDOW_**TYPE_UTILITY;
>>
>
> Thanks,
>
> Artem
>
>  Thanks,
>> Vladimir
>>
>>
>> 2013/4/17 Anthony Petrov <anthony.petrov at oracle.com
>> <mailto:anthony.petrov at oracle.**com <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**>
>>         <mailto: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>
>>         <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>
>>
>>         <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**>
>>              <mailto: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>
>>
>>         <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>>
>>                  <mailto: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>
>> >
>>
>>                          <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>
>> >
>>
>>
>>
>>         <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/70b62f9c/attachment.html 


More information about the awt-dev mailing list