diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/actions/AbstractFindReferencesDataTypeAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/actions/AbstractFindReferencesDataTypeAction.java index 36261a8a4d..f77905f39c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/actions/AbstractFindReferencesDataTypeAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/actions/AbstractFindReferencesDataTypeAction.java @@ -66,8 +66,7 @@ public abstract class AbstractFindReferencesDataTypeAction extends DockingAction return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CycleGroupAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CycleGroupAction.java index c7462ac80c..5b43585514 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CycleGroupAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CycleGroupAction.java @@ -43,8 +43,7 @@ public class CycleGroupAction extends CompositeEditorTableAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/ChooseDataTypeAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/ChooseDataTypeAction.java index 058ed22ef1..5e04f76b7b 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/ChooseDataTypeAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/ChooseDataTypeAction.java @@ -54,8 +54,7 @@ public class ChooseDataTypeAction extends DockingAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateArrayAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateArrayAction.java index bbe51336a8..552f51ee53 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateArrayAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateArrayAction.java @@ -58,8 +58,7 @@ class CreateArrayAction extends DockingAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CycleGroupAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CycleGroupAction.java index 8e89e92156..2d6f4fe020 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CycleGroupAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CycleGroupAction.java @@ -53,8 +53,7 @@ public class CycleGroupAction extends DockingAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/DataAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/DataAction.java index 6b08ec5c4e..baaf43939a 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/DataAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/DataAction.java @@ -68,8 +68,7 @@ class DataAction extends ListingContextAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } DataType getDataType() { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/ChooseDataTypeAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/ChooseDataTypeAction.java index 3bc9395f30..da7d0add41 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/ChooseDataTypeAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/ChooseDataTypeAction.java @@ -54,8 +54,7 @@ public class ChooseDataTypeAction extends DockingAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/CreateArrayAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/CreateArrayAction.java index 5371c1379d..d15c0f3a94 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/CreateArrayAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/CreateArrayAction.java @@ -51,8 +51,7 @@ class CreateArrayAction extends ListingContextAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/CycleGroupAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/CycleGroupAction.java index b4600306f9..6e43b14c09 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/CycleGroupAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/CycleGroupAction.java @@ -53,8 +53,7 @@ public class CycleGroupAction extends ListingContextAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/DataAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/DataAction.java index ca33931c85..d712d91756 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/DataAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/DataAction.java @@ -66,8 +66,7 @@ class DataAction extends ListingContextAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } void setPopupMenu(String name, boolean isSignatureAction) { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/locationreferences/FindReferencesToAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/locationreferences/FindReferencesToAction.java index 4c08d0f406..3e637bb5c5 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/locationreferences/FindReferencesToAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/locationreferences/FindReferencesToAction.java @@ -51,8 +51,7 @@ public class FindReferencesToAction extends ListingContextAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptActionManager.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptActionManager.java index 77f2420a4c..62c0e87205 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptActionManager.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptActionManager.java @@ -646,8 +646,7 @@ class GhidraScriptActionManager { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/actions/ShowSymbolReferencesAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/actions/ShowSymbolReferencesAction.java index 982ba79d9b..b98eed71eb 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/actions/ShowSymbolReferencesAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/actions/ShowSymbolReferencesAction.java @@ -73,8 +73,7 @@ public class ShowSymbolReferencesAction extends SymbolTreeContextAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/DeleteTableRowAction.java b/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/DeleteTableRowAction.java index 31a91c3bff..852a840f62 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/DeleteTableRowAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/DeleteTableRowAction.java @@ -90,8 +90,7 @@ public class DeleteTableRowAction extends DockingAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/MakeProgramSelectionAction.java b/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/MakeProgramSelectionAction.java index cbe741a69b..b37a5a84bf 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/MakeProgramSelectionAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/MakeProgramSelectionAction.java @@ -54,8 +54,7 @@ public abstract class MakeProgramSelectionAction extends DockingAction { return; } - // we don't have a default keybinding, so any value implies user-defined - setUnvalidatedKeyBindingData(new KeyBindingData(keyStroke)); + setKeyBindingData(new KeyBindingData(keyStroke)); } @Override diff --git a/Ghidra/Framework/Docking/src/main/java/docking/actions/DockingToolActionManager.java b/Ghidra/Framework/Docking/src/main/java/docking/actions/DockingToolActionManager.java index e94c598f2d..4ec6c3d942 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/actions/DockingToolActionManager.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/actions/DockingToolActionManager.java @@ -199,17 +199,6 @@ public class DockingToolActionManager implements PropertyChangeListener { list = new ArrayList<>(); } - // note: we only use the action name for the lookup, as all shared actions are owned - // by the 'Tool' - int index = fullName.indexOf(" (Tool)"); - if (index > 0) { - String actionName = fullName.substring(0, index); - SharedStubKeyBindingAction sharedAction = sharedActionMap.get(actionName); - if (sharedAction != null) { - list.add(sharedAction); - } - } - return new ArrayList<>(list); } @@ -236,6 +225,7 @@ public class DockingToolActionManager implements PropertyChangeListener { } } + // these are the 'shared' actions that are needed in order to appear in the options UI for (DockingActionIf action : sharedActionMap.values()) { if (owner == null || action.getOwner().equals(owner)) { matchingActionList.add(action); @@ -322,4 +312,8 @@ public class DockingToolActionManager implements PropertyChangeListener { } } } + + DockingActionIf getSharedStubKeyBindingAction(String name) { + return sharedActionMap.get(name); + } } diff --git a/Ghidra/Framework/Docking/src/test.slow/java/docking/actions/SharedKeybindingDockingActionTest.java b/Ghidra/Framework/Docking/src/test.slow/java/docking/actions/SharedKeybindingDockingActionTest.java index 20fbb7eddb..a79bf1d4b0 100644 --- a/Ghidra/Framework/Docking/src/test.slow/java/docking/actions/SharedKeybindingDockingActionTest.java +++ b/Ghidra/Framework/Docking/src/test.slow/java/docking/actions/SharedKeybindingDockingActionTest.java @@ -301,8 +301,9 @@ public class SharedKeybindingDockingActionTest extends AbstractDockingTest { //================================================================================================== private void assertSharedStubInTool() { - // the stub action's name is 'Shared Action Name (Tool)' - DockingActionIf action = getAction(tool, SHARED_OWNER, SHARED_NAME); + DockingToolActionManager actionManager = + (DockingToolActionManager) getInstanceField("actionMgr", tool); + DockingActionIf action = actionManager.getSharedStubKeyBindingAction(SHARED_NAME); assertNotNull("Shared action stub is not in the tool", action); }