@@ -76,6 +76,7 @@ void setFromDynamic(Dynamic dynamic) {
76
76
}
77
77
78
78
private final MutableYogaValue mTempYogaValue ;
79
+ private final Dynamic [] mPosition = new Dynamic [Spacing .INLINE_START + 1 ];
79
80
80
81
public LayoutShadowNode () {
81
82
mTempYogaValue = new MutableYogaValue ();
@@ -786,15 +787,62 @@ public void setPositionValues(int index, Dynamic position) {
786
787
Spacing .TOP ,
787
788
Spacing .BOTTOM ,
788
789
Spacing .ALL ,
789
- Spacing .VERTICAL ,
790
- Spacing .BOTTOM ,
791
- Spacing .TOP ,
792
- Spacing .HORIZONTAL ,
793
- Spacing .START ,
794
- Spacing .END
790
+ Spacing .BLOCK ,
791
+ Spacing .BLOCK_END ,
792
+ Spacing .BLOCK_START ,
793
+ Spacing .INLINE ,
794
+ Spacing .INLINE_END ,
795
+ Spacing .INLINE_START
795
796
};
796
797
797
- int spacingType = maybeTransformLeftRightToStartEnd (POSITION_SPACING_TYPES [index ]);
798
+ mPosition [POSITION_SPACING_TYPES [index ]] = position ;
799
+ updatePositionValues ();
800
+ }
801
+
802
+ private void updatePositionValues () {
803
+ setYogaPosition (Spacing .TOP , mPosition [Spacing .TOP ]);
804
+ setYogaPosition (Spacing .BOTTOM , mPosition [Spacing .BOTTOM ]);
805
+ setYogaPosition (Spacing .START , mPosition [Spacing .START ]);
806
+ setYogaPosition (Spacing .END , mPosition [Spacing .END ]);
807
+
808
+ if (!I18nUtil .getInstance ().doLeftAndRightSwapInRTL (getThemedContext ())) {
809
+ setYogaPosition (Spacing .LEFT , mPosition [Spacing .LEFT ]);
810
+ setYogaPosition (Spacing .RIGHT , mPosition [Spacing .RIGHT ]);
811
+ } else {
812
+ setYogaPosition (Spacing .START , mPosition [Spacing .LEFT ]);
813
+ setYogaPosition (Spacing .END , mPosition [Spacing .RIGHT ]);
814
+ }
815
+
816
+ // Aliases with precedence
817
+ if (mPosition [Spacing .ALL ] != null && !mPosition [Spacing .ALL ].isNull ()) {
818
+ setYogaPosition (Spacing .ALL , mPosition [Spacing .ALL ]);
819
+ }
820
+ if (mPosition [Spacing .BLOCK ] != null && !mPosition [Spacing .BLOCK ].isNull ()) {
821
+ setYogaPosition (Spacing .VERTICAL , mPosition [Spacing .BLOCK ]);
822
+ }
823
+ if (mPosition [Spacing .INLINE ] != null && !mPosition [Spacing .INLINE ].isNull ()) {
824
+ setYogaPosition (Spacing .HORIZONTAL , mPosition [Spacing .INLINE ]);
825
+ }
826
+ if (mPosition [Spacing .INLINE_END ] != null && !mPosition [Spacing .INLINE_END ].isNull ()) {
827
+ setYogaPosition (Spacing .END , mPosition [Spacing .INLINE_END ]);
828
+ }
829
+ if (mPosition [Spacing .INLINE_START ] != null && !mPosition [Spacing .INLINE_START ].isNull ()) {
830
+ setYogaPosition (Spacing .START , mPosition [Spacing .INLINE_START ]);
831
+ }
832
+
833
+ // Aliases without precedence
834
+ if (mPosition [Spacing .BOTTOM ] == null || mPosition [Spacing .BOTTOM ].isNull ()) {
835
+ setYogaPosition (Spacing .BOTTOM , mPosition [Spacing .BLOCK_END ]);
836
+ }
837
+ if (mPosition [Spacing .TOP ] == null || mPosition [Spacing .TOP ].isNull ()) {
838
+ setYogaPosition (Spacing .TOP , mPosition [Spacing .BLOCK_START ]);
839
+ }
840
+ }
841
+
842
+ private void setYogaPosition (int spacingType , Dynamic position ) {
843
+ if (position == null ){
844
+ return ;
845
+ }
798
846
799
847
mTempYogaValue .setFromDynamic (position );
800
848
switch (mTempYogaValue .unit ) {
0 commit comments