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

Reply via email to