Fix RTL direction layout for LinearLayout.
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / layouting / linear-layout-impl.cpp
index 9036731..6b91bc0 100644 (file)
@@ -144,6 +144,9 @@ void LinearLayout::MeasureHorizontal( MeasureSpec widthMeasureSpec, MeasureSpec
     MeasuredSize::State heightState;
   } childState = { MeasuredSize::State::MEASURED_SIZE_OK, MeasuredSize::State::MEASURED_SIZE_OK };
 
+  // Reset total length
+  mTotalLength = 0;
+
   // measure children, and determine if further resolution is required
   for( unsigned int i=0; i<GetChildCount(); ++i )
   {
@@ -276,12 +279,12 @@ void LinearLayout::LayoutHorizontal( LayoutLength left, LayoutLength top, Layout
   int start = 0;
   int dir = 1;
 
-  // In case of RTL, start drawing from the last child.
-  // @todo re-work to draw the first child from the right edge, and move leftwards.
-  // (Should have an alignment also)
+  // In case of RTL, start drawing from the last child and apply right alignment.
+  // @TODO Should we have also support Actor HorizontalAlignment|VerticalAlignment in general for LinearLayout?
   if( isLayoutRtl ) {
     start = count - 1;
     dir = -1;
+    childLeft = padding.start + right - left - mTotalLength;
   }
 
   for( unsigned int i = 0; i < count; i++)
@@ -318,6 +321,9 @@ void LinearLayout::MeasureVertical( MeasureSpec widthMeasureSpec, MeasureSpec he
     MeasuredSize::State heightState;
   } childState = { MeasuredSize::State::MEASURED_SIZE_OK, MeasuredSize::State::MEASURED_SIZE_OK };
 
+  // Reset total length
+  mTotalLength = 0;
+
   // measure children, and determine if further resolution is required
   for( unsigned int i=0; i<GetChildCount(); ++i )
   {