On Fri, 25 Sep 2026 02:46:09 GMT, Prasanta Sadhukhan <[email protected]> 
wrote:

>> In Aqua L&F, JOptionPane.showInternalMessageDialog does not close after 
>> clicking the close icon button but other buttons like "OK" , "Cancel" works. 
>> It seems `AquaInternalFrameBorder.doButtonAction()` which handles 
>> `kCloseButton `was not called.
>> It is seen that `showInternalMessageDialog()` uses a modal JInternalFrame. 
>> While that internal frame is modal, AWT filters mouse events so only the 
>> modal frame’s contents/children can receive them. Aqua paints and handles 
>> the red close button as part of the JInternalFrame border/title-bar itself 
>> via
>> AquaInternalFrameBorder. drawAllWidgets -> paintButton -> getWidget 
>> (Widget.TITLE_BAR_CLOSE_BOX)
>> https://github.com/openjdk/jdk/blob/5b2d6991a1279d375f9a3c00c7bcd0bbcc7081d6/src/java.desktop/macosx/classes/com/apple/laf/AquaInternalFrameBorder.java#L393
>> 
>> When close button is presssed, the flow should be
>> https://github.com/openjdk/jdk/blob/5b2d6991a1279d375f9a3c00c7bcd0bbcc7081d6/src/java.desktop/macosx/classes/com/apple/laf/AquaInternalFrameUI.java#L528
>>  [records the button hit which delegates to the border]
>> https://github.com/openjdk/jdk/blob/5b2d6991a1279d375f9a3c00c7bcd0bbcc7081d6/src/java.desktop/macosx/classes/com/apple/laf/AquaInternalFrameUI.java#L536
>>  
>> https://github.com/openjdk/jdk/blob/5b2d6991a1279d375f9a3c00c7bcd0bbcc7081d6/src/java.desktop/macosx/classes/com/apple/laf/AquaInternalFrameBorder.java#L265
>> 
>> but it never gets called since
>> the click target was the modal JInternalFrame itself, not a child component, 
>> so the modal filter consumed the event before Aqua code ever saw it,
>> 
>> The fix is to allow events targeted at the modal component itself too
>> 
>> It works for other L&F like Windows because they use Swing JButton for close 
>> button component in the internal frame title pane. so the click target is a 
>> child of the modal JInternalFrame, so the filter check is passed.
>> There doesn't seem to be a way to fix in macosx classes because Aqua never 
>> receives the blocked event. The event is consumed earlier in shared AWT 
>> lightweight-modal dispatch code so the fix is made there
>> CI testing is ok and no regression observed.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Prasanta Sadhukhan has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Update comment

@azuev-java please review

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

PR Comment: https://git.openjdk.org/jdk/pull/32169#issuecomment-5900128899

Reply via email to