On Wed, 30 Jul 2025 09:56:41 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> 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: > > Serialization fix Changes requested by aivanov (Reviewer). src/java.desktop/share/classes/javax/swing/JPopupMenu.java line 934: > 932: } > 933: > 934: private class Listener implements > PropertyChangeListener,Serializable { Suggestion: private final class AncestorListener implements PropertyChangeListener, Serializable { Be more specific. Make the class `final` explicitly; it's not meant to be extended. Put a space after the comma. src/java.desktop/share/classes/javax/swing/JPopupMenu.java line 935: > 933: > 934: private class Listener implements > PropertyChangeListener,Serializable { > 935: public void propertyChange(PropertyChangeEvent e) { Add `@Override` annotation. ------------- PR Review: https://git.openjdk.org/jdk/pull/26407#pullrequestreview-3071424167 PR Review Comment: https://git.openjdk.org/jdk/pull/26407#discussion_r2242610638 PR Review Comment: https://git.openjdk.org/jdk/pull/26407#discussion_r2242623614