Fix sizing of non strech items

Summary:
Fixes the sizing of items so that under most scenarios it calcultes its height by it's content for non exact measurings. This introduces a new useLegacyStretchBehaviour flag on the config to opt out of this change as it is breaking.

See facebook/yoga#505
Closes https://github.com/facebook/yoga/pull/506

Reviewed By: astreet

Differential Revision: D4954016

Pulled By: emilsjolander

fbshipit-source-id: d28bd5d174cd76951fb94df85e3b0cfab7f81ff7
This commit is contained in:
Lukas Wöhrl
2017-04-28 06:13:51 -07:00
committed by Facebook Github Bot
parent e3dbef7cbd
commit 203577724e
25 changed files with 635 additions and 37 deletions

View File

@@ -56,4 +56,15 @@ public class YogaConfig {
public void setPointScaleFactor(float pixelsInPoint) {
jni_YGConfigSetPointScaleFactor(mNativePointer, pixelsInPoint);
}
private native void jni_YGConfigSetUseLegacyStretchBehaviour(long nativePointer, boolean useLegacyStretchBehaviour);
/**
* Yoga previously had an error where containers would take the maximum space possible instead of the minimum
* like they are supposed to. In practice this resulted in implicit behaviour similar to align-self: stretch;
* Because this was such a long-standing bug we must allow legacy users to switch back to this behaviour.
*/
public void setUseLegacyStretchBehaviour(boolean useLegacyStretchBehaviour) {
jni_YGConfigSetUseLegacyStretchBehaviour(mNativePointer, useLegacyStretchBehaviour);
}
}

View File

@@ -13,8 +13,7 @@ import com.facebook.proguard.annotations.DoNotStrip;
@DoNotStrip
public enum YogaExperimentalFeature {
WEB_FLEX_BASIS(0),
MIN_FLEX_FIX(1);
WEB_FLEX_BASIS(0);
private int mIntValue;
@@ -29,7 +28,6 @@ public enum YogaExperimentalFeature {
public static YogaExperimentalFeature fromInt(int value) {
switch (value) {
case 0: return WEB_FLEX_BASIS;
case 1: return MIN_FLEX_FIX;
default: throw new IllegalArgumentException("Unknown enum value: " + value);
}
}