From e7ac7f48d7bb6cf761204458375ae48de4cdc195 Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Tue, 14 Dec 2021 17:01:12 -0500 Subject: [PATCH] GP-1479: Made listing and memory border behaviors consistent --- .../gui/listing/DebuggerListingProvider.java | 4 ++++ .../memory/DebuggerMemoryBytesProvider.java | 24 +++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) 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 b69f0993fc..e9f70ac31b 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 @@ -1034,7 +1034,11 @@ public class DebuggerListingProvider extends CodeViewerProvider { public void cloneWindow() { final DebuggerListingProvider newProvider = plugin.createNewDisconnectedProvider(); final ViewerPosition vp = getListingPanel().getFieldPanel().getViewerPosition(); + final SaveState saveState = new SaveState(); + writeConfigState(saveState); Swing.runLater(() -> { + newProvider.readConfigState(saveState); + newProvider.goToCoordinates(current); newProvider.getListingPanel() .getFieldPanel() diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesProvider.java index 222edf3693..0eebd902f6 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesProvider.java @@ -25,6 +25,7 @@ import org.apache.commons.lang3.StringUtils; import docking.ActionContext; import docking.action.*; import docking.menu.MultiStateDockingAction; +import docking.widgets.fieldpanel.support.ViewerPosition; import ghidra.app.plugin.core.byteviewer.*; import ghidra.app.plugin.core.debug.DebuggerCoordinates; import ghidra.app.plugin.core.debug.gui.DebuggerLocationLabel; @@ -217,6 +218,11 @@ public class DebuggerMemoryBytesProvider extends ProgramByteViewerComponentProvi return super.getByteViewerPanel(); } + @Override + protected void addToToolbar() { + // Prevent this from being added to the toolbar + } + /** * Deal with the fact that initialization order is hard to control */ @@ -363,6 +369,11 @@ public class DebuggerMemoryBytesProvider extends ProgramByteViewerComponentProvi return trackingTrait.getSpec(); } + @Override + public boolean isConnected() { + return false; + } + public boolean isMainViewer() { return isMainViewer; } @@ -417,13 +428,16 @@ public class DebuggerMemoryBytesProvider extends ProgramByteViewerComponentProvi @Override public void cloneWindow() { final DebuggerMemoryBytesProvider newProvider = myPlugin.createNewDisconnectedProvider(); - SaveState saveState = new SaveState(); + final ViewerPosition vp = panel.getViewerPosition(); + final SaveState saveState = new SaveState(); writeConfigState(saveState); - newProvider.readConfigState(saveState); + Swing.runLater(() -> { + newProvider.readConfigState(saveState); - newProvider.goToCoordinates(current); - newProvider.setLocation(currentLocation); - newProvider.panel.setViewerPosition(panel.getViewerPosition()); + newProvider.goToCoordinates(current); + newProvider.setLocation(currentLocation); + newProvider.panel.setViewerPosition(vp); + }); } @Override