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.
">

(original) (raw)

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 and 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@gmail.com>
Heh... I see that Anthony made this changes 3 years ago =(
http://hg.openjdk.java.net/jdk7/build/jdk/rev/ca34cfff70a4

Thanks,
Vladimir



2013/4/16 Artem Ananiev <artem.ananiev@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. 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 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