From 01e844291fe0fcfb64bc69b876dedf89c7d5773a Mon Sep 17 00:00:00 2001 From: Nicolas Roard Date: Wed, 11 Apr 2018 13:45:04 -0700 Subject: Fixed issue 77754178 Test: Added check 181 in sherpa + ChainTest.testSpreadChainGone() Change-Id: I373c8171c00faaf1c7fa96ce3976c4cbfe4779f0 Fixes: 77754178 --- .../support/constraint/solver/widgets/Chain.java | 2 ++ .../support/constraint/solver/ChainTest.java | 34 ++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/solver/src/main/java/android/support/constraint/solver/widgets/Chain.java b/solver/src/main/java/android/support/constraint/solver/widgets/Chain.java index 4fb3a24..e8615fb 100644 --- a/solver/src/main/java/android/support/constraint/solver/widgets/Chain.java +++ b/solver/src/main/java/android/support/constraint/solver/widgets/Chain.java @@ -316,6 +316,8 @@ class Chain { SolverVariable beginTarget = beginAnchor.mTarget != null ? beginAnchor.mTarget.mSolverVariable : null; if (previousVisibleWidget != widget) { beginTarget = previousVisibleWidget.mListAnchors[offset + 1].mSolverVariable; + } else if (widget == firstVisibleWidget && previousVisibleWidget == widget) { + beginTarget = first.mListAnchors[offset].mTarget != null ? first.mListAnchors[offset].mTarget.mSolverVariable : null; } ConstraintAnchor beginNextAnchor = null; diff --git a/solver/src/test/java/android/support/constraint/solver/ChainTest.java b/solver/src/test/java/android/support/constraint/solver/ChainTest.java index 6b33d1a..d8c6c9a 100644 --- a/solver/src/test/java/android/support/constraint/solver/ChainTest.java +++ b/solver/src/test/java/android/support/constraint/solver/ChainTest.java @@ -27,6 +27,40 @@ import static org.testng.Assert.assertEquals; public class ChainTest { + @Test + public void testSpreadChainGone() { + ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 600, 600); + ConstraintWidget A = new ConstraintWidget(100, 20); + ConstraintWidget B = new ConstraintWidget(100, 20); + ConstraintWidget C = new ConstraintWidget(100, 20); + root.setDebugName("root"); + A.setDebugName("A"); + B.setDebugName("B"); + C.setDebugName("C"); + root.add(A); + root.add(B); + root.add(C); + + A.connect(ConstraintAnchor.Type.LEFT, root, ConstraintAnchor.Type.LEFT); + A.connect(ConstraintAnchor.Type.RIGHT, B, ConstraintAnchor.Type.LEFT); + B.connect(ConstraintAnchor.Type.LEFT, A, ConstraintAnchor.Type.RIGHT); + B.connect(ConstraintAnchor.Type.RIGHT, C, ConstraintAnchor.Type.LEFT); + C.connect(ConstraintAnchor.Type.LEFT, B, ConstraintAnchor.Type.RIGHT); + C.connect(ConstraintAnchor.Type.RIGHT, root, ConstraintAnchor.Type.RIGHT); + + A.setHorizontalChainStyle(ConstraintWidget.CHAIN_SPREAD); + A.setVisibility(ConstraintWidget.GONE); + + root.layout(); + System.out.println("A: " + A + " B: " + B + " C: " + C); + assertEquals(A.getLeft(), 0); + assertEquals(A.getRight(), 0); + assertEquals(B.getLeft(), 133); + assertEquals(B.getRight(), 233); + assertEquals(C.getLeft(), 367); + assertEquals(C.getRight(), 467); + } + @Test public void testPackChainGone() { ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 600, 600); -- cgit v1.2.3