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
