diff --git a/Ghidra/Framework/Docking/src/main/java/docking/action/DockingAction.java b/Ghidra/Framework/Docking/src/main/java/docking/action/DockingAction.java index 94c9c733f7..84c09e7ef0 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/action/DockingAction.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/action/DockingAction.java @@ -304,7 +304,12 @@ public abstract class DockingAction implements DockingActionIf { return true; } - if (kbData.getKeyBindingPrecedence() == KeyBindingPrecedence.ReservedActionsLevel) { + KeyBindingPrecedence precedence = null; + if (kbData != null) { + precedence = kbData.getKeyBindingPrecedence(); + } + + if (precedence == KeyBindingPrecedence.ReservedActionsLevel) { return true; // reserved actions are special } 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 44da7760df..851ec56f9f 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 @@ -405,6 +405,21 @@ public class SharedKeyBindingDockingActionTest extends AbstractDockingTest { spyLogger.assertLogMessage("does", "not", "support", "bindings"); } + @Test + public void testNonKeyBindingAction_CannotSetKeyBinding_NullBinding() { + + DockingAction action = new DockingAction("Test Action", "Test Action Owner", false) { + @Override + public void actionPerformed(ActionContext context) { + // stub + } + }; + + action.setKeyBindingData(null); + assertNull(action.getKeyBindingData()); + spyLogger.assertLogMessage("does", "not", "support", "bindings"); + } + //================================================================================================== // Private Methods //==================================================================================================