diff --git a/Ghidra/Framework/Docking/src/main/java/docking/DockingWindowManager.java b/Ghidra/Framework/Docking/src/main/java/docking/DockingWindowManager.java index f474ffb627..7ea61f3438 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/DockingWindowManager.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/DockingWindowManager.java @@ -654,6 +654,9 @@ public class DockingWindowManager implements PropertyChangeListener, Placeholder * @param provider the provider to be removed. */ public void removeComponent(ComponentProvider provider) { + if (provider == defaultProvider) { + defaultProvider = null; + } placeholderManager.removeComponent(provider); } @@ -822,6 +825,7 @@ public class DockingWindowManager implements PropertyChangeListener, Placeholder setNextFocusPlaceholder(null); removeInstance(this); root = null; + lastActiveWindow = null; } void showComponent(ComponentProvider provider, boolean visibleState, boolean shouldEmphasize) { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/StatusBar.java b/Ghidra/Framework/Docking/src/main/java/docking/StatusBar.java index d743a87ff3..1089a04623 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/StatusBar.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/StatusBar.java @@ -369,7 +369,7 @@ public class StatusBar extends JPanel { } } - class StatusPanel extends JPanel { + static class StatusPanel extends JPanel { Dimension prefSize; StatusPanel(Component c, boolean addBorder) { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginTool.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginTool.java index 039035a1ba..a53fd7c263 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginTool.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginTool.java @@ -449,7 +449,7 @@ public abstract class PluginTool extends AbstractDockingTool { } winMgr.setVisible(false); - eventMgr.clearLastEvents(); + eventMgr.clear(); pluginMgr.dispose(); toolActions.removeActions(ToolConstants.TOOL_OWNER); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/mgr/EventManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/mgr/EventManager.java index 62c68e9aac..c4b53e9c1e 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/mgr/EventManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/mgr/EventManager.java @@ -236,6 +236,18 @@ public class EventManager { lastEventsByType.clear(); } + /** + * Clear last plugin events fired, current event, listeners, etc. + */ + public void clear() { + allEventListeners.clear(); + toolListeners.clear(); + currentEvent = null; + lastEventsByType.clear(); + listenersByEventType.clear(); + eventQ.clear(); + } + /** * Return an array of the last plugin events fired. EventManager maps the event class to the * last event fired.