RFR: 4938801: The popup does not go when the component is removed.

Prasanta Sadhukhan psadhukhan at openjdk.org
Mon Jul 21 02:21:26 UTC 2025


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

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

Commit messages:
 - Remove listener
 - 4938801: The popup does not go when the component is removed.

Changes: https://git.openjdk.org/jdk/pull/26407/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26407&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-4938801
  Stats: 149 lines in 2 files changed: 148 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/26407.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26407/head:pull/26407

PR: https://git.openjdk.org/jdk/pull/26407


More information about the client-libs-dev mailing list