From 847dfa5d29701a875bf236921ba27bceebbaee9f Mon Sep 17 00:00:00 2001 From: dragonmacher <48328597+dragonmacher@users.noreply.github.com> Date: Fri, 7 Jun 2024 13:06:27 -0400 Subject: [PATCH] GP-4550 - Fixed filter in the data type chooser dialog --- .../datamgr/tree/DataTypeArchiveGTree.java | 24 +++++++++++++++++++ .../datamgr/util/DataTypeChooserDialog.java | 4 +++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/tree/DataTypeArchiveGTree.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/tree/DataTypeArchiveGTree.java index 72e3f3b517..af096d8d46 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/tree/DataTypeArchiveGTree.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/tree/DataTypeArchiveGTree.java @@ -178,6 +178,30 @@ public class DataTypeArchiveGTree extends GTree { reloadTree(); } + /** + * Signals to this tree that it should configure itself for use inside of a widget that allows + * the user to choose a data type. + */ + public void updateFilterForChoosingDataType() { + + // Only filter on the name so that any extra display text will not cause a filter failure + // when attempting to pick a type by its name. + boolean filterOnNameOnly = true; + boolean includeMembers = false; + + DefaultDtTreeDataTransformer transformer; + if (includeMembers) { + transformer = new DataTypeTransformer(filterOnNameOnly); + } + else { + transformer = new DefaultDtTreeDataTransformer(filterOnNameOnly); + } + + setDataTransformer(transformer); + + reloadTree(); + } + public Program getProgram() { return plugin.getProgram(); } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/util/DataTypeChooserDialog.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/util/DataTypeChooserDialog.java index b4edcb75e8..681fac8452 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/util/DataTypeChooserDialog.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/util/DataTypeChooserDialog.java @@ -56,7 +56,9 @@ public class DataTypeChooserDialog extends DialogComponentProvider { super("Data Type Chooser", true, true, true, false); tree = new DataTypeArchiveGTree(plugin); - tree.setEditable(isFilterEditable); + + tree.setEditable(false); + tree.updateFilterForChoosingDataType(); tree.addGTreeSelectionListener(e -> setOkEnabled(getSelectedNode() != null));