On Mon, 10 Aug 2026 17:31:54 GMT, Andy Goryachev <[email protected]> wrote:

>> `PopupWindow` will always overwrite its `Scene` (user agent) stylesheets 
>> when an owner was set and `show` is called.
>> Code like this:
>> 
>> 
>>         final Popup popup = new Popup();
>>         popup.getScene().setUserAgentStylesheet(popupUserAgentStylesheet);
>>         popup.getScene().getStylesheets().add(popupStylesheet);
>> 
>> 
>> will do nothing, because your added stylesheets will be later overwritten 
>> when `show` is called. 
>> Andy and I were already wondering about this behavior two years ago: 
>> https://github.com/openjdk/jfx/pull/1394#discussion_r1617620949
>> 
>> ---
>> 
>> I can't see any reason why we should do that. Instead, this PR will only add 
>> the stylesheets of the owner if they do not exist already. 
>> Additionally, we will not overwrite the user agent stylesheet if it was 
>> already set.
>> 
>> Added tests for all combinations I can think of. This PR also fixes NPEs 
>> that can happen when the owner window has no 'root window'.
>> 
>> There is already a test for the `Cursor` behavior, but there was none that 
>> verifies that the `Cursor` is not overwritten, so added one as well.
>> 
>> https://github.com/openjdk/jfx/blob/05a7b6d0db5e799395da27ab43a93d4337001e11/modules/javafx.graphics/src/main/java/javafx/stage/PopupWindow.java#L479-L481
>> 
>> Now, we will never overwrite anything that the developer set (before 
>> `show`ing). And as we can see above, this was already done this way with the 
>> `Cursor`.
>> 
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> modules/javafx.graphics/src/test/java/test/javafx/stage/PopupTest.java line 
> 901:
> 
>> 899:     }
>> 900: 
>> 901:     private String toBase64(String stylesheet) {
> 
> should probably be static...
> and since we are using it more than once, maybe we can move it to a new 
> graphics-specific `Utils` class?

yes, this is already on my list. Waiting for JUnit 6 to be merged first.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/2236#discussion_r3802299049

Reply via email to