GP-1981 added check for theme changes when exiting tool. Fixed

FrontEndTool's close method. It was cheating before
This commit is contained in:
ghidragon
2022-09-19 16:32:41 -04:00
parent abe31c5a95
commit b2d16ab982
4 changed files with 16 additions and 4 deletions
@@ -429,7 +429,7 @@ public class AnalyzeAllOpenProgramsTaskTest extends AbstractGhidraHeadedIntegrat
@Override
public void close() {
runSwing(super::close);
runSwing(() -> super.close());
}
}
@@ -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;
}
}
@@ -352,7 +352,7 @@ public class FrontEndTool extends PluginTool implements OptionsChangeListener {
@Override
public void close() {
exit();
close(true);
}
/**
@@ -1119,10 +1119,13 @@ public abstract class PluginTool extends AbstractDockingTool {
* <LI>notify the project tool services that this tool is going away.
* </OL>
*/
@Override
public void close() {
if (canClose(false) && pluginMgr.saveData()) {
close(false);
}
protected void close(boolean isExiting) {
if (canClose(isExiting) && pluginMgr.saveData()) {
doClose();
}
}