diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/AnalyzeStackRefsAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/AnalyzeStackRefsAction.java index 015cc3aa00..d9ce4d025a 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/AnalyzeStackRefsAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/AnalyzeStackRefsAction.java @@ -25,6 +25,7 @@ import ghidra.app.context.ListingContextAction; import ghidra.app.util.HelpTopics; import ghidra.framework.cmd.BackgroundCommand; import ghidra.framework.options.Options; +import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressSet; import ghidra.program.model.lang.GhidraLanguagePropertyKeys; import ghidra.program.model.listing.Function; @@ -118,10 +119,11 @@ class AnalyzeStackRefsAction extends ListingContextAction { if (context.hasSelection()) { return true; } - Function func = funcPlugin.getFunction(context); - if (func != null) { - return !func.isExternal(); + Program program = context.getProgram(); + Address addr = context.getAddress(); + if (program == null || addr == null) { + return false; } - return false; + return program.getListing().getFunctionContaining(addr) != null; } } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/AboutProgramPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/AboutProgramPlugin.java index f44147d2b6..830b13d6dc 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/AboutProgramPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/AboutProgramPlugin.java @@ -52,7 +52,7 @@ import ghidra.util.HelpLocation; //@formatter:on public class AboutProgramPlugin extends Plugin implements FrontEndable { public final static String PLUGIN_NAME = "AboutProgramPlugin"; - public final static String ACTION_NAME = "About program"; + public final static String ACTION_NAME = "About Program"; private DockingAction aboutAction; @@ -87,7 +87,8 @@ public class AboutProgramPlugin extends Plugin implements FrontEndable { return context.getFileCount() == 1 && context.getFolderCount() == 0; } }; - aboutAction.setPopupMenuData(new MenuData(new String[] { "About..." }, null, "AAA")); + aboutAction.setPopupMenuData( + new MenuData(new String[] { ACTION_NAME }, null, "AAA")); aboutAction.setEnabled(true); } @@ -101,20 +102,17 @@ public class AboutProgramPlugin extends Plugin implements FrontEndable { @Override public boolean isValidContext(ActionContext context) { - updateMenuName(context); - return super.isValidContext(context); - } - - private void updateMenuName(ActionContext context) { - if (context instanceof ProgramActionContext) { + if (super.isValidContext(context)) { ProgramActionContext pac = (ProgramActionContext) context; Program program = pac.getProgram(); - String menuName = "About " + program.getDomainFile().getName(); - getMenuBarData().setMenuItemName(menuName); - } - else { - getMenuBarData().setMenuItemName(ACTION_NAME); + if (program != null) { + String menuName = "About " + program.getDomainFile().getName() + "..."; + getMenuBarData().setMenuItemName(menuName); + return true; + } } + getMenuBarData().setMenuItemName(ACTION_NAME); + return false; } }; aboutAction.setSupportsDefaultToolContext(true); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java index 68422a13dc..7f2278f9b4 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java @@ -659,19 +659,11 @@ public class ProgramManagerPlugin extends Plugin implements ProgramManager { Program p = programMgr.getCurrentProgram(); updateCloseAction(p); updateProgramOptionsAction(p); - updateSaveAction(p); - updateSaveAsAction(p); + updateProgramActions(); closeAllAction.setEnabled(p != null); optionsAction.setEnabled(p != null); Program[] programList = programMgr.getAllPrograms(); closeOthersAction.setEnabled(programList.length > 1); - saveAllAction.setEnabled(false); - for (Program element : programList) { - if (element.isChanged()) { - saveAllAction.setEnabled(true); - break; - } - } tool.contextChanged(null); } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/RedoAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/RedoAction.java index 51cd59f646..7aff46df1a 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/RedoAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/RedoAction.java @@ -19,7 +19,6 @@ import java.io.IOException; import javax.swing.Icon; -import docking.ActionContext; import docking.action.*; import docking.tool.ToolConstants; import ghidra.app.context.ProgramActionContext; @@ -93,15 +92,6 @@ public class RedoAction extends ProgramContextAction { } - @Override - public boolean isValidContext(ActionContext context) { - if (!(context instanceof ProgramActionContext)) { - getMenuBarData().setMenuItemName("Redo "); - setDescription(""); - } - return super.isValidContext(context); - } - @Override protected boolean isEnabledForContext(ProgramActionContext context) { Program program = context.getProgram(); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/UndoAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/UndoAction.java index 19245fc5be..b9431e1ba2 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/UndoAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/UndoAction.java @@ -19,7 +19,6 @@ import java.io.IOException; import javax.swing.Icon; -import docking.ActionContext; import docking.action.*; import docking.tool.ToolConstants; import ghidra.app.context.ProgramActionContext; @@ -99,15 +98,6 @@ public class UndoAction extends ProgramContextAction { } } - @Override - public boolean isValidContext(ActionContext context) { - if (!(context instanceof ProgramActionContext)) { - getMenuBarData().setMenuItemName("Undo "); - setDescription(""); - } - return super.isValidContext(context); - } - @Override protected boolean isEnabledForContext(ProgramActionContext context) { Program program = context.getProgram();