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
