From b491934eea9573a8b7663ea8626dccb5ae63372f Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Wed, 14 May 2025 20:06:28 +0000 Subject: [PATCH] GP-5675: Ensure comparison uses alternative view path. --- .../services/DebuggerTraceManagerService.java | 5 +++++ .../gui/time/DebuggerTimeSelectionDialog.java | 18 ++++++++++++++++++ .../DebuggerTraceManagerServicePlugin.java | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/app/services/DebuggerTraceManagerService.java b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/app/services/DebuggerTraceManagerService.java index 2b92ad15b4..b9476ba045 100644 --- a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/app/services/DebuggerTraceManagerService.java +++ b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/app/services/DebuggerTraceManagerService.java @@ -51,6 +51,11 @@ public interface DebuggerTraceManagerService { * TODO: Distinguish between API and GUI? */ USER, + /** + * The request was driven by the user, but its some alternative view, e.g., to compare + * snapshots + */ + USER_ALT, /** * A trace was activated because a target was published or withdrawn */ diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimeSelectionDialog.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimeSelectionDialog.java index f5c9fd3d2b..82f1241bf1 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimeSelectionDialog.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimeSelectionDialog.java @@ -16,6 +16,7 @@ package ghidra.app.plugin.core.debug.gui.time; import java.awt.BorderLayout; +import java.awt.event.*; import java.util.function.Function; import javax.swing.*; @@ -106,6 +107,23 @@ public class DebuggerTimeSelectionDialog extends DialogComponentProvider { } scheduleText.setText(radix.format(snap)); }); + snapshotPanel.snapshotTable.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) { + close(); + } + } + }); + snapshotPanel.snapshotTable.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_ENTER) { + close(); + e.consume(); // lest it select the next row down + } + } + }); scheduleText.getDocument().addDocumentListener(new DocumentListener() { @Override diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServicePlugin.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServicePlugin.java index 364528bb86..447f326bf2 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServicePlugin.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServicePlugin.java @@ -725,7 +725,7 @@ public class DebuggerTraceManagerServicePlugin extends Plugin @Override public CompletableFuture materialize(DebuggerCoordinates coordinates) { - return materialize(DebuggerCoordinates.NOWHERE, coordinates, ActivationCause.USER); + return materialize(DebuggerCoordinates.NOWHERE, coordinates, ActivationCause.USER_ALT); } protected CompletableFuture materialize(DebuggerCoordinates previous,