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