From 45c19494b746aa7ee85482dcea3588f3dd594b44 Mon Sep 17 00:00:00 2001 From: ghidragon <106987263+ghidragon@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:50:24 -0400 Subject: [PATCH] GP-5930 Quick toggle for PCode field tmp --- .../Browser_Field_Formatter.htm | 7 +++ .../AbstractCodeBrowserPlugin.java | 3 -- .../core/codebrowser/CodeViewerProvider.java | 49 ++++++++++++------- .../app/util/viewer/format/FormatManager.java | 27 ++++++++++ 4 files changed, 66 insertions(+), 20 deletions(-) diff --git a/Ghidra/Features/Base/src/main/help/help/topics/CodeBrowserPlugin/Browser_Field_Formatter.htm b/Ghidra/Features/Base/src/main/help/help/topics/CodeBrowserPlugin/Browser_Field_Formatter.htm index 2a73c57dd8..1dc739a1da 100644 --- a/Ghidra/Features/Base/src/main/help/help/topics/CodeBrowserPlugin/Browser_Field_Formatter.htm +++ b/Ghidra/Features/Base/src/main/help/help/topics/CodeBrowserPlugin/Browser_Field_Formatter.htm @@ -191,6 +191,13 @@
Reset the formats for all categories to their default settings by right clicking on the Browser Field Formatter and select Reset All Formats on the popup.
+ ++Some fields have quick toggle actions that allow the field to be easily toggled on or + off. Currently, the only field with a quick toggle action is the PCode field and it has a + default keybinding is <CTRL SHIFT 1>.
+
ex
else if (optionName.equals(MOUSE_WHEEL_HORIZONTAL_SCROLLING_OPTIONS_NAME)) {
fieldPanel.setHorizontalScrollingEnabled((Boolean) newValue);
}
-
- connectedProvider.fieldOptionChanged(optionName, newValue);
}
-
}
@Override
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 1189d21ea9..b87ded62cb 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
@@ -20,8 +20,7 @@ import java.awt.Point;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.*;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
+import java.awt.event.*;
import java.util.*;
import javax.swing.Icon;
@@ -31,6 +30,7 @@ import javax.swing.event.ChangeListener;
import docking.*;
import docking.action.*;
+import docking.action.builder.ActionBuilder;
import docking.actions.PopupActionProvider;
import docking.dnd.*;
import docking.widgets.EventTrigger;
@@ -62,8 +62,7 @@ import ghidra.program.model.address.*;
import ghidra.program.model.listing.*;
import ghidra.program.model.mem.Memory;
import ghidra.program.util.*;
-import ghidra.util.HelpLocation;
-import ghidra.util.Swing;
+import ghidra.util.*;
public class CodeViewerProvider extends NavigatableComponentProviderAdapter
implements ProgramLocationListener, ProgramSelectionListener, Draggable, Droppable,
@@ -471,21 +470,37 @@ public class CodeViewerProvider extends NavigatableComponentProviderAdapter
action = new GotoNextFunctionAction(tool, plugin.getName());
tool.addAction(action);
+ buildQuickTogleFieldActions();
+
}
- void fieldOptionChanged(String fieldName, Object newValue) {
- //TODO if (name.startsWith(OPERAND_OPTIONS_PREFIX) && (newValue instanceof Boolean)) {
- // for (int i = 0; i < toggleOperandMarkupActions.length; i++) {
- // ToggleOperandMarkupAction action = toggleOperandMarkupActions[i];
- // if (name.equals(action.getOptionName())) {
- // boolean newState = ((Boolean)newValue).booleanValue();
- // if (action.isSelected() != newState) {
- // action.setSelected(newState);
- // }
- // break;
- // }
- // }
- // }
+ private void buildQuickTogleFieldActions() {
+ List