On Tue, 16 Jun 2026 22:25:12 GMT, Thiago Milczarek Sayao <[email protected]> wrote:
>> This is a continuation to >> [JDK-8236651](https://bugs.openjdk.org/browse/JDK-8236651) and it aims to >> stabilize the linux glass gtk backend. >> >> It refactors the Glass GTK implementation with a primary focus on window >> sizing, positioning, and state management, addressing a number of >> long-standing issues. >> >> Previously, three separate context classes existed, two of which were used >> for Java Web Start and Applets. These have been unified, as they are no >> longer required. >> >> Additional tests have been introduced to improve coverage. Some tests >> produced different results depending on the StageStyle, so they have been >> converted to use `@ParameterizedTest` to exercise multiple styles. >> >> Although the primary focus is XWayland, the changes have also been verified >> to work correctly on Xorg. >> >> This replaces #1789. It removes the use of GdkWindow in favor of GtkWindow, >> reducing risk and simplifying the review process while preserving the same >> set of bug fixes. Additionally, #2025 requires a `GtkWindow` to be used when >> setting the parent of the file chooser dialog. >> >> To show debug messages, build with `-PCONF=DebugNative` and run with >> `-Djdk.gtk.verbose=true`. Log categories can be passed with >> `-Dglass.gtk.logCategories=CATEGORY` >> >> `CATEGORY` can be one or more of: >> - all >> - size >> - position >> - focus >> - state >> - lifecycle >> - input >> - dialog >> >> Multiple categories can be specified by separating them with commas (e.g. >> size,focus,input). >> >> A manual test is provided: >> `java @build/run.args tests/manual/stage/TestStage.java` >> >> When a window property is set, it is reported immediately. However, once it >> reaches the native Glass layer, it may be adjusted or rejected, causing the >> property to be updated again. Introducing a delay helps ensure the final >> state has been applied before it is verified. >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > Thiago Milczarek Sayao has updated the pull request incrementally with one > additional commit since the last revision: > > mapped = true for popups modules/javafx.graphics/src/main/native-glass/gtk/glass_general.h line 278: > 276: > 277: #define LOG(category, artifact, fmt, ...) \ > 278: log(category, #category, artifact, fmt, ##__VA_ARGS__) I think this `log` call should be wrapped in a `do {} while(0)` block, so: #define LOG(category, artifact, fmt, ...) do {\ log(category, #category, artifact, fmt, ##__VA_ARGS__); \ } while(0) modules/javafx.graphics/src/main/native-glass/gtk/glass_window.h line 117: > 115: > 116: bool operator==(const Rectangle& other) const { > 117: return x == other.x && y == other.y Minor: similar to `OptionalAxisPoint` this could return a not-`operator!=` modules/javafx.graphics/src/main/native-glass/gtk/glass_window.h line 130: > 128: > 129: bool operator==(const Size& other) const { > 130: return width == other.width && height == other.height; Minor: similar to `OptionalAxisPoint` this could return a not-`operator!=` modules/javafx.graphics/src/main/native-glass/gtk/glass_window.h line 165: > 163: > 164: bool operator==(const Point& other) const { > 165: return x == other.x && y == other.y; Minor: similar to `OptionalAxisPoint` this could return a not-`operator!=` ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/2139#discussion_r3472560125 PR Review Comment: https://git.openjdk.org/jfx/pull/2139#discussion_r3472663669 PR Review Comment: https://git.openjdk.org/jfx/pull/2139#discussion_r3472666210 PR Review Comment: https://git.openjdk.org/jfx/pull/2139#discussion_r3472667098
