summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Roard <nicolasroard@google.com>2018-04-12 00:57:45 -0700
committerNicolas Roard <nicolasroard@google.com>2018-04-12 01:41:43 -0700
commit5b160c7042953360b048c1c3a5523396113e9474 (patch)
treef0ea231e104acb83a2db7ed7caae5d8ed52c27cd
parent26dcc049d2f9987ddf1b84f2dd9aa308ce3922cc (diff)
downloadsherpa-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.java4
-rw-r--r--solver/src/test/java/android/support/constraint/solver/ChainTest.java48
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);