Move setting of awtAppClassName from MainWindow to Main#9314
Move setting of awtAppClassName from MainWindow to Main#9314neilcsmith-net wants to merge 1 commit intoapache:masterfrom
Conversation
Move the setting of awtAppClassName for XToolkit into Main so that it is set before splash and import dialogs are created. This fixes issues with duplicate dock icons caused by incorrect WM_CLASS derived from this field value.
| if (xtoolkit.getName().equals("sun.awt.X11.XToolkit")) { //NOI18N | ||
| // TODO those add --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED | ||
|
|
||
| //#183739 / JDK-6528430 - provide proper app name on Linux | ||
| try { | ||
| final Field awtAppClassName = xtoolkit.getDeclaredField("awtAppClassName"); //NOI18N |
There was a problem hiding this comment.
i find it curious that the field isn't final -> we are lucky here since final might mean final in not too far future.
I think this is ok since it is only moving code around. But all those hacks have to go away. Every --add-opens flag we set is a red flag.
There was a problem hiding this comment.
It's such a commonly used workaround that it's probably deliberately kept like that. An API or system property would be great for this, but it doesn't look like it's happening anytime soon! https://bugs.openjdk.org/browse/JDK-6528430 😄 This will also need consideration if/when there's a move from XWayland to Wakefield.
The only other workaround is to ensure the toolkit is initialized from the main thread, but that would lead to a shared WM_CLASS across all platform applications.
Move the setting of awtAppClassName for XToolkit into Main so that it is set before splash and import dialogs are created. This should fix issues with duplicate dock icons caused by incorrect WM_CLASS derived from this field value that need to be worked around in the various package builds.
Follow up to discussion in #9303 Draft for now. Should probably wait for and rebase on that change.