<AWT Dev> Modal dialogs for fullscreen window

Artem Ananiev artem.ananiev at oracle.com
Thu Apr 18 06:16:38 PDT 2013


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>>
>
>     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>
>         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>
>              <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>
>
>                  Thanks,
>                  Vladimir
>
>
>
>                  2013/4/16 Artem Ananiev <artem.ananiev at oracle.com
>         <mailto:artem.ananiev at oracle.com>
>                  <mailto:artem.ananiev at oracle.__com
>         <mailto: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
>
>
>
>
>
>



More information about the awt-dev mailing list