From e0aae029a229e8cb67c4d6f4668ab698b320b96d Mon Sep 17 00:00:00 2001 From: dragonmacher <48328597+dragonmacher@users.noreply.github.com> Date: Fri, 21 Aug 2026 19:13:53 -0400 Subject: [PATCH] GP-7156 - Added wrapping to grouped array values --- .../core/bookmark/CreateBookmarkDialog.java | 2 +- .../plugin/core/data/CreateArrayAction.java | 2 +- .../viewer/field/ArrayValuesFieldFactory.java | 19 ++++++++++--------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/bookmark/CreateBookmarkDialog.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/bookmark/CreateBookmarkDialog.java index f02fd816de..1b04fc04d5 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/bookmark/CreateBookmarkDialog.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/bookmark/CreateBookmarkDialog.java @@ -61,7 +61,7 @@ public class CreateBookmarkDialog extends DialogComponentProvider { initializeDescription(cu); - setFocusComponent(categoryComboBox); + setFocusComponent(descriptionTextField); setHelpLocation(new HelpLocation("BookmarkPlugin", "CreateBookmarkDialog")); } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateArrayAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateArrayAction.java index 49226e9897..b2dbc17a80 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateArrayAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/data/CreateArrayAction.java @@ -39,7 +39,7 @@ class CreateArrayAction extends ListingContextAction { private static final KeyStroke DEFAULT_KEY_STROKE = KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, 0); private static final String[] CREATE_ARRAY_POPUP_MENU = - new String[] { "Data", "Create Array..." }; + new String[] { "Data", "Create Array" }; private DataPlugin plugin; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/ArrayValuesFieldFactory.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/ArrayValuesFieldFactory.java index b8ce501edc..886556e985 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/ArrayValuesFieldFactory.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/ArrayValuesFieldFactory.java @@ -21,7 +21,6 @@ import java.util.List; import docking.widgets.fieldpanel.field.*; import docking.widgets.fieldpanel.support.FieldLocation; -import docking.widgets.fieldpanel.support.FieldUtils; import docking.widgets.fieldpanel.support.RowColLocation; import ghidra.app.util.ListingHighlightProvider; import ghidra.app.util.viewer.format.FieldFormatModel; @@ -103,16 +102,17 @@ public class ArrayValuesFieldFactory extends FieldFactory { List elements = new ArrayList<>(); for (int i = 0; i < itemCount; i++) { - Data child = parent.getComponent(index++); + Data child = parent.getComponent(index); boolean isLastItem = isLastLine && (i == itemCount - 1); String value = getDisplayValue(child, !isLastItem); AttributedString as = new AttributedString(value, ListingColors.ARRAY_VALUES, getMetrics()); TextFieldElement element = new TextFieldElement(as, i, 0); - elements.addAll(FieldUtils.wrap(element, width, false)); + elements.add(element); } + return ListingTextField.createPackedTextField(this, proxy, - elements.toArray(new FieldElement[0]), startX + varWidth, width, Integer.MAX_VALUE, + elements.toArray(new FieldElement[0]), startX + varWidth, width, valuesPerLine, hlProvider); } @@ -120,11 +120,12 @@ public class ArrayValuesFieldFactory extends FieldFactory { private String getDisplayValue(Data data, boolean addDelimeter) { DataType dt = data.getDataType(); int minLength = data.getLength() * 3 + 1; // this just seems a decent minimum size - StringBuffer buf = new StringBuffer(dt.getRepresentation(data, data, data.getLength())); - if (buf.length() < minLength) { - for (int i = buf.length(); i < minLength; i++) { - buf.insert(0, ' '); - } + String representation = dt.getRepresentation(data, data, data.getLength()); + StringBuilder buf = new StringBuilder(representation); + + // pad to minimum length for readability + for (int i = buf.length(); i < minLength; i++) { + buf.insert(0, ' '); } if (addDelimeter) { buf.append(',');