diff options
author | Nicolas Roard <nicolasroard@google.com> | 2018-04-12 00:57:45 -0700 |
---|---|---|
committer | Nicolas Roard <nicolasroard@google.com> | 2018-04-12 01:41:43 -0700 |
commit | 5b160c7042953360b048c1c3a5523396113e9474 (patch) | |
tree | f0ea231e104acb83a2db7ed7caae5d8ed52c27cd | |
parent | 26dcc049d2f9987ddf1b84f2dd9aa308ce3922cc (diff) | |
download | sherpa-5b160c7042953360b048c1c3a5523396113e9474.tar.gz |
Fixed wrong wrap_content values in RTL
Test: added check 182 in sherpa
Fixes: 77672715
Change-Id: I82919d57272467b9cef7d793fbeb4d532d9f812f
-rw-r--r-- | solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java | 4 | ||||
-rw-r--r-- | solver/src/test/java/android/support/constraint/solver/ChainTest.java | 48 |
2 files changed, 48 insertions, 4 deletions
diff --git a/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java b/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java index 511e1c5..85aa836 100644 --- a/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java +++ b/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java @@ -2651,6 +2651,10 @@ public class ConstraintWidget { system.addGreaterThan(begin, beginTarget, beginAnchor.getMargin(), SolverVariable.STRENGTH_FIXED); system.addLowerThan(end, endTarget, -endAnchor.getMargin(), SolverVariable.STRENGTH_FIXED); } + + if (parentWrapContent) { + system.addGreaterThan(begin, parentMin, 0, SolverVariable.STRENGTH_FIXED); + } } if (parentWrapContent) { 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 d8c6c9a..a3fcf7b 100644 --- a/solver/src/test/java/android/support/constraint/solver/ChainTest.java +++ b/solver/src/test/java/android/support/constraint/solver/ChainTest.java @@ -15,10 +15,7 @@ */ package android.support.constraint.solver; -import android.support.constraint.solver.widgets.ConstraintAnchor; -import android.support.constraint.solver.widgets.ConstraintWidget; -import android.support.constraint.solver.widgets.ConstraintWidgetContainer; -import android.support.constraint.solver.widgets.Guideline; +import android.support.constraint.solver.widgets.*; import org.testng.annotations.Test; import java.util.ArrayList; @@ -28,6 +25,49 @@ import static org.testng.Assert.assertEquals; public class ChainTest { @Test + public void testBasicChainMatch() { + 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.connect(ConstraintAnchor.Type.TOP, root, ConstraintAnchor.Type.TOP); + B.connect(ConstraintAnchor.Type.TOP, root, ConstraintAnchor.Type.TOP); + C.connect(ConstraintAnchor.Type.TOP, root, ConstraintAnchor.Type.TOP); + + A.setHorizontalChainStyle(ConstraintWidget.CHAIN_SPREAD); + A.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT); + B.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT); + C.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT); + A.setBaselineDistance(8); + B.setBaselineDistance(8); + C.setBaselineDistance(8); + + root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD | Optimizer.OPTIMIZATION_CHAIN); + root.layout(); + System.out.println("A: " + A + " B: " + B + " C: " + C); + assertEquals(A.getLeft(), 0); + assertEquals(A.getRight(), 200); + assertEquals(B.getLeft(), 200); + assertEquals(B.getRight(), 400); + assertEquals(C.getLeft(), 400); + assertEquals(C.getRight(), 600); + } + + @Test public void testSpreadChainGone() { ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 600, 600); ConstraintWidget A = new ConstraintWidget(100, 20); |