avoid triggering repeated layout passes in address chunking skins
What changed, and why it matters
This commit makes a small JavaFX UI tweak in three address-display components. It marks an internal 'TextFlow' layout node as 'unmanaged,' which stops it from participating in automatic layout calculations. The stated goal is to prevent repeated layout passes when addresses are shown in chunked groups. There is no indication this fixes a security vulnerability, and no exploit path is visible from the change.
No security action required. Treat as a normal UI performance fix.
Security signals we found
No security-relevant signal in diff
Change is purely UI layout/performance
No input validation, cryptography, networking, or privilege change
Evidence from the diff
The patch adds displayFlow.setManaged(false) in AddressLabelSkin, AddressTextFieldSkin, and AddressTreeTableCellSkin. In JavaFX, a managed node contributes to its parent’s layout bounds and triggers layout passes; an unmanaged node does not. By setting the decorative address-chunking TextFlow to unmanaged, the skins avoid recursive or redundant layout calculations. This is a performance/rendering correctness change, not a security boundary change.
Changed components
com.sparrowwallet.sparrow.control.AddressLabelSkincom.sparrowwallet.sparrow.control.AddressTextFieldSkincom.sparrowwallet.sparrow.control.AddressTreeTableCellSkinInspect captured patch +3 / −0
diff --git a/src/main/java/com/sparrowwallet/sparrow/control/AddressLabelSkin.java b/src/main/java/com/sparrowwallet/sparrow/control/AddressLabelSkin.java
index c5eec84..2f3312d 100644
--- a/src/main/java/com/sparrowwallet/sparrow/control/AddressLabelSkin.java
+++ b/src/main/java/com/sparrowwallet/sparrow/control/AddressLabelSkin.java
@@ -28,6 +28,7 @@ public class AddressLabelSkin extends LabelSkin {
super(control);
displayFlow = new TextFlow();
+ displayFlow.setManaged(false);
displayFlow.setMouseTransparent(true);
getChildren().addFirst(displayFlow);
diff --git a/src/main/java/com/sparrowwallet/sparrow/control/AddressTextFieldSkin.java b/src/main/java/com/sparrowwallet/sparrow/control/AddressTextFieldSkin.java
index 9b18beb..f211f96 100644
--- a/src/main/java/com/sparrowwallet/sparrow/control/AddressTextFieldSkin.java
+++ b/src/main/java/com/sparrowwallet/sparrow/control/AddressTextFieldSkin.java
@@ -37,6 +37,7 @@ public class AddressTextFieldSkin extends CustomTextFieldSkin {
super(control);
displayFlow = new TextFlow();
+ displayFlow.setManaged(false);
displayFlow.setMouseTransparent(true);
clip = new Rectangle();
diff --git a/src/main/java/com/sparrowwallet/sparrow/control/AddressTreeTableCellSkin.java b/src/main/java/com/sparrowwallet/sparrow/control/AddressTreeTableCellSkin.java
index 68168d2..f77e313 100644
--- a/src/main/java/com/sparrowwallet/sparrow/control/AddressTreeTableCellSkin.java
+++ b/src/main/java/com/sparrowwallet/sparrow/control/AddressTreeTableCellSkin.java
@@ -18,6 +18,7 @@ public class AddressTreeTableCellSkin<S, T> extends TreeTableCellSkin<S, T> {
super(cell);
displayFlow = new TextFlow();
+ displayFlow.setManaged(false);
displayFlow.setMouseTransparent(true);
displayFlow.setMinWidth(Region.USE_PREF_SIZE);
getChildren().add(displayFlow);
Why this scored 19/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.