From 00d2f1771423fd7417ac0894131c7562bc592329 Mon Sep 17 00:00:00 2001 From: ghidragon <106987263+ghidragon@users.noreply.github.com> Date: Wed, 15 May 2024 15:18:55 -0400 Subject: [PATCH] GP-4601 fixed code compare window to dispose properly --- .../functioncompare/FunctionComparisonProvider.java | 5 +++++ .../FunctionComparisonProviderManager.java | 10 +++------- .../component/DecompilerCodeComparisonPanel.java | 1 + 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/functioncompare/FunctionComparisonProvider.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/functioncompare/FunctionComparisonProvider.java index b13bed4423..98d6b99dc6 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/functioncompare/FunctionComparisonProvider.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/functioncompare/FunctionComparisonProvider.java @@ -282,4 +282,9 @@ public class FunctionComparisonProvider extends ComponentProviderAdapter public void setCloseListener(Callback closeListener) { this.closeListener = Callback.dummyIfNull(closeListener); } + + public void dispose() { + functionComparisonPanel.dispose(); + } + } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/functioncompare/FunctionComparisonProviderManager.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/functioncompare/FunctionComparisonProviderManager.java index dbd28b902a..6bbd6e60ba 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/functioncompare/FunctionComparisonProviderManager.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/functioncompare/FunctionComparisonProviderManager.java @@ -20,10 +20,7 @@ import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; import docking.ComponentProviderActivationListener; -import ghidra.framework.model.DomainObjectChangeRecord; -import ghidra.framework.model.DomainObjectChangedEvent; -import ghidra.framework.model.DomainObjectEvent; -import ghidra.framework.model.EventType; +import ghidra.framework.model.*; import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Program; @@ -53,6 +50,7 @@ public class FunctionComparisonProviderManager implements FunctionComparisonProv @Override public void providerClosed(FunctionComparisonProvider provider) { providers.remove(provider); + provider.dispose(); listeners.stream().forEach(l -> l.componentProviderDeactivated(provider)); } @@ -217,9 +215,7 @@ public class FunctionComparisonProviderManager implements FunctionComparisonProv */ public void dispose() { for (FunctionComparisonProvider provider : providers) { - FunctionComparisonPanel panel = provider.getComponent(); - panel.setVisible(false); - panel.dispose(); + provider.dispose(); } providers.clear(); } diff --git a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerCodeComparisonPanel.java b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerCodeComparisonPanel.java index f1ccbe7965..245bd31d31 100644 --- a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerCodeComparisonPanel.java +++ b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerCodeComparisonPanel.java @@ -445,6 +445,7 @@ public abstract class DecompilerCodeComparisonPanel