From a52d2244f4ab3555196b4561a3c192f8372d6ebc Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Mon, 22 May 2023 13:16:02 -0400 Subject: [PATCH] GP-3223 Allow launching Function Definition Editor from structure/union editor. --- .../compositeeditor/CompositeEditorModel.java | 3 ++- .../core/compositeeditor/EditComponentAction.java | 15 ++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompositeEditorModel.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompositeEditorModel.java index 4a8b7bbf1d..7b08494749 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompositeEditorModel.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompositeEditorModel.java @@ -941,7 +941,8 @@ public abstract class CompositeEditorModel extends CompositeViewerModel implemen } return ((baseDt != null) && !(baseDt instanceof BuiltInDataType) && !(baseDt instanceof MissingBuiltInDataType) && - ((baseDt instanceof Structure) || baseDt instanceof Union || baseDt instanceof Enum)); + ((baseDt instanceof Structure) || (baseDt instanceof Union) || + (baseDt instanceof Enum) || (baseDt instanceof FunctionDefinition))); } @Override diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/EditComponentAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/EditComponentAction.java index aa0f7494e5..e7473be3d0 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/EditComponentAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/EditComponentAction.java @@ -19,7 +19,6 @@ import docking.ActionContext; import ghidra.app.plugin.core.datamgr.util.DataTypeUtils; import ghidra.app.services.DataTypeManagerService; import ghidra.program.model.data.*; -import ghidra.program.model.data.Enum; /** * Action for use in the composite data type editor. @@ -49,17 +48,15 @@ public class EditComponentAction extends CompositeEditorTableAction { return; } + if (!model.isEditComponentAllowed()) { + model.setStatus("Can only edit a structure, union, enum or function-definition."); + return; + } + DataTypeComponent comp = model.getComponent(row); DataType clickedType = comp.getDataType(); DataType dt = DataTypeUtils.getBaseDataType(clickedType); - boolean isEditableType = - (dt instanceof Structure) || (dt instanceof Union) || (dt instanceof Enum); - if (isEditableType) { - edit(dt, clickedType.getName()); - } - else { - model.setStatus("Can only edit a structure, union or enum."); - } + edit(dt, clickedType.getName()); requestTableFocus(); }