diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingPlugin.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingPlugin.java index bd4e9be4fe..419931916a 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingPlugin.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingPlugin.java @@ -15,7 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.listing; -import static ghidra.app.plugin.core.debug.gui.DebuggerResources.*; +import static ghidra.app.plugin.core.debug.gui.DebuggerResources.GROUP_TRANSIENT_VIEWS; import java.util.List; import java.util.function.Consumer; @@ -82,8 +82,7 @@ import ghidra.trace.model.program.TraceProgramView; }, servicesProvided = { DebuggerListingService.class, - } -) + }) public class DebuggerListingPlugin extends AbstractCodeBrowserPlugin implements DebuggerListingService { private static final String KEY_CONNECTED_PROVIDER = "connectedProvider"; diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProvider.java index 5fafbd2c6f..8f34428dd9 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProvider.java @@ -93,8 +93,9 @@ import utilities.util.SuppressableCallback.Suppression; public class DebuggerListingProvider extends CodeViewerProvider { - private static final AutoConfigState.ClassHandler CONFIG_STATE_HANDLER = - AutoConfigState.wireHandler(DebuggerListingProvider.class, MethodHandles.lookup()); + private static final AutoConfigState.ClassHandler< + DebuggerListingProvider> CONFIG_STATE_HANDLER = + AutoConfigState.wireHandler(DebuggerListingProvider.class, MethodHandles.lookup()); private static final String KEY_DEBUGGER_COORDINATES = "DebuggerCoordinates"; protected static boolean sameCoordinates(DebuggerCoordinates a, DebuggerCoordinates b) { @@ -451,6 +452,11 @@ public class DebuggerListingProvider extends CodeViewerProvider { return isMainListing; } + @Override + public boolean isPrimary() { + return isMainListing(); + } + @Override public boolean isReadOnly() { if (controlService == null) { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/CodeViewerProvider.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/CodeViewerProvider.java index 060342400a..a3a97be3c4 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/CodeViewerProvider.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/CodeViewerProvider.java @@ -236,9 +236,18 @@ public class CodeViewerProvider extends NavigatableComponentProviderAdapter return WindowPosition.RIGHT; } + /** + * The primary provider cannot be removed, only hidden + * + * @return true if primary + */ + public boolean isPrimary() { + return isConnected(); + } + @Override public void closeComponent() { - if (!isConnected()) { + if (!isPrimary()) { plugin.providerClosed(this); return; }