> This is a continuation to > [JDK-8236651](https://bugs.openjdk.org/browse/JDK-8236651) and it aims to > stabilize the linux glass gtk backend. > > > Overall, it has been made more robust within its scope, particularly in terms > of sizing, positioning, and state management. > > List of changes: > 1. Use GDK for creating Windows. Since we paint directly to the underlying > XWindow, creating a GtkWidget for the window is unnecessary and results in > unused GTK resources. Additionally, avoiding the use of a GtkWidget > eliminates the need for workarounds caused by conflicting GTK behavior—such > as setting the initial window state, position, or size. > 2. It aligns with X11's asynchronous behavior by reporting geometry changes > only upon receiving a configure event, since requests to the window manager > aren't guaranteed to be honored. However, changes are still reported > immediately in special cases, such as before the window is realized. For > example, a request to move the window to (0, 0) might be overridden by the > window manager, placing it in the top-right corner instead. > 3. States (fullscreen, maximized and iconify) are now reported back to Java > when it actually happens rather than immediately (except when not realized); > 4. When a window is maximized, it will ignore geometry changes and restore to > the geometry it had prior to being maximized. After some testing, I believe > this is the best behavior for platform compatibility; > 5. Unifies the WindowContext class: previously, there were three separate > classes—two of which (for applets and Java Web Start) were removed, leaving > only one. However, the supporting infrastructure was still there partially. > [Unify WindowContext in > glass-gtk](https://bugs.openjdk.org/browse/JDK-8305768) > 6. Tests were added and re-enabled to ensure everything works correctly. The > stage tests now cover various StageStyle configurations, as I found that > `DECORATED` stages often behave differently from `UNDECORATED` or `UTILITY` > stages; > 7. Added Logs for debugging. Enable it with ` -PCONF=DebugNative`; > 8. Old work-arounds dating back to Ubuntu 16.04 with Compiz were removed. > > A simple manual test is provided: > `java @build/run.args tests/manual/stage/TestStage.java ` > > > List of fixed issues: > > 1. [[Linux] Stage.setMaximized() before show() does not > persist](https://bugs.openjdk.org/browse/JDK-8316425) > 3. [[Linux] Intermittent test failure in > IconifyTest.canIconifyDecoratedStage](https://bugs.openjdk.org/browse/JDK-8316891) > 4. [[Linux] Initial window position is not ...
Thiago Milczarek Sayao has updated the pull request incrementally with one additional commit since the last revision: TestStage ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1789/files - new: https://git.openjdk.org/jfx/pull/1789/files/10aff17e..a0eb021a Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1789&range=13 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1789&range=12-13 Stats: 50 lines in 2 files changed: 0 ins; 47 del; 3 mod Patch: https://git.openjdk.org/jfx/pull/1789.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1789/head:pull/1789 PR: https://git.openjdk.org/jfx/pull/1789