On Sat, 21 Mar 2026 23:19:44 GMT, Marius Hanl <[email protected]> wrote:
> Very similar to https://github.com/openjdk/jfx/pull/1829, this PR removes the > questionable behavior that the `MouseEventFirer` may create a temporary > `Stage` for your `Node`. > > Take the following test code: > > Button button = new Button("Button"); > MouseEventFirer mouse = new MouseEventFirer(button); > mouse.fireMousePressAndRelease(); > mouse.fireMousePressAndRelease(); > mouse.dispose() > > What it does is to create a `Stage` in the first method. The second method > does not. This is not immediately clear. > That is also the reason why the dispose method exists. To MAY clean it up. Or > forget to call it. > > This does not test a realistic scenario and the chance is quite high that > developers used that methods without even knowing that it contains such logic. > > So the idea is to remove the StageLoader code from MouseEventFirer and rather > use it in the Test code before calling the Util methods. > > For the example above, this would result in: > > Button button = new Button("Button"); > stageLoader = new StageLoader(button ); > MouseEventFirer mouse = new MouseEventFirer(button); > mouse.fireMousePressAndRelease(); > mouse.fireMousePressAndRelease(); > > > There were only two real tests that did not have a `Stage` yet. So most of > the tests already had a good setup and this could never run. modules/javafx.controls/src/test/java/test/com/sun/javafx/scene/control/infrastructure/MouseEventFirer.java line 138: > 136: > 137: if (node.getScene() == null || node.getScene().getWindow() == > null) { > 138: throw new IllegalArgumentException("Node: " + node + " must > be in a Scene and Window " + maybe instruct to use StageLoader instead, addin an example in the comments? something like this: // The target node must be in a Scene and Window, example: // private StageLoader sl; // .. // sl = new StageLoader(node); // ... // sl.dispose() if (node.getScene() == null || node.getScene().getWindow() == null) { throw new IllegalArgumentException("Target node must be in a Scene and Window (use StageLoader?)"); ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/2124#discussion_r2977473382
