On Wed, 26 Nov 2025 19:16:37 GMT, Andy Goryachev <[email protected]> wrote:

>> In the macOS glass code an owned window is referred to as a child window and 
>> its owner is referred to as the parent. When a parent is iconified the glass 
>> code "iconifies" its children which is to say it hides them. Under the right 
>> circumstances the children may get ordered back to the front and made 
>> visible almost immediately.
>> 
>> Details are in the bug report but when a window is iconified it may trigger 
>> the OS to notify every window that its NSScreen has changed (yes, this is 
>> weird). This causes reorderChildWindows to be called on the newly iconified 
>> parent and the process of re-ordering the child windows can cause hidden 
>> windows to be made visible. For some reason the NSScreen strangeness only 
>> happens if "System Settings > Desktop & Dock > Minimize windows into 
>> application icon" is turned OFF. This is not the first time we've 
>> encountered this, see 
>> [JDK-8353902](https://bugs.openjdk.org/browse/JDK-8353902)
>> 
>> This PR fixes the problem in two ways. If reorderChildWindows is called on 
>> an iconified window it does nothing. If one of the child windows is hidden 
>> it is not re-ordered since that might make it visible.
>
> modules/javafx.graphics/src/main/native-glass/mac/GlassWindow.m line 379:
> 
>> 377:             [child->nsWindow setLevel:level];
>> 378:             // Order child above the owner window
>> 379:             if (child->nsWindow.isVisible) {
> 
> there is no chance for `child->nsWindow` to be `nil`, is there?

No, it can't be nil. Given the way Objective-C works it wouldn't crash even if 
it was nil, isVisible would just return NO.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1985#discussion_r2566450556

Reply via email to