On Sun, 22 Mar 2026 12:16:21 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.
>> 
>> This is a refactor of the Glass GTK implementation, primarily focused on 
>> window size, positioning, and state management to resolve numerous issues.
>> 
>> The main change is that GtkWindow (which is a GtkWidget) has been replaced 
>> with a direct use of GdkWindow for windows. This makes sense because GTK 
>> includes its own rendering pipeline, whereas JavaFX renders directly to the 
>> underlying system window (such as the X11 window) via Prism ES2 using GL and 
>> GLX. Most GTK window-related calls have equivalent GDK calls. Since GDK 
>> serves as an abstraction over the system window and input events, it aligns 
>> better with the purposes of Glass. Additionally, using GTK required various 
>> workarounds to integrate with Glass, which are no longer necessary when 
>> using GDK directly.
>> 
>> It uses a simple C++ Observable to notify the Java side about changes. This 
>> approach is more straightforward, as notifications occur at many points and 
>> the previous implementation was becoming cluttered.
>> 
>> Previously, there were three separate context classes, two of which were 
>> used for Java Web Start and Applets. These have now been unified, as they 
>> are no longer required.
>> 
>> Many tests were added to ensure everything is working correctly. I noticed 
>> that some tests produced different results depending on the StageStyle, so 
>> they now use @ParameterizedTest to vary the StageStyle.
>> 
>> A manual test is also provided. I did not use MonkeyTester for this, as it 
>> was quicker to simply run and test manually:`java @build/run.args 
>> tests/manual/stage/TestStage.java `
>> 
>> While this is focused on XWayland, everything works on pure Xorg as well.
>
> Thiago Milczarek Sayao has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Add flag to disable portal file chooser

Changes requested by mstrauss (Reviewer).

modules/javafx.graphics/src/main/native-glass/gtk/glass_window.cpp line 289:

> 287:     Size size = view_size.get();
> 288: 
> 289:     move_resize(loc.x, loc.y, true, true, size.width, size.height);

`WindowContext::window_location` is initialized to (-1, -1) in the class 
declaration. However, the first map treats this sentinel value as an actual 
location and calls `move_resize(-1, -1, ...)`. Is this intended?

modules/javafx.graphics/src/main/native-glass/gtk/glass_window.cpp line 1270:

> 1268:     } else if (ch > 0) {
> 1269:         // once set to window, stick with it
> 1270:         if (width_type == BOUNDSTYPE_UNKNOWN) {

This should probably be `height_type`, not `width_type`.

modules/javafx.graphics/src/main/native-glass/gtk/glass_window.cpp line 1461:

> 1459: 
> 1460:         // Clicking on a window edge starts a move-resize operation.
> 1461:         if (shouldStartResizeDrag) {

You've removed the `shouldStartResizeDrag` branch, and duplicated the move-drag 
branch. If this is intended, remove the computation of `shouldStartResizeDrag` 
as well as the duplicated code below.

modules/javafx.graphics/src/main/native-glass/gtk/glass_window.cpp line 1477:

> 1475: 
> 1476:     if (max_size.width > 0 && newW > max_size.width) {
> 1477:         boundsW = max_size.height - extents.width;

This should probably be `max_size.width`, not `max_size.height`.

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

PR Review: https://git.openjdk.org/jfx/pull/1789#pullrequestreview-3994325632
PR Review Comment: https://git.openjdk.org/jfx/pull/1789#discussion_r2977310819
PR Review Comment: https://git.openjdk.org/jfx/pull/1789#discussion_r2977327968
PR Review Comment: https://git.openjdk.org/jfx/pull/1789#discussion_r2977281119
PR Review Comment: https://git.openjdk.org/jfx/pull/1789#discussion_r2977321635

Reply via email to