diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalyzeAllOpenProgramsTaskTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalyzeAllOpenProgramsTaskTest.java index f9c136496b..0a706caae9 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalyzeAllOpenProgramsTaskTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalyzeAllOpenProgramsTaskTest.java @@ -429,7 +429,7 @@ public class AnalyzeAllOpenProgramsTaskTest extends AbstractGhidraHeadedIntegrat @Override public void close() { - runSwing(super::close); + runSwing(() -> super.close()); } } diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/app/plugin/gui/ThemeManagerPlugin.java b/Ghidra/Framework/Project/src/main/java/ghidra/app/plugin/gui/ThemeManagerPlugin.java index 764974e0e3..33da983020 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/app/plugin/gui/ThemeManagerPlugin.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/app/plugin/gui/ThemeManagerPlugin.java @@ -18,6 +18,7 @@ package ghidra.app.plugin.gui; import docking.action.builder.ActionBuilder; import docking.theme.gui.ThemeDialog; import docking.theme.gui.ThemeUtils; +import generic.theme.Gui; import ghidra.app.plugin.PluginCategoryNames; import ghidra.framework.main.ApplicationLevelOnlyPlugin; import ghidra.framework.main.UtilityPluginPackage; @@ -85,4 +86,12 @@ public class ThemeManagerPlugin extends Plugin implements ApplicationLevelOnlyPl tool.setMenuGroup(new String[] { "Edit", themeSubMenu }, group, "2"); } + + @Override + protected boolean canClose() { + if (Gui.hasThemeChanges()) { + return ThemeUtils.askToSaveThemeChanges(); + } + return true; + } } diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndTool.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndTool.java index 57d5b4b181..2441d97236 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndTool.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndTool.java @@ -352,7 +352,7 @@ public class FrontEndTool extends PluginTool implements OptionsChangeListener { @Override public void close() { - exit(); + close(true); } /** 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 6066598315..ac51962f6f 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 @@ -1119,10 +1119,13 @@ public abstract class PluginTool extends AbstractDockingTool { *
  • notify the project tool services that this tool is going away. * */ - @Override public void close() { - if (canClose(false) && pluginMgr.saveData()) { + close(false); + } + + protected void close(boolean isExiting) { + if (canClose(isExiting) && pluginMgr.saveData()) { doClose(); } }