> 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:

  Remove state precedence tests

-------------

Changes:
  - all: https://git.openjdk.org/jfx/pull/1789/files
  - new: https://git.openjdk.org/jfx/pull/1789/files/61b7593d..0b3cd300

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1789&range=10
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1789&range=09-10

  Stats: 128 lines in 1 file changed: 0 ins; 128 del; 0 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

Reply via email to