diff --git a/Ghidra/Framework/Docking/src/main/java/docking/DialogComponentProvider.java b/Ghidra/Framework/Docking/src/main/java/docking/DialogComponentProvider.java index 97cf1a424d..28194ef573 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/DialogComponentProvider.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/DialogComponentProvider.java @@ -30,7 +30,7 @@ import docking.action.*; import docking.actions.KeyBindingUtils; import docking.event.mouse.GMouseListenerAdapter; import docking.help.HelpService; -import docking.menu.DockingToolbarButton; +import docking.menu.DialogToolbarButton; import docking.util.AnimationUtils; import docking.widgets.label.GDHtmlLabel; import ghidra.util.*; @@ -81,7 +81,7 @@ public class DialogComponentProvider private Component focusComponent; private JPanel toolbar; - private final Map actionMap = new HashMap<>(); + private final Map actionMap = new HashMap<>(); private final DialogComponentProviderPopupActionManager popupManager = new DialogComponentProviderPopupActionManager(this); private final PopupHandler popupHandler = new PopupHandler(); @@ -1184,7 +1184,7 @@ public class DialogComponentProvider mainPanel.add(toolbar, BorderLayout.NORTH); } - DockingToolbarButton button = new DockingToolbarButton(action, this); + DialogToolbarButton button = new DialogToolbarButton(action, this); toolbar.add(button); actionMap.put(action, button); } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/KeyBindingOverrideKeyEventDispatcher.java b/Ghidra/Framework/Docking/src/main/java/docking/KeyBindingOverrideKeyEventDispatcher.java index d6c38b4d70..e415fa7756 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/KeyBindingOverrideKeyEventDispatcher.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/KeyBindingOverrideKeyEventDispatcher.java @@ -220,10 +220,10 @@ public class KeyBindingOverrideKeyEventDispatcher implements KeyEventDispatcher Window activeWindow = focusProvider.getActiveWindow(); if (activeWindow instanceof DockingDialog) { - // This is legacy code, for which the reasons it exists cannot be recalled. We - // speculate that odd things can happen when keybindings are processed with model - // dialogs open. For now, do not let key bindings get processed for modal dialogs. - // This can be changed in the future if needed. + // The choice to ignore modal dialogs was made long ago. We cannot remember why the + // choice was made, but speculate that odd things can happen when keybindings are + // processed with modal dialogs open. For now, do not let key bindings get processed + // for modal dialogs. This can be changed in the future if needed. DockingDialog dialog = (DockingDialog) activeWindow; return !dialog.isModal(); } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/menu/DockingToolbarButton.java b/Ghidra/Framework/Docking/src/main/java/docking/menu/DialogToolbarButton.java similarity index 90% rename from Ghidra/Framework/Docking/src/main/java/docking/menu/DockingToolbarButton.java rename to Ghidra/Framework/Docking/src/main/java/docking/menu/DialogToolbarButton.java index 4a13154a12..5bf274dc97 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/menu/DockingToolbarButton.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/menu/DialogToolbarButton.java @@ -23,14 +23,17 @@ import docking.EmptyBorderToggleButton; import docking.action.*; /** - * Toolbar buttons for Dialogs. This class handles the peculiarities of DockableAction (see - * the override notes below). + * Toolbar buttons for Dialogs. + * + *

This class exists because dialog actions are not added to the regular tool's toolbars. This + * means that we have to create the dialog's toolbars outside of the tool. Thus, this class + * mimics how the tool's toolbar buttons are created. */ -public class DockingToolbarButton extends EmptyBorderToggleButton { +public class DialogToolbarButton extends EmptyBorderToggleButton { private DockingActionIf dockingAction; private ActionContextProvider contextProvider; - public DockingToolbarButton(DockingActionIf action, ActionContextProvider contextProvider) { + public DialogToolbarButton(DockingActionIf action, ActionContextProvider contextProvider) { super(action); this.contextProvider = contextProvider; setFocusable(false); diff --git a/Ghidra/Framework/Docking/src/main/java/docking/test/AbstractDockingTest.java b/Ghidra/Framework/Docking/src/main/java/docking/test/AbstractDockingTest.java index 1f21d15363..1f9a065ab7 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/test/AbstractDockingTest.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/test/AbstractDockingTest.java @@ -43,7 +43,7 @@ import docking.action.ToggleDockingActionIf; import docking.actions.DockingToolActions; import docking.dnd.GClipboard; import docking.framework.DockingApplicationConfiguration; -import docking.menu.DockingToolbarButton; +import docking.menu.DialogToolbarButton; import docking.widgets.MultiLineLabel; import docking.widgets.OptionDialog; import docking.widgets.filechooser.GhidraFileChooser; @@ -1430,9 +1430,9 @@ public abstract class AbstractDockingTest extends AbstractGenericTest { if (element instanceof JButton) { JButton button = (JButton) element; - if (button instanceof DockingToolbarButton) { + if (button instanceof DialogToolbarButton) { DockingActionIf dockingAction = - ((DockingToolbarButton) button).getDockingAction(); + ((DialogToolbarButton) button).getDockingAction(); if (dockingAction.getName().equals(name)) { return button; } diff --git a/Ghidra/Framework/Docking/src/test/java/ghidra/util/bean/EmptyBorderButtonTest.java b/Ghidra/Framework/Docking/src/test/java/ghidra/util/bean/EmptyBorderButtonTest.java index ec3dfa06f7..b808328006 100644 --- a/Ghidra/Framework/Docking/src/test/java/ghidra/util/bean/EmptyBorderButtonTest.java +++ b/Ghidra/Framework/Docking/src/test/java/ghidra/util/bean/EmptyBorderButtonTest.java @@ -25,7 +25,7 @@ import org.junit.Test; import docking.ActionContext; import docking.action.*; -import docking.menu.DockingToolbarButton; +import docking.menu.DialogToolbarButton; import docking.test.AbstractDockingTest; import docking.widgets.EmptyBorderButton; import resources.ResourceManager; @@ -146,13 +146,13 @@ public class EmptyBorderButtonTest extends AbstractDockingTest { action.setToolBarData(new ToolBarData(ResourceManager.getDefaultIcon())); action.setEnabled(false); - DockingToolbarButton button = new DockingToolbarButton(action, contextProvider); + DialogToolbarButton button = new DialogToolbarButton(action, contextProvider); assertTrue(!button.isEnabled()); action.setEnabled(true); assertTrue(button.isEnabled()); - button = new DockingToolbarButton(action, contextProvider); + button = new DialogToolbarButton(action, contextProvider); assertTrue(button.isEnabled()); action.setEnabled(false);