flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aha...@apache.org
Subject [20/50] git commit: [flex-sdk] [refs/heads/master] - FIXED - FLEX-24502 Mobile optimized skins and item renderers don't show text when mirrored
Date Sat, 03 May 2014 14:34:34 GMT
FIXED - FLEX-24502 Mobile optimized skins and item renderers don't show text when mirrored


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/6a269c3a
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/6a269c3a
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/6a269c3a

Branch: refs/heads/master
Commit: 6a269c3aaedb8f271909b35834bd4ba832faa9f3
Parents: 332980d
Author: mamsellem <maurice.amsellem@systar.com>
Authored: Sat Mar 29 13:45:52 2014 +0100
Committer: mamsellem <maurice.amsellem@systar.com>
Committed: Sat Mar 29 13:45:52 2014 +0100

----------------------------------------------------------------------
 .../supportClasses/StyleableTextField.as        | 79 +++++++++++++++++++-
 1 file changed, 77 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/6a269c3a/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
b/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
index fd674de..1b74e1d 100644
--- a/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
+++ b/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
@@ -49,6 +49,7 @@ import mx.core.FlexGlobals;
 import mx.core.FlexTextField;
 import mx.core.IInvalidating;
 import mx.core.IVisualElement;
+import mx.core.LayoutDirection;
 import mx.core.UIComponent;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
@@ -214,6 +215,66 @@ public class StyleableTextField extends FlexTextField
             invalidateTightTextHeight = true;
             invalidateTextSizeFlag = true;
         }
+        validateTransformMatrix();
+    }
+
+    /**
+     *  @private
+     *  True if we've inherited layoutDirection="rtl".
+     *  (implementation largely inspired from UITextField)
+     */
+    private var mirror: Boolean = false;
+
+    //----------------------------------
+    //  x
+    //----------------------------------
+
+    private var _x: Number = 0;
+
+    /**
+     *  @private
+     */
+    override public function set x(value: Number): void
+    {
+        _x = value;
+        super.x = value;
+        validateTransformMatrix();
+    }
+
+    /**
+     *  @private
+     */
+    override public function get x(): Number
+    {
+           return (mirror) ? _x : super.x;
+    }
+
+    /**
+     *  @private
+     *  Update the transform.matrix based on the mirror flag.  This method must be
+     *  called when x, width, or layoutDirection changes.
+     */
+    private function validateTransformMatrix(): void
+    {
+        if (mirror) {
+            var mirrorMatrix: Matrix = this.transform.matrix;
+            // matrix a must be negative
+            if (mirrorMatrix.a > 0){
+                mirrorMatrix.a = -mirrorMatrix.a;
+            }
+            mirrorMatrix.tx = _x + width;
+            transform.matrix = mirrorMatrix;
+        }
+        else // layoutDirection changed, mirror=false, reset transform.matrix to its default
+        {
+            var defaultMatrix: Matrix = this.transform.matrix;
+            if (defaultMatrix.a < 0) {
+                defaultMatrix.a = -defaultMatrix.a;
+            }
+            defaultMatrix.tx = _x;
+            defaultMatrix.ty = y;
+            transform.matrix = defaultMatrix;
+        }
     }
     
     /**
@@ -1051,11 +1112,25 @@ public class StyleableTextField extends FlexTextField
     {
         if (invalidateStyleFlag)
         {
+            // compute mirror
+            const oldMirror: Boolean = mirror;
+            if (parent is IVisualElement)
+                mirror = IVisualElement(parent).layoutDirection == LayoutDirection.RTL;
+            if (mirror || oldMirror)
+                validateTransformMatrix();
+
             var align:String = getStyle("textAlign");
             if (align == "start")
                 align = TextFormatAlign.LEFT;
             if (align == "end")
                 align = TextFormatAlign.RIGHT;
+            // textalign must be mirrored as well
+            if (mirror){
+                if (align == TextFormatAlign.LEFT)
+                   align =TextFormatAlign.RIGHT;
+                else if (align == TextFormatAlign.RIGHT )
+                  align = TextFormatAlign.LEFT;
+            }
             textFormat.align = align;
             textFormat.font = getStyle("fontFamily");
             textFormat.bold = getStyle("fontWeight") == "bold";
@@ -1113,7 +1188,7 @@ public class StyleableTextField extends FlexTextField
             invalidateTightTextHeight = true;
         }
     }
-    
+
     /**
      *  @copy mx.core.UIComponent#getStyle()
      *
@@ -2164,7 +2239,7 @@ public class StyleableTextField extends FlexTextField
     mx_internal var leftMargin:Object;
     mx_internal var rightMargin:Object;
     
-    private static var supportedStyles:String = "textAlign fontFamily fontWeight fontStyle
color fontSize textDecoration textIndent leading letterSpacing"
+    private static const supportedStyles:Vector.<String> = new <String>["textAlign",
"fontFamily", "fontWeight", "fontStyle", "color", "fontSize"    , "textDecoration","textIndent"
,"leading" ,"letterSpacing" ,"layoutDirection"];
     
     private var invalidateStyleFlag:Boolean = true;
     


Mime
View raw message