On Thu, 31 Jul 2025 02:20:45 GMT, Prasanta Sadhukhan <[email protected]> 
wrote:

>> Issue is seen that a popup doesn't get closed when the component that 
>> invokes it, gets removed from the parent container.
>> This is because the JPopupMenu does not listen to its invoker liefecycle 
>> thereby behaving as a standalone entity after creation.
>> Fix is made to make sure popup listens to its invoker lifecycle by 
>> registering its PropertyChangeListener to the invoker and listens to the 
>> ["ancestor" property name ], 
>> https://github.com/openjdk/jdk/blob/441dbde2c3c915ffd916e39a5b4a91df5620d7f3/src/java.desktop/share/classes/javax/swing/JComponent.java#L4853-L4858
>>  which will become null when removed, wherein we should dispose of the popup
>
> Prasanta Sadhukhan has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Rename listener class

test/jdk/javax/swing/JPopupMenu/TestPopupInvoker.java line 53:

> 51: 
> 52:     private static final CountDownLatch popupShown = new 
> CountDownLatch(1);
> 53:     private static final CountDownLatch popupHidden = new 
> CountDownLatch(1);

Final variables can be capitalized.

test/jdk/javax/swing/JPopupMenu/TestPopupInvoker.java line 106:

> 104:                 pane.repaint();
> 105:             });
> 106:             if (!popupHidden.await(1, SECONDS)) {

is it ok to have the same timeout for both latches ?
If yes, then a final TIMEOUT variable can be declared and used.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26407#discussion_r2247061840
PR Review Comment: https://git.openjdk.org/jdk/pull/26407#discussion_r2247072039

Reply via email to