summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Roard <nicolasroard@google.com>2018-04-11 13:45:04 -0700
committerNicolas Roard <nicolasroard@google.com>2018-04-11 14:30:39 -0700
commit01e844291fe0fcfb64bc69b876dedf89c7d5773a (patch)
treee274d08b3287ee2291e4a7fa97cf5386071d47ac
parentfc2b3a677298c422b210dd23892d0d16e7a9de2a (diff)
downloadsherpa-01e844291fe0fcfb64bc69b876dedf89c7d5773a.tar.gz
Fixed issue 77754178
Test: Added check 181 in sherpa + ChainTest.testSpreadChainGone() Change-Id: I373c8171c00faaf1c7fa96ce3976c4cbfe4779f0 Fixes: 77754178
-rw-r--r--solver/src/main/java/android/support/constraint/solver/widgets/Chain.java2
-rw-r--r--solver/src/test/java/android/support/constraint/solver/ChainTest.java34
2 files changed, 36 insertions, 0 deletions
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
@@ -28,6 +28,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);
ConstraintWidget A = new ConstraintWidget(100, 20);