diff --git a/Ghidra/Features/Base/src/main/help/help/topics/DataTypeManagerPlugin/data_type_manager_description.htm b/Ghidra/Features/Base/src/main/help/help/topics/DataTypeManagerPlugin/data_type_manager_description.htm index 69b7c23815..0b88a58314 100644 --- a/Ghidra/Features/Base/src/main/help/help/topics/DataTypeManagerPlugin/data_type_manager_description.htm +++ b/Ghidra/Features/Base/src/main/help/help/topics/DataTypeManagerPlugin/data_type_manager_description.htm @@ -896,9 +896,10 @@ alt=""> Pointer to XYZ. A new pointer will be created to the XYZ data type in the same category as the original data type.*

-

*If you create a typedef or - pointer to a data type in the Built-in Data Type Manager, the newly created type - will be placed in program's data type manager at the root category.

+

*A pointer will always be created + within the same category where the base datatype is defined. When defining a + pointer or typedef for a selected datatype from the Built-in Data Type Manager + it will be created within the root category of the active program's datatype manager.

Structures can also be created directly in the Listing view. See dataTypeManagerBox; + private JTextField categoryField; private boolean isCancelled; private final TreePath selectedTreePath; @@ -96,14 +94,15 @@ public class CreateTypeDefDialog extends DialogComponentProvider { dataTypeEditor.setDefaultSelectedTreePath(selectedTreePath); - dataTypeManagerBox = new GhidraComboBox<>(); - dataTypeManagerBox - .setRenderer(GComboBoxCellRenderer.createDefaultTextRenderer(dtm -> dtm.getName())); - dataTypeManagerBox.addToModel(managers); - dataTypeManagerBox.setSelectedItem(defaultDTM); + categoryField = new JTextField(24); + categoryField.setEditable(false); + categoryField.setName("Category"); - panel.add(new GLabel("Archive:")); - panel.add(dataTypeManagerBox); + String archiveName = category.getDataTypeManager().getName(); + categoryField.setText(archiveName + category.getCategoryPath().getPath()); + + panel.add(new GLabel("Category:")); + panel.add(categoryField); panel.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); @@ -162,12 +161,6 @@ public class CreateTypeDefDialog extends DialogComponentProvider { return; } - DataTypeManager manager = (DataTypeManager) dataTypeManagerBox.getSelectedItem(); - if (manager == null) { - setStatusText("Must select an archive", MessageType.ERROR); - return; - } - clearStatusText(); close(); } @@ -198,7 +191,4 @@ public class CreateTypeDefDialog extends DialogComponentProvider { return dataType; } - DataTypeManager getDataTypeManager() { - return (DataTypeManager) dataTypeManagerBox.getSelectedItem(); - } } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/actions/CreateTypeDefFromDialogAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/actions/CreateTypeDefFromDialogAction.java index b2bf7a7223..e4fd4ef5fd 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/actions/CreateTypeDefFromDialogAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/actions/CreateTypeDefFromDialogAction.java @@ -53,7 +53,7 @@ public class CreateTypeDefFromDialogAction extends AbstractTypeDefAction { String name = dialog.getTypeDefName(); DataType dataType = dialog.getDataType(); - DataTypeManager dataTypeManager = dialog.getDataTypeManager(); + DataTypeManager dataTypeManager = category.getDataTypeManager(); final DataTypeArchiveGTree gTree = (DataTypeArchiveGTree) context.getContextObject(); CategoryPath categoryPath = category.getCategoryPath();