Remove last commit of transformcontroller

--- src/aerys/minko/scene/controller/TransformController.as
+++ src/aerys/minko/scene/controller/TransformController.as
@@ -1,513 +1,513 @@
 package aerys.minko.scene.controller
 {
-    import flash.display.BitmapData;
-    import flash.utils.Dictionary;
-
-    import aerys.minko.ns.minko_math;
-    import aerys.minko.render.Viewport;
-    import aerys.minko.scene.node.Group;
-    import aerys.minko.scene.node.ISceneNode;
-    import aerys.minko.scene.node.Scene;
-    import aerys.minko.type.Signal;
-    import aerys.minko.type.math.Matrix4x4;
-
-    use namespace minko_math;
-
-    /**
-     * The TransformController handles the batched update of all the local to world matrices
-     * of a sub-scene. As such, it will only be active on the root node of a sub-scene and will
-     * automatically disable itself on other nodes.
-     *
-     * @author Jean-Marc Le Roux
-     *
-     */
-    public final class TransformController extends AbstractController
-    {
-
-        private static const FLAG_NONE                      : uint  = 0;
-        private static const FLAG_INIT_LOCAL_TO_WORLD       : uint  = 1;
-        private static const FLAG_INIT_WORLD_TO_LOCAL       : uint  = 2;
-        private static const FLAG_SYNCHRONIZE_TRANSFORMS    : uint  = 4;
-        private static const FLAG_LOCK_TRANSFORMS           : uint  = 8;
-
-        private var _target					: ISceneNode;
-
-        private var _invalidList			: Boolean;
-
-        private var _nodeToId				: Dictionary;
-        private var _idToNode				: Vector.<ISceneNode>
-        private var _transforms				: Vector.<Matrix4x4>;
-        private var _flags	                : Vector.<uint>;
-        private var _localToWorldTransforms : Vector.<Matrix4x4>;
-        private var _worldToLocalTransforms : Vector.<Matrix4x4>;
-        private var _numChildren			: Vector.<uint>;
-        private var _firstChildId			: Vector.<uint>;
-        private var _parentId				: Vector.<int>;
-
-        public function TransformController()
-        {
-            super();
-
-            initialize();
-        }
-
-        private function initialize() : void
-        {
-            _transforms = new <Matrix4x4>[];
-            _flags = new <uint>[];
-            _localToWorldTransforms = new <Matrix4x4>[];
-            _worldToLocalTransforms = new <Matrix4x4>[];
-            _numChildren = new <uint>[];
-            _firstChildId = new <uint>[];
-            _idToNode = new <ISceneNode>[];
-            _parentId = new <int>[];
-
-            targetAdded.add(targetAddedHandler);
-            targetRemoved.add(targetRemovedHandler);
-        }
-
-        private function renderingBeginHandler(scene		: Scene,
-                                               viewport		: Viewport,
-                                               destination	: BitmapData,
-                                               time			: Number) : void
-        {
-            if (_invalidList)
-                updateTransformsList();
-
-            if (_transforms.length)
-                updateLocalToWorld();
-        }
-
-        private function updateRootLocalToWorld(nodeId : uint = 0) : void
-        {
-            var rootLocalToWorld	: Matrix4x4		= _localToWorldTransforms[nodeId];
-            var rootTransform		: Matrix4x4		= _transforms[nodeId];
-            var root				: ISceneNode	= _idToNode[nodeId];
-            var rootFlags           : uint          = _flags[nodeId];
-
-            if (rootTransform._hasChanged || !(rootFlags & FLAG_INIT_LOCAL_TO_WORLD))
-            {
-                if (rootFlags & FLAG_LOCK_TRANSFORMS)
-                    rootLocalToWorld.lock();
-
-                rootLocalToWorld.copyFrom(rootTransform);
-
-                if (nodeId != 0)
-                    rootLocalToWorld.append(_localToWorldTransforms[_parentId[nodeId]]);
-
-                if (rootFlags & FLAG_LOCK_TRANSFORMS)
-                    rootLocalToWorld.unlock();
-
-                rootTransform._hasChanged = false;
-                rootFlags = (rootFlags | FLAG_INIT_LOCAL_TO_WORLD) & ~FLAG_INIT_WORLD_TO_LOCAL;
-
-                if (rootFlags & FLAG_SYNCHRONIZE_TRANSFORMS)
-                {
-                    var rootWorldToLocal : Matrix4x4 = _worldToLocalTransforms[nodeId]
-                        || (_worldToLocalTransforms[nodeId] = new Matrix4x4());
-
-                    if (rootFlags & FLAG_LOCK_TRANSFORMS)
-                        rootWorldToLocal.lock();
-
-                    rootWorldToLocal.copyFrom(rootLocalToWorld).invert();
-                    rootFlags |= FLAG_INIT_WORLD_TO_LOCAL;
-
-                    if (rootFlags & FLAG_LOCK_TRANSFORMS)
-                        rootWorldToLocal.unlock();
-                }
-
-                _flags[nodeId] = rootFlags;
-
-                var localToWorldTransformChanged : Signal = root.localToWorldTransformChanged;
-
-                if (root.localToWorldTransformChanged.enabled)
-                    root.localToWorldTransformChanged.execute(root, rootLocalToWorld);
-            }
-        }
-
-        private function updateLocalToWorld(nodeId : uint = 0) : void
-        {
-            var numNodes 	: uint 	= _transforms.length;
-            var subtreeMax  : uint  = nodeId;
-
-            updateRootLocalToWorld(nodeId);
-
-            while (nodeId < numNodes)
-            {
-                var localToWorld 	: Matrix4x4	= _localToWorldTransforms[nodeId];
-                var numChildren		: uint		= _numChildren[nodeId];
-                var firstChildId	: uint		= _firstChildId[nodeId];
-                var lastChildId		: uint		= firstChildId + numChildren;
-                var isDirty			: Boolean	= localToWorld._hasChanged;
-
-                localToWorld._hasChanged = false;
-
-                if (lastChildId > subtreeMax)
-                    subtreeMax = lastChildId;
-
-                for (var childId : uint = firstChildId; childId < lastChildId; ++childId)
-                {
-                    var childTransform		: Matrix4x4		= _transforms[childId];
-                    var childLocalToWorld	: Matrix4x4		= _localToWorldTransforms[childId];
-                    var childFlags          : uint          = _flags[childId];
-                    var childIsDirty		: Boolean		= isDirty || childTransform._hasChanged
-                        || !(childFlags & FLAG_INIT_LOCAL_TO_WORLD);
-
-                    if (childIsDirty)
-                    {
-                        var child	: ISceneNode	= _idToNode[childId];
-
-                        if (childFlags & FLAG_LOCK_TRANSFORMS)
-                            childLocalToWorld.lock();
-
-                        childLocalToWorld
-                            .copyFrom(childTransform)
-                            .append(localToWorld);
-
-                        if (childFlags & FLAG_LOCK_TRANSFORMS)
-                            childLocalToWorld.unlock();
-
-                        childTransform._hasChanged = false;
-                        childFlags = (childFlags | FLAG_INIT_LOCAL_TO_WORLD)
-                            & ~FLAG_INIT_WORLD_TO_LOCAL;
-
-                        if (childFlags & FLAG_SYNCHRONIZE_TRANSFORMS)
-                        {
-                            var childWorldToLocal : Matrix4x4 = _worldToLocalTransforms[childId]
-                                || (_worldToLocalTransforms[childId] = new Matrix4x4());
-
-                            if (childFlags & FLAG_LOCK_TRANSFORMS)
-                                childWorldToLocal.lock();
-
-                            childWorldToLocal.copyFrom(childLocalToWorld).invert();
-                            childFlags |= FLAG_INIT_WORLD_TO_LOCAL;
-
-                            if (childFlags & FLAG_LOCK_TRANSFORMS)
-                                childWorldToLocal.unlock();
-                        }
-
-                        _flags[childId] = childFlags;
-
-                        var localToWorldTransformChanged : Signal = child.localToWorldTransformChanged;
-
-                        if (localToWorldTransformChanged.enabled)
-                            localToWorldTransformChanged.execute(child, childLocalToWorld);
-                    }
-                }
+	import flash.display.BitmapData;
+	import flash.utils.Dictionary;
+
+	import aerys.minko.ns.minko_math;
+	import aerys.minko.render.Viewport;
+	import aerys.minko.scene.node.Group;
+	import aerys.minko.scene.node.ISceneNode;
+	import aerys.minko.scene.node.Scene;
+	import aerys.minko.type.Signal;
+	import aerys.minko.type.math.Matrix4x4;
+
+	use namespace minko_math;
+
+	/**
+	 * The TransformController handles the batched update of all the local to world matrices
+	 * of a sub-scene. As such, it will only be active on the root node of a sub-scene and will
+	 * automatically disable itself on other nodes.
+	 *
+	 * @author Jean-Marc Le Roux
+	 *
+	 */
+	public final class TransformController extends AbstractController
+	{
+
+		private static const FLAG_NONE                      : uint  = 0;
+		private static const FLAG_INIT_LOCAL_TO_WORLD       : uint  = 1;
+		private static const FLAG_INIT_WORLD_TO_LOCAL       : uint  = 2;
+		private static const FLAG_SYNCHRONIZE_TRANSFORMS    : uint  = 4;
+		private static const FLAG_LOCK_TRANSFORMS           : uint  = 8;
+
+		private var _target					: ISceneNode;
+
+		private var _invalidList			: Boolean;
+
+		private var _nodeToId				: Dictionary;
+		private var _idToNode				: Vector.<ISceneNode>
+		private var _transforms				: Vector.<Matrix4x4>;
+		private var _flags	                : Vector.<uint>;
+		private var _localToWorldTransforms : Vector.<Matrix4x4>;
+		private var _worldToLocalTransforms : Vector.<Matrix4x4>;
+		private var _numChildren			: Vector.<uint>;
+		private var _firstChildId			: Vector.<uint>;
+		private var _parentId				: Vector.<int>;
+
+		public function TransformController()
+		{
+			super();
+
+			initialize();
+		}
+
+		private function initialize() : void
+		{
+			_transforms = new <Matrix4x4>[];
+			_flags = new <uint>[];
+			_localToWorldTransforms = new <Matrix4x4>[];
+			_worldToLocalTransforms = new <Matrix4x4>[];
+			_numChildren = new <uint>[];
+			_firstChildId = new <uint>[];
+			_idToNode = new <ISceneNode>[];
+			_parentId = new <int>[];
+
+			targetAdded.add(targetAddedHandler);
+			targetRemoved.add(targetRemovedHandler);
+		}
+
+		private function renderingBeginHandler(scene		: Scene,
+											   viewport		: Viewport,
+											   destination	: BitmapData,
+											   time			: Number) : void
+		{
+			if (_invalidList)
+				updateTransformsList();
+
+			if (_transforms.length)
+				updateLocalToWorld();
+		}
+
+		private function updateRootLocalToWorld(nodeId : uint = 0) : void
+		{
+			var rootLocalToWorld	: Matrix4x4		= _localToWorldTransforms[nodeId];
+			var rootTransform		: Matrix4x4		= _transforms[nodeId];
+			var root				: ISceneNode	= _idToNode[nodeId];
+			var rootFlags           : uint          = _flags[nodeId];
+
+			if (rootTransform._hasChanged || !(rootFlags & FLAG_INIT_LOCAL_TO_WORLD))
+			{
+				if (rootFlags & FLAG_LOCK_TRANSFORMS)
+					rootLocalToWorld.lock();
+
+				rootLocalToWorld.copyFrom(rootTransform);
+
+				if (nodeId != 0)
+					rootLocalToWorld.append(_localToWorldTransforms[_parentId[nodeId]]);
+
+				if (rootFlags & FLAG_LOCK_TRANSFORMS)
+					rootLocalToWorld.unlock();
+
+				rootTransform._hasChanged = false;
+				rootFlags = (rootFlags | FLAG_INIT_LOCAL_TO_WORLD) & ~FLAG_INIT_WORLD_TO_LOCAL;
+
+				if (rootFlags & FLAG_SYNCHRONIZE_TRANSFORMS)
+				{
+					var rootWorldToLocal : Matrix4x4 = _worldToLocalTransforms[nodeId]
+						|| (_worldToLocalTransforms[nodeId] = new Matrix4x4());
+
+					if (rootFlags & FLAG_LOCK_TRANSFORMS)
+						rootWorldToLocal.lock();
+
+					rootWorldToLocal.copyFrom(rootLocalToWorld).invert();
+					rootFlags |= FLAG_INIT_WORLD_TO_LOCAL;
+
+					if (rootFlags & FLAG_LOCK_TRANSFORMS)
+						rootWorldToLocal.unlock();
+				}
+
+				_flags[nodeId] = rootFlags;
+
+				var localToWorldTransformChanged : Signal = root.localToWorldTransformChanged;
+
+				if (root.localToWorldTransformChanged.enabled)
+					root.localToWorldTransformChanged.execute(root, rootLocalToWorld);
+			}
+		}
+
+		private function updateLocalToWorld(nodeId : uint = 0) : void
+		{
+			var numNodes 	: uint 	= _transforms.length;
+			var subtreeMax  : uint  = nodeId;
+
+			updateRootLocalToWorld(nodeId);
+
+			while (nodeId < numNodes)
+			{
+				var localToWorld 	: Matrix4x4	= _localToWorldTransforms[nodeId];
+				var numChildren		: uint		= _numChildren[nodeId];
+				var firstChildId	: uint		= _firstChildId[nodeId];
+				var lastChildId		: uint		= firstChildId + numChildren;
+				var isDirty			: Boolean	= localToWorld._hasChanged;
+
+				localToWorld._hasChanged = false;
+
+				if (lastChildId > subtreeMax)
+					subtreeMax = lastChildId;
+
+				for (var childId : uint = firstChildId; childId < lastChildId; ++childId)
+				{
+					var childTransform		: Matrix4x4		= _transforms[childId];
+					var childLocalToWorld	: Matrix4x4		= _localToWorldTransforms[childId];
+					var childFlags          : uint          = _flags[childId];
+					var childIsDirty		: Boolean		= isDirty || childTransform._hasChanged
+						|| !(childFlags & FLAG_INIT_LOCAL_TO_WORLD);
+
+					if (childIsDirty)
+					{
+						var child	: ISceneNode	= _idToNode[childId];
+
+						if (childFlags & FLAG_LOCK_TRANSFORMS)
+							childLocalToWorld.lock();
+
+						childLocalToWorld
+						.copyFrom(childTransform)
+							.append(localToWorld);
+
+						if (childFlags & FLAG_LOCK_TRANSFORMS)
+							childLocalToWorld.unlock();
+
+						childTransform._hasChanged = false;
+						childFlags = (childFlags | FLAG_INIT_LOCAL_TO_WORLD)
+							& ~FLAG_INIT_WORLD_TO_LOCAL;
+
+						if (childFlags & FLAG_SYNCHRONIZE_TRANSFORMS)
+						{
+							var childWorldToLocal : Matrix4x4 = _worldToLocalTransforms[childId]
+								|| (_worldToLocalTransforms[childId] = new Matrix4x4());
+
+							if (childFlags & FLAG_LOCK_TRANSFORMS)
+								childWorldToLocal.lock();
+
+							childWorldToLocal.copyFrom(childLocalToWorld).invert();
+							childFlags |= FLAG_INIT_WORLD_TO_LOCAL;
+
+							if (childFlags & FLAG_LOCK_TRANSFORMS)
+								childWorldToLocal.unlock();
+						}
+
+						_flags[childId] = childFlags;
+
+						var localToWorldTransformChanged : Signal = child.localToWorldTransformChanged;
+
+						if (localToWorldTransformChanged.enabled)
+							localToWorldTransformChanged.execute(child, childLocalToWorld);
+					}
+				}

 				++nodeId;
-            }
-        }
-
-        private function updateLocalToWorldPath(path : Vector.<uint> = null) : void
-        {
-            var numNodes 	    : uint 	    = path.length;
-            var nodeId          : uint      = path[uint(numNodes - 1)];
-            var localToWorld 	: Matrix4x4	= _localToWorldTransforms[nodeId];
-
-            updateRootLocalToWorld(nodeId);
-
-            for (var i : int = numNodes - 2; i >= 0; --i)
-            {
-                var childId             : uint          = path[i];
-                var childTransform		: Matrix4x4		= _transforms[childId];
-                var childLocalToWorld	: Matrix4x4		= _localToWorldTransforms[childId];
-                var childFlags          : uint          = _flags[childId];
-                var child	            : ISceneNode	= _idToNode[childId];
-
-                if (childFlags & FLAG_LOCK_TRANSFORMS)
-                    childLocalToWorld.lock();
-
-                childLocalToWorld
-                    .copyFrom(childTransform)
-                    .append(localToWorld);
-
-                if (childFlags & FLAG_LOCK_TRANSFORMS)
-                    childLocalToWorld.unlock();
-
-                childTransform._hasChanged = false;
-                childFlags = (childFlags | FLAG_INIT_LOCAL_TO_WORLD)
-                    & ~FLAG_INIT_WORLD_TO_LOCAL;
-
-                if (childFlags & FLAG_SYNCHRONIZE_TRANSFORMS)
-                {
-                    var childWorldToLocal : Matrix4x4 = _worldToLocalTransforms[childId]
-                        || (_worldToLocalTransforms[childId] = new Matrix4x4());
-
-                    if (childFlags & FLAG_LOCK_TRANSFORMS)
-                        childWorldToLocal.lock();
-
-                    childWorldToLocal.copyFrom(childLocalToWorld).invert();
-                    childFlags |= FLAG_INIT_WORLD_TO_LOCAL;
-
-                    if (childFlags & FLAG_LOCK_TRANSFORMS)
-                        childWorldToLocal.unlock();
-                }
-
-                _flags[childId] = childFlags;
-
-                var localToWorldTransformChanged : Signal = child.localToWorldTransformChanged;
-
-                if (localToWorldTransformChanged.enabled)
-                    localToWorldTransformChanged.execute(child, childLocalToWorld);
-
-                localToWorld = childLocalToWorld;
-            }
-        }
-
-        private function updateAncestorsAndSelfLocalToWorld(nodeId : uint) : void
-        {
-           	//var dirtyRoot   : int           = -1;
-            var tmpNodeId   : int           = nodeId;
-            var path        : Vector.<uint> = new <uint>[];
-            var numNodes    : uint          = 0;
-
-            while (tmpNodeId >= 0)
-            {
-                //if ((_transforms[tmpNodeId] as Matrix4x4)._hasChanged
-                //    || !(_flags[nodeId] & FLAG_INIT_LOCAL_TO_WORLD))
-                //    dirtyRoot = tmpNodeId;*/
-
-                path[numNodes] = tmpNodeId;
-                ++numNodes;
-
-                tmpNodeId = _parentId[tmpNodeId];
-            }
-
-            //if (dirtyRoot >= 0)
-                updateLocalToWorldPath(path);
-			//updateLocalToWorld(dirtyRoot, nodeId);
-        }
-
-        private function targetAddedHandler(ctrl	: TransformController,
-                                            target	: ISceneNode) : void
-        {
-            if (_target)
-                throw new Error('The TransformController cannot have more than one target.');
-
-            _target = target;
-            _invalidList = true;
-
-            if (target is Group)
-            {
-                var targetGroup : Group = target as Group;
-
-                targetGroup.descendantAdded.add(descendantAddedHandler);
-                targetGroup.descendantRemoved.add(descendantRemovedHandler);
-            }
-
-            if (target is Scene)
-            {
-                (target as Scene).renderingBegin.add(renderingBeginHandler);
-                return;
-            }
-
-            target.added.add(addedHandler);
-        }
-
-        private function targetRemovedHandler(ctrl		: TransformController,
-                                              target	: ISceneNode) : void
-        {
-            target.added.remove(addedHandler);
-
-            if (target is Group)
-            {
-                var targetGroup : Group = target as Group;
-
-                targetGroup.descendantAdded.remove(descendantAddedHandler);
-                targetGroup.descendantRemoved.remove(descendantRemovedHandler);
-            }
-
-            _invalidList = false;
-            _target = null;
-
-            _nodeToId = null;
-            _transforms.length = 0;
-            _flags.length = 0;
-            _localToWorldTransforms.length = 0;
-            _worldToLocalTransforms.length = 0;
-            _numChildren.length = 0;
-            _firstChildId.length = 0;
-            _idToNode.length = 0;
-            _parentId.length = 0;
-        }
-
-        private function addedHandler(target : ISceneNode, ancestor : Group) : void
-        {
-            // the controller will remove itself from the node when it's not its own root anymore
-            // but it will watch for the 'removed' signal to add itself back if the node becomes
-            // its own root again
-            _target.removed.add(removedHandler);
-            _target.removeController(this);
-        }
-
-        private function removedHandler(target : ISceneNode, ancestor : Group) : void
-        {
-            if (target.root == target)
-            {
-                target.removed.remove(removedHandler);
-                target.addController(this);
-            }
-        }
-
-        private function descendantAddedHandler(root		: Group,
-                                                descendant	: ISceneNode) : void
-        {
-            _invalidList = true;
-        }
-
-        private function descendantRemovedHandler(root			: Group,
-                                                  descendant	: ISceneNode) : void
-        {
-            _invalidList = true;
-        }
-
-        private function getNodeId(node : ISceneNode) : uint
-        {
-            if (_invalidList || !(node in _nodeToId))
-                updateTransformsList();
-
-            return _nodeToId[node];
-        }
-
-        private function updateTransformsList() : void
-        {
-            var root    	                : ISceneNode 			= _target.root;
-            var nodes   	                : Vector.<ISceneNode> 	= new <ISceneNode>[root];
-            var nodeId  	                : uint 					= 0;
-            var oldNodeToId                 : Dictionary            = _nodeToId;
-            var oldInitialized              : Vector.<uint>         = _flags;
-            var oldLocalToWorldTransforms   : Vector.<Matrix4x4>    = _localToWorldTransforms;
-            var oldWorldToLocalTransform    : Vector.<Matrix4x4>    = _worldToLocalTransforms;
-
-            _nodeToId = new Dictionary(true);
-            _transforms.length = 0;
-            _flags = new <uint>[];
-            _localToWorldTransforms = new <Matrix4x4>[];
-            _worldToLocalTransforms = new <Matrix4x4>[];
-            _numChildren.length = 0;
-            _firstChildId.length = 0;
-            _idToNode.length = 0;
-            _parentId.length = 1;
-            _parentId[0] = -1;
-
-            while (nodes.length)
-            {
-                var node 	    : ISceneNode 	= nodes.shift();
-                var group       : Group 		= node as Group;
-                var oldNodeId   : int           = oldNodeToId && node in oldNodeToId
-                    ? oldNodeToId[node]
-                    : -1;
-
-                _nodeToId[node] = nodeId;
-                _idToNode[nodeId] = node;
-                _transforms[nodeId] = node.transform;
-
-                if (oldNodeId >= 0 && oldNodeId < oldLocalToWorldTransforms.length)
-                {
-                    _localToWorldTransforms[nodeId] = oldLocalToWorldTransforms[oldNodeId];
-                    _worldToLocalTransforms[nodeId] = oldWorldToLocalTransform[oldNodeId];
-                    _flags[nodeId] = oldInitialized[oldNodeId];
-                }
-                else
-                {
-                    _localToWorldTransforms[nodeId] = new Matrix4x4().lock();
-                    _worldToLocalTransforms[nodeId] = null;
-                    _flags[nodeId] = FLAG_NONE;
-                }
-
-                if (group)
-                {
-                    var numChildren 	: uint = group.numChildren;
-                    var firstChildId 	: uint = nodeId + nodes.length + 1;
-
-                    _numChildren[nodeId] = numChildren;
-                    _firstChildId[nodeId] = firstChildId;
-                    for (var childId : uint = 0; childId < numChildren; ++childId)
-                    {
-                        _parentId[uint(firstChildId + childId)] = nodeId;
-                        nodes.push(group.getChildAt(childId));
-                    }
-                }
-                else
-                {
-                    _numChildren[nodeId] = 0;
-                    _firstChildId[nodeId] = 0;
-                }
-
-                ++nodeId;
-            }
-
-            _worldToLocalTransforms.length = _localToWorldTransforms.length;
-            _invalidList = false;
-        }
-
-        public function getLocalToWorldTransform(node 			: ISceneNode,
-                                                 forceUpdate 	: Boolean = false) : Matrix4x4
-        {
-            var nodeId : uint = getNodeId(node);
-
-            if (forceUpdate)
-                updateAncestorsAndSelfLocalToWorld(nodeId);
-
-            return _localToWorldTransforms[nodeId];
-        }
-
-        public function getWorldToLocalTransform(node           : ISceneNode,
-                                                 forceUpdate    : Boolean   = false) : Matrix4x4
-        {
-            var nodeId                  : uint      = getNodeId(node);
-            var worldToLocalTransform   : Matrix4x4 = _worldToLocalTransforms[nodeId];
-
-            if (!worldToLocalTransform)
-            {
-                _worldToLocalTransforms[nodeId] = worldToLocalTransform = new Matrix4x4();
-                if (!forceUpdate)
-                {
-                    worldToLocalTransform.copyFrom(_localToWorldTransforms[nodeId]).invert();
-                    _flags[nodeId] |= FLAG_INIT_WORLD_TO_LOCAL;
-                }
-            }
-
-            if (forceUpdate)
-                updateAncestorsAndSelfLocalToWorld(nodeId);
-
-            var flags : uint = _flags[nodeId];
-
-            if (!(flags & FLAG_INIT_WORLD_TO_LOCAL))
-            {
-                _flags[nodeId] |= FLAG_INIT_WORLD_TO_LOCAL;
-
-                if (flags & FLAG_LOCK_TRANSFORMS)
-                    worldToLocalTransform.lock();
-
-                worldToLocalTransform
-                    .copyFrom(_localToWorldTransforms[nodeId])
-                    .invert();
-
-                if (flags & FLAG_LOCK_TRANSFORMS)
-                    worldToLocalTransform.unlock();
-            }
-
-            return worldToLocalTransform;
-        }
-
-        public function synchronizeTransforms(node : ISceneNode, enabled : Boolean) : void
-        {
-            var nodeId : uint = getNodeId(node);
-
-            _flags[nodeId] = enabled
-                ? _flags[nodeId] | FLAG_SYNCHRONIZE_TRANSFORMS
-                : _flags[nodeId] & ~FLAG_SYNCHRONIZE_TRANSFORMS;
-        }
-
-        public function lockTransformsBeforeUpdate(node : ISceneNode, enabled : Boolean) : void
-        {
-            var nodeId : uint = getNodeId(node);
-
-            _flags[nodeId] = enabled
-                ? _flags[nodeId] | FLAG_LOCK_TRANSFORMS
-                : _flags[nodeId] & ~FLAG_LOCK_TRANSFORMS;
-        }
-    }
+			}
+		}
+
+		private function updateLocalToWorldPath(path : Vector.<uint> = null) : void
+		{
+			var numNodes 	    : uint 	    = path.length;
+			var nodeId          : uint      = path[uint(numNodes - 1)];
+			var localToWorld 	: Matrix4x4	= _localToWorldTransforms[nodeId];
+
+			updateRootLocalToWorld(nodeId);
+
+			for (var i : int = numNodes - 2; i >= 0; --i)
+			{
+				var childId             : uint          = path[i];
+				var childTransform		: Matrix4x4		= _transforms[childId];
+				var childLocalToWorld	: Matrix4x4		= _localToWorldTransforms[childId];
+				var childFlags          : uint          = _flags[childId];
+				var child	            : ISceneNode	= _idToNode[childId];
+
+				if (childFlags & FLAG_LOCK_TRANSFORMS)
+					childLocalToWorld.lock();
+
+				childLocalToWorld
+				.copyFrom(childTransform)
+					.append(localToWorld);
+
+				if (childFlags & FLAG_LOCK_TRANSFORMS)
+					childLocalToWorld.unlock();
+
+				childTransform._hasChanged = false;
+				childFlags = (childFlags | FLAG_INIT_LOCAL_TO_WORLD)
+					& ~FLAG_INIT_WORLD_TO_LOCAL;
+
+				if (childFlags & FLAG_SYNCHRONIZE_TRANSFORMS)
+				{
+					var childWorldToLocal : Matrix4x4 = _worldToLocalTransforms[childId]
+						|| (_worldToLocalTransforms[childId] = new Matrix4x4());
+
+					if (childFlags & FLAG_LOCK_TRANSFORMS)
+						childWorldToLocal.lock();
+
+					childWorldToLocal.copyFrom(childLocalToWorld).invert();
+					childFlags |= FLAG_INIT_WORLD_TO_LOCAL;
+
+					if (childFlags & FLAG_LOCK_TRANSFORMS)
+						childWorldToLocal.unlock();
+				}
+
+				_flags[childId] = childFlags;
+
+				var localToWorldTransformChanged : Signal = child.localToWorldTransformChanged;
+
+				if (localToWorldTransformChanged.enabled)
+					localToWorldTransformChanged.execute(child, childLocalToWorld);
+
+				localToWorld = childLocalToWorld;
+			}
+		}
+
+		private function updateAncestorsAndSelfLocalToWorld(nodeId : uint) : void
+		{
+			var dirtyRoot   : int           = -1;
+			var tmpNodeId   : int           = nodeId;
+			var path        : Vector.<uint> = new <uint>[];
+			var numNodes    : uint          = 0;
+
+			while (tmpNodeId >= 0)
+			{
+				if ((_transforms[tmpNodeId] as Matrix4x4)._hasChanged
+					|| !(_flags[nodeId] & FLAG_INIT_LOCAL_TO_WORLD))
+					dirtyRoot = tmpNodeId;
+
+				path[numNodes] = tmpNodeId;
+				++numNodes;
+
+				tmpNodeId = _parentId[tmpNodeId];
+			}
+
+			if (dirtyRoot >= 0)
+				updateLocalToWorldPath(path);
+			//                updateLocalToWorld(dirtyRoot, nodeId);
+		}
+
+		private function targetAddedHandler(ctrl	: TransformController,
+											target	: ISceneNode) : void
+		{
+			if (_target)
+				throw new Error('The TransformController cannot have more than one target.');
+
+			_target = target;
+			_invalidList = true;
+
+			if (target is Group)
+			{
+				var targetGroup : Group = target as Group;
+
+				targetGroup.descendantAdded.add(descendantAddedHandler);
+				targetGroup.descendantRemoved.add(descendantRemovedHandler);
+			}
+
+			if (target is Scene)
+			{
+				(target as Scene).renderingBegin.add(renderingBeginHandler);
+				return;
+			}
+
+			target.added.add(addedHandler);
+		}
+
+		private function targetRemovedHandler(ctrl		: TransformController,
+											  target	: ISceneNode) : void
+		{
+			target.added.remove(addedHandler);
+
+			if (target is Group)
+			{
+				var targetGroup : Group = target as Group;
+
+				targetGroup.descendantAdded.remove(descendantAddedHandler);
+				targetGroup.descendantRemoved.remove(descendantRemovedHandler);
+			}
+
+			_invalidList = false;
+			_target = null;
+
+			_nodeToId = null;
+			_transforms.length = 0;
+			_flags.length = 0;
+			_localToWorldTransforms.length = 0;
+			_worldToLocalTransforms.length = 0;
+			_numChildren.length = 0;
+			_firstChildId.length = 0;
+			_idToNode.length = 0;
+			_parentId.length = 0;
+		}
+
+		private function addedHandler(target : ISceneNode, ancestor : Group) : void
+		{
+			// the controller will remove itself from the node when it's not its own root anymore
+			// but it will watch for the 'removed' signal to add itself back if the node becomes
+			// its own root again
+			_target.removed.add(removedHandler);
+			_target.removeController(this);
+		}
+
+		private function removedHandler(target : ISceneNode, ancestor : Group) : void
+		{
+			if (target.root == target)
+			{
+				target.removed.remove(removedHandler);
+				target.addController(this);
+			}
+		}
+
+		private function descendantAddedHandler(root		: Group,
+												descendant	: ISceneNode) : void
+		{
+			_invalidList = true;
+		}
+
+		private function descendantRemovedHandler(root			: Group,
+												  descendant	: ISceneNode) : void
+		{
+			_invalidList = true;
+		}
+
+		private function getNodeId(node : ISceneNode) : uint
+		{
+			if (_invalidList || !(node in _nodeToId))
+				updateTransformsList();
+
+			return _nodeToId[node];
+		}
+
+		private function updateTransformsList() : void
+		{
+			var root    	                : ISceneNode 			= _target.root;
+			var nodes   	                : Vector.<ISceneNode> 	= new <ISceneNode>[root];
+			var nodeId  	                : uint 					= 0;
+			var oldNodeToId                 : Dictionary            = _nodeToId;
+			var oldInitialized              : Vector.<uint>         = _flags;
+			var oldLocalToWorldTransforms   : Vector.<Matrix4x4>    = _localToWorldTransforms;
+			var oldWorldToLocalTransform    : Vector.<Matrix4x4>    = _worldToLocalTransforms;
+
+			_nodeToId = new Dictionary(true);
+			_transforms.length = 0;
+			_flags = new <uint>[];
+			_localToWorldTransforms = new <Matrix4x4>[];
+			_worldToLocalTransforms = new <Matrix4x4>[];
+			_numChildren.length = 0;
+			_firstChildId.length = 0;
+			_idToNode.length = 0;
+			_parentId.length = 1;
+			_parentId[0] = -1;
+
+			while (nodes.length)
+			{
+				var node 	    : ISceneNode 	= nodes.shift();
+				var group       : Group 		= node as Group;
+				var oldNodeId   : int           = oldNodeToId && node in oldNodeToId
+					? oldNodeToId[node]
+					: -1;
+
+				_nodeToId[node] = nodeId;
+				_idToNode[nodeId] = node;
+				_transforms[nodeId] = node.transform;
+
+				if (oldNodeId >= 0 && oldNodeId < oldLocalToWorldTransforms.length)
+				{
+					_localToWorldTransforms[nodeId] = oldLocalToWorldTransforms[oldNodeId];
+					_worldToLocalTransforms[nodeId] = oldWorldToLocalTransform[oldNodeId];
+					_flags[nodeId] = oldInitialized[oldNodeId];
+				}
+				else
+				{
+					_localToWorldTransforms[nodeId] = new Matrix4x4().lock();
+					_worldToLocalTransforms[nodeId] = null;
+					_flags[nodeId] = FLAG_NONE;
+				}
+
+				if (group)
+				{
+					var numChildren 	: uint = group.numChildren;
+					var firstChildId 	: uint = nodeId + nodes.length + 1;
+
+					_numChildren[nodeId] = numChildren;
+					_firstChildId[nodeId] = firstChildId;
+					for (var childId : uint = 0; childId < numChildren; ++childId)
+					{
+						_parentId[uint(firstChildId + childId)] = nodeId;
+						nodes.push(group.getChildAt(childId));
+					}
+				}
+				else
+				{
+					_numChildren[nodeId] = 0;
+					_firstChildId[nodeId] = 0;
+				}
+
+				++nodeId;
+			}
+
+			_worldToLocalTransforms.length = _localToWorldTransforms.length;
+			_invalidList = false;
+		}
+
+		public function getLocalToWorldTransform(node 			: ISceneNode,
+												 forceUpdate 	: Boolean = false) : Matrix4x4
+		{
+			var nodeId : uint = getNodeId(node);
+
+			if (forceUpdate)
+				updateAncestorsAndSelfLocalToWorld(nodeId);
+
+			return _localToWorldTransforms[nodeId];
+		}
+
+		public function getWorldToLocalTransform(node           : ISceneNode,
+												 forceUpdate    : Boolean   = false) : Matrix4x4
+		{
+			var nodeId                  : uint      = getNodeId(node);
+			var worldToLocalTransform   : Matrix4x4 = _worldToLocalTransforms[nodeId];
+
+			if (!worldToLocalTransform)
+			{
+				_worldToLocalTransforms[nodeId] = worldToLocalTransform = new Matrix4x4();
+				if (!forceUpdate)
+				{
+					worldToLocalTransform.copyFrom(_localToWorldTransforms[nodeId]).invert();
+					_flags[nodeId] |= FLAG_INIT_WORLD_TO_LOCAL;
+				}
+			}
+
+			if (forceUpdate)
+				updateAncestorsAndSelfLocalToWorld(nodeId);
+
+			var flags : uint = _flags[nodeId];
+
+			if (!(flags & FLAG_INIT_WORLD_TO_LOCAL))
+			{
+				_flags[nodeId] |= FLAG_INIT_WORLD_TO_LOCAL;
+
+				if (flags & FLAG_LOCK_TRANSFORMS)
+					worldToLocalTransform.lock();
+
+				worldToLocalTransform
+				.copyFrom(_localToWorldTransforms[nodeId])
+					.invert();
+
+				if (flags & FLAG_LOCK_TRANSFORMS)
+					worldToLocalTransform.unlock();
+			}
+
+			return worldToLocalTransform;
+		}
+
+		public function synchronizeTransforms(node : ISceneNode, enabled : Boolean) : void
+		{
+			var nodeId : uint = getNodeId(node);
+
+			_flags[nodeId] = enabled
+				? _flags[nodeId] | FLAG_SYNCHRONIZE_TRANSFORMS
+				: _flags[nodeId] & ~FLAG_SYNCHRONIZE_TRANSFORMS;
+		}
+
+		public function lockTransformsBeforeUpdate(node : ISceneNode, enabled : Boolean) : void
+		{
+			var nodeId : uint = getNodeId(node);
+
+			_flags[nodeId] = enabled
+				? _flags[nodeId] | FLAG_LOCK_TRANSFORMS
+				: _flags[nodeId] & ~FLAG_LOCK_TRANSFORMS;
+		}
+	}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 14142
Author:   deeptika@adobe.com
Date:     2010-02-12T08:57:47.246425Z

Log Message:
-----------
Merging revision 14141 from 4.x branch

QE notes:
Doc notes:
Bugs: FLEXENT-1234
Reviewer:
Tests run:
Is noteworthy for integration:

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkApplicationAutomationImpl.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1252041 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkApplicationAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkApplicationAutomationImpl.as
@@ -67,7 +67,9 @@
 		public function SparkApplicationAutomationImpl(obj:spark.components.Application)
 		{
 			super(obj);
-			recordClick = true;
+			recordClick = true;
+			var am:IAutomationManager2 = Automation.automationManager2;
+			am.registerNewApplication(obj);
 		}

 		/**


fixed missing import

fixed missing import

--- actionscript/src/com/freshplanet/ane/AirFacebook/Facebook.as
+++ actionscript/src/com/freshplanet/ane/AirFacebook/Facebook.as
@@ -1,7 +1,8 @@
 package com.freshplanet.ane.AirFacebook {
 import com.freshplanet.ane.AirFacebook.appevents.FBEvent;
 import com.freshplanet.ane.AirFacebook.share.FBAppInviteContent;
-import com.freshplanet.ane.AirFacebook.share.FBShareLinkContent;
+    import com.freshplanet.ane.AirFacebook.share.FBGameRequestContent;
+    import com.freshplanet.ane.AirFacebook.share.FBShareLinkContent;

 import flash.desktop.InvokeEventReason;


Transferred from the Adobe Open Source Subversion Repository

Revision: 20097
Author:   jasonsj@adobe.com
Date:     2011-02-03T17:48:25.773740Z

Log Message:
-----------
Remove use of minWidth and minHeight where possible from mobile skins to fix constraint use cases. Replace usage of minWidth/minHeight and layoutMeasuredWidth/layoutMeasuredHeight with MobileSkin property measuredDefaultWidth/measuredDefaultHeight.

Use minWidth/minHeight for skins that do not scale down: Beveled buttons, CheckBox, RadioButton, and scroll bars.

Doc notes:
Bugs:
SDK-28715 Cannot size and position button correctly in i4 build.
Reviewer: egeorgie
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonBarFirstButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/HSliderDataTip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaVScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonBarMiddleButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewMenuItemSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TabbedViewNavigatorTabBarTabSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonBarLastButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ImageSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledBackButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaHScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1265927 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as
@@ -52,19 +52,21 @@

     /**
      *  @private
-     *  Use for TODO
+     *  Dark chromeColor used in ViewNavigator and
+     *  TabbedViewNavigator "chrome" elements: ActionBar and
+     *  TabbedViewNavigator#tabBar.
      */
     mx_internal static const MOBILE_THEME_DARK_COLOR:uint = 0x484848;

     /**
      *  @private
-     *  Use for TODO
+     *  Default chromeColor for the mobile theme.
      */
     mx_internal static const MOBILE_THEME_LIGHT_COLOR:uint = 0xCCCCCC;

     /**
      *  @private
-     *  Use for TODO
+     *  Default symbol color for symbolColor style.
      */
     mx_internal static const DEFAULT_SYMBOL_COLOR_VALUE:uint = 0x00;

@@ -104,6 +106,34 @@
      */
     protected var useSymbolColor:Boolean = false;

+    /**
+     *  Specifies a default width. measuredWidth returns this value
+     *  when the computed measuredWidth is less than
+     *  measuredDefaultWidth.
+     *
+     *  @default 0
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected var measuredDefaultWidth:Number = 0;
+
+    /**
+     *  Specifies a default height. measuredHeight returns this value
+     *  when the computed measuredHeight is less than
+     *  measuredDefaultHeight.
+     *
+     *  @default 0
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected var measuredDefaultHeight:Number = 0;
+
     //----------------------------------
     //  colorMatrix
     //----------------------------------
@@ -234,6 +264,22 @@
                                              playTransition:Boolean = true):void
     {
         currentState = stateName;
+    }
+
+    /**
+     *  @private
+     */
+    override public function get measuredWidth():Number
+    {
+        return Math.max(super.measuredWidth, measuredDefaultWidth);
+    }
+
+    /**
+     *  @private
+     */
+    override public function get measuredHeight():Number
+    {
+        return Math.max(super.measuredHeight, measuredDefaultHeight);
     }

     /**


MovieClip2D support for PlayMode.ONESHOT.

--- src/engine/tetragon/view/render2d/display/MovieClip2D.as
+++ src/engine/tetragon/view/render2d/display/MovieClip2D.as
@@ -28,6 +28,8 @@
  */
 package tetragon.view.render2d.display
 {
+	import tetragon.data.constants.PlayDirection;
+	import tetragon.data.constants.PlayMode;
 	import tetragon.view.render2d.animation.IAnimatable2D;
 	import tetragon.view.render2d.events.Event2D;
 	import tetragon.view.render2d.textures.Texture2D;
@@ -119,6 +121,8 @@
 			var numFrames:int = textures.length;

 			_defaultFrameDuration = 1.0 / fps;
+			_playMode = PlayMode.LOOP;
+			_playDirection = PlayDirection.FORWARD;
 			_loop = true;
 			_playing = true;
 			_currentTime = 0.0;
@@ -396,14 +400,17 @@
 		}

-		// TODO Add support for different play modes!
+		// TODO Add full support for different play modes!
 		public function get playMode():String
 		{
 			return _playMode;
 		}
 		public function set playMode(v:String):void
 		{
+			if (v == _playMode) return;
 			_playMode = v;
+			if (_playMode == PlayMode.LOOP) _loop = true;
+			else if (_playMode == PlayMode.ONESHOT) _loop = false;
 		}

@@ -414,6 +421,7 @@
 		}
 		public function set playDirection(v:String):void
 		{
+			if (v == _playDirection) return;
 			_playDirection = v;
 		}


def: 6582 use mediaPlayerMediator.getCurrentTime instead of player.currentTime

git-svn-id: 3f608e5a9a704dd448217c0a64c508e7f145cfa1@92862 6b8eccd3-e8c5-4e7d-8186-e12b5326b719

--- plugins/nielsenVideoCensusPlugin/src/com/kaltura/kdpfl/plugin/component/NielsenVideoCensusMediator.as
+++ plugins/nielsenVideoCensusPlugin/src/com/kaltura/kdpfl/plugin/component/NielsenVideoCensusMediator.as
@@ -2,6 +2,7 @@
 {
 	import com.kaltura.kdpfl.model.MediaProxy;
 	import com.kaltura.kdpfl.model.type.NotificationType;
+	import com.kaltura.kdpfl.view.media.KMediaPlayerMediator;
 	import com.kaltura.types.KalturaAdType;
 	import com.kaltura.vo.KalturaAdCuePoint;
 	import com.kaltura.vo.KalturaCuePoint;
@@ -114,7 +115,7 @@
 					_midSequenceComplete				= true;
 					_segmentsCounter++;
 					_prevStartTime						= _newStartTime;
-					_newStartTime						= Math.round(Number(facade["bindObject"]["video"].player.currentTime));
+					_newStartTime						= Math.round((facade.retrieveMediator(KMediaPlayerMediator.NAME) as KMediaPlayerMediator).getCurrentTime());
 					break;

 				case NotificationType.CUE_POINTS_RECEIVED:


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1260272 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/effects/Move.as
+++ frameworks/projects/framework/src/mx/effects/Move.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2003-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.effects
 {


fixed bug handling diffs

fixed bug handling diffs

Change-Id: I8309995fbf5315daaa38a8ddb8deee6bfe775d36

--- WeaveCore/src/weave/core/LinkableDynamicObject.as
+++ WeaveCore/src/weave/core/LinkableDynamicObject.as
@@ -134,10 +134,13 @@
 					target = null;
 				else
 				{
-					setLocalObjectType(className);
+					var prevTarget:ILinkableObject = target;
+					// if className is not specified, make no change unless removeMissingDynamicObjects is true
+					if (className || removeMissingDynamicObjects)
+						setLocalObjectType(className);
 					var classDef:Class = ClassUtils.getClassDefinition(className);
-					if (classDef && target is classDef)
-						WeaveAPI.SessionManager.setSessionState(target, sessionState);
+					if (!className || (classDef && target is classDef))
+						WeaveAPI.SessionManager.setSessionState(target, sessionState, prevTarget != target || removeMissingDynamicObjects);
 				}
 			}
 			finally


Log as tests pass

Log as tests pass

--- exporter/src/test/as/flump/test/TestRunner.as
+++ exporter/src/test/as/flump/test/TestRunner.as
@@ -51,8 +51,10 @@
             log.error("Unknown test completed", "future", f, "result", f.result);
             return;
         }
-        if (f.isSuccessful) _passed.push(name);
-        else {
+        if (f.isSuccessful) {
+            log.info("Passed", "test", name);
+            _passed.push(name);
+        } else {
             _failed.push(name)
             if (f.result is Error) log.error("Failed", "test", name, f.result);
             else log.error("Failed", "test", name, "reason", f.result);


Transferred from the Adobe Open Source Subversion Repository

Revision: 12818
Author:   gosmith@adobe.com
Date:     2009-12-11T00:20:49.864169Z

Log Message:
-----------
The MX TabBarAccImpl now sends the MSAA event EVENT_OBJECT_SELECTION followed by EVENT_OBJECT_FOCUS when the TabBar dispatches an "itemClick" event. Previously it only sent EVENT_OBJECT_SELECTION.

QE notes: None
Doc notes: None
Bugs: SDK-17927
Reviewer: Jon, Hans
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TabBarAccImpl.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1267478 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/accessibility/TabBarAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/TabBarAccImpl.as
@@ -311,6 +311,8 @@
 				{
 					Accessibility.sendEvent(master, index + 1,
 											AccConst.EVENT_OBJECT_SELECTION);
+					Accessibility.sendEvent(master, index + 1,
+											AccConst.EVENT_OBJECT_FOCUS);
 				}
 				break;
 			}


added StandardLib mean and sum functions

Change-Id: I2b5947edddd6cf72bd77fff6ce9d866496aea694

--- WeaveData/src/weave/compiler/StandardLib.as
+++ WeaveData/src/weave/compiler/StandardLib.as
@@ -406,5 +406,21 @@

 			return values;
 		}
+
+		public static function mean(...args):Number
+		{
+			var sum:Number = 0;
+			for each (var value:Number in args)
+				sum += value;
+			return sum / args.length;
+		}
+
+		public static function sum(...args):Number
+		{
+			var sum:Number = 0;
+			for each (var value:Number in args)
+				sum += value;
+			return sum;
+		}
 	}
 }


Make some changes suggested by flex-pmd.

--- swfcat.as
+++ swfcat.as
@@ -37,9 +37,9 @@
         private const FACILITATOR_POLL_INTERVAL:int = 1000;

         // Bytes per second. Set to undefined to disable limit.
-        public const RATE_LIMIT:Number = undefined;
+        public static const RATE_LIMIT:Number = undefined;
         // Seconds.
-        private const RATE_LIMIT_HISTORY:Number = 5.0;
+        private static const RATE_LIMIT_HISTORY:Number = 5.0;

         /* TextField for debug output. */
         private var output_text:TextField;
@@ -84,8 +84,6 @@

         private function loaderinfo_complete(e:Event):void
         {
-            var fac_spec:String;
-
             if (this.loaderInfo.parameters["debug"] || this.loaderInfo.parameters["client"]) {
                 output_text = new TextField();
                 output_text.width = stage.stageWidth;
@@ -122,7 +120,7 @@
            default. Returns null on error. */
         private function get_param_addr(param:String, default_addr:Object):Object
         {
-            var spec:String, addr:Object;
+            var spec:String;

             spec = this.loaderInfo.parameters[param];
             if (spec)
@@ -238,7 +236,6 @@
             var fac_url:String;
             var loader:URLLoader;
             var request:URLRequest;
-            var variables:URLVariables;

             loader = new URLLoader();
             loader.addEventListener(Event.COMPLETE, function (e:Event):void {
@@ -257,7 +254,7 @@
                 + ":" + encodeURIComponent(fac_addr.port) + "/";
             request = new URLRequest(fac_url);
             request.method = URLRequestMethod.POST;
-            request.data = new URLVariables;
+            request.data = new URLVariables();
             request.data["client"] = rs.id;

             puts("Facilitator: connecting to " + fac_url + ".");


optimize manifest parsing error handling

--- src/org/mangui/hls/loader/LevelLoader.as
+++ src/org/mangui/hls/loader/LevelLoader.as
@@ -224,7 +224,7 @@

         /** Parse First Level Playlist **/
         private function _parseManifest(string : String) : void {
-            var hlsError : HLSError;
+            var errorTxt : String = null;
             // Check for M3U8 playlist or manifest.
             if (string.indexOf(Manifest.HEADER) == 0) {
                 // 1 level playlist, create unique level and parse playlist
@@ -247,35 +247,34 @@
                     }
                     // adaptative playlist, extract levels from playlist, get them and parse them
                     _levels = Manifest.extractLevels(string, _url);
-
-                    var levelsLength : int = _levels.length;
-                    if (levelsLength == 0) {
-                        hlsError = new HLSError(HLSError.MANIFEST_PARSING_ERROR, _url, "No level found in Manifest");
-                        _hls.dispatchEvent(new HLSEvent(HLSEvent.ERROR, hlsError));
-                    }
-                    _metrics.parsing_end_time = getTimer();
-                    _loadLevel = -1;
-                    _hls.dispatchEvent(new HLSEvent(HLSEvent.MANIFEST_PARSED, _levels));
-                    if (string.indexOf(Manifest.ALTERNATE_AUDIO) > 0) {
-                        CONFIG::LOGGING {
-                            Log.debug("alternate audio level found");
-                        }
-                        // parse alternate audio tracks
-                        _altAudioTracks = Manifest.extractAltAudioTracks(string, _url);
-                        CONFIG::LOGGING {
-                            if (_altAudioTracks.length > 0) {
-                                Log.debug(_altAudioTracks.length + " alternate audio tracks found");
+                    if (_levels.length) {
+                        _metrics.parsing_end_time = getTimer();
+                        _loadLevel = -1;
+                        _hls.dispatchEvent(new HLSEvent(HLSEvent.MANIFEST_PARSED, _levels));
+                        if (string.indexOf(Manifest.ALTERNATE_AUDIO) > 0) {
+                            CONFIG::LOGGING {
+                                Log.debug("alternate audio level found");
+                            }
+                            // parse alternate audio tracks
+                            _altAudioTracks = Manifest.extractAltAudioTracks(string, _url);
+                            CONFIG::LOGGING {
+                                if (_altAudioTracks.length > 0) {
+                                    Log.debug(_altAudioTracks.length + " alternate audio tracks found");
+                                }
                             }
                         }
+                    } else {
+                        errorTxt = "No level found in Manifest";
                     }
                 } else {
                     // manifest start with correct header, but it does not contain any fragment or level info ...
-                    hlsError = new HLSError(HLSError.MANIFEST_PARSING_ERROR, _url, "empty Manifest");
-                    _hls.dispatchEvent(new HLSEvent(HLSEvent.ERROR, hlsError));
+                    errorTxt = "empty Manifest";
                 }
             } else {
-                hlsError = new HLSError(HLSError.MANIFEST_PARSING_ERROR, _url, "Manifest is not a valid M3U8 file");
-                _hls.dispatchEvent(new HLSEvent(HLSEvent.ERROR, hlsError));
+                errorTxt = "Manifest is not a valid M3U8 file";
+            }
+            if(errorTxt) {
+                _hls.dispatchEvent(new HLSEvent(HLSEvent.ERROR, new HLSError(HLSError.MANIFEST_PARSING_ERROR, _url, errorTxt)));
             }
         };


Transferred from the Adobe Open Source Subversion Repository

Revision: 21683
Author:   chiedozi@adobe.com
Date:     2011-07-21T23:18:41.186033Z

Log Message:
-----------
Initial checkin of SplitViewNavigator component and its skin.  This includes small alterations to various ViewTransition classes.

QE notes:
Doc notes:
Bugs:
Reviewer:  Evtim
Tests run: mustella, checkintests
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/Application.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/manifest.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/transitions/FlipViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/transitions/ViewTransitionBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SplitViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorApplicationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/transitions/SlideViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/core/IVisualElementContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1264590 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorApplicationBase.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorApplicationBase.as
@@ -523,9 +523,10 @@
      */
     private function addApplicationListeners():void
     {
-        // Add device event listeners
-        systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, deviceKeyDownHandler);
-        systemManager.stage.addEventListener(KeyboardEvent.KEY_UP, deviceKeyUpHandler);
+		// Listen for keyboard events at a lower priority so that developers
+		// can cancel the default behavior
+        systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, deviceKeyDownHandler, false, -1);
+        systemManager.stage.addEventListener(KeyboardEvent.KEY_UP, deviceKeyUpHandler, false, -1);
         systemManager.stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orientationChangeHandler);
         NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, invokeHandler);
         NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, activateHandler);


-Removed extra log entries. -Force reload resource cache when opening particles from file.

--- Bin/Data/Scripts/Editor/EditorParticleEffect.as
+++ Bin/Data/Scripts/Editor/EditorParticleEffect.as
@@ -14,7 +14,6 @@

 void CreateParticleEffectEditor()
 {
-    log.Info("CreateParticleEffectEditor()");
     if (particleEffectWindow !is null)
         return;

@@ -85,7 +84,6 @@

 void EditParticleEffectColorFrameNew(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectColorFrameNew()");
     if (editParticleEffect is null)
         return;

@@ -96,7 +94,6 @@

 void EditParticleEffectTextureFrameNew(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectTextureFrameNew()");
     if (editParticleEffect is null)
         return;

@@ -107,7 +104,6 @@

 void EditParticleEffectColorFrameRemove(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectColorFrameRemove()");
     if (editParticleEffect is null)
         return;

@@ -122,7 +118,6 @@

 void EditParticleEffectTextureFrameRemove(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectTextureFrameRemove()");
     if (editParticleEffect is null)
         return;

@@ -136,19 +131,16 @@

 void EditParticleEffectColorFrameSort(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectColorFrameSort()");
     RefreshParticleEffectColorFrames();
 }

 void EditParticleEffectTextureFrameSort(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectTextureFrameSort()");
     RefreshParticleEffectTextureFrames();
 }

 void InitParticleEffectBasicAttributes()
 {
-    log.Info("InitParticleEffectBasicAttributes()");
     CreateDragSlider(cast<LineEdit>(particleEffectWindow.GetChild("ConstantForceX", true)));
     CreateDragSlider(cast<LineEdit>(particleEffectWindow.GetChild("ConstantForceY", true)));
     CreateDragSlider(cast<LineEdit>(particleEffectWindow.GetChild("ConstantForceZ", true)));
@@ -200,7 +192,6 @@

 void EditParticleEffectConstantForce(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectConstantForce()");
     if (editParticleEffect is null)
         return;

@@ -220,7 +211,6 @@

 void EditParticleEffectDirection(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectDirection()");
     if (editParticleEffect is null)
         return;

@@ -250,7 +240,6 @@

 void EditParticleEffectDampingForce(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectDampingForce()");
     if (editParticleEffect is null)
         return;

@@ -261,7 +250,6 @@

 void EditParticleEffectActiveTime(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectActiveTime()");
     if (editParticleEffect is null)
         return;

@@ -276,7 +264,6 @@

 void EditParticleEffectInactiveTime(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectInactiveTime()");
     if (editParticleEffect is null)
         return;

@@ -291,7 +278,6 @@

 void EditParticleEffectParticleSize(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectParticleSize()");
     if (editParticleEffect is null)
         return;

@@ -315,7 +301,6 @@

 void EditParticleEffectTimeToLive(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectTimeToLive()");
     if (editParticleEffect is null)
         return;

@@ -333,7 +318,6 @@

 void EditParticleEffectVelocity(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectVelocity()");
     if (editParticleEffect is null)
         return;

@@ -351,7 +335,6 @@

 void EditParticleEffectRotation(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectRotation()");
     if (editParticleEffect is null)
         return;

@@ -369,7 +352,6 @@

 void EditParticleEffectRotationSpeed(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectRotationSpeed()");
     if (editParticleEffect is null)
         return;

@@ -387,7 +369,6 @@

 void EditParticleEffectSizeAdd(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectSizeAdd()");
     if (editParticleEffect is null)
         return;

@@ -398,7 +379,6 @@

 void EditParticleEffectSizeMultiply(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectSizeMultiply()");
     if (editParticleEffect is null)
         return;

@@ -409,7 +389,6 @@

 void EditParticleEffectAnimationLodBias(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectAnimationLodBias()");
     if (editParticleEffect is null)
         return;

@@ -420,7 +399,6 @@

 void EditParticleEffectNumParticles(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectNumParticles()");
     if (editParticleEffect is null)
         return;

@@ -435,7 +413,6 @@

 void EditParticleEffectEmitterSize(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectEmitterSize()");
     if (editParticleEffect is null)
         return;

@@ -455,7 +432,6 @@

 void EditParticleEffectEmissionRate(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectEmissionRate()");
     if (editParticleEffect is null)
         return;

@@ -470,7 +446,6 @@

 void EditParticleEffectEmitterShape(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectEmitterShape()");
     if (editParticleEffect is null)
         return;

@@ -490,7 +465,6 @@

 void EditParticleEffectMaterial(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectMaterial()");
     if (editParticleEffect is null)
         return;

@@ -509,7 +483,6 @@

 void PickEditParticleEffectMaterial(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("PickEditParticleEffectMaterial()");
     @resourcePicker = GetResourcePicker(StringHash("Material"));
     if (resourcePicker is null)
         return;
@@ -523,7 +496,6 @@

 void PickEditParticleEffectMaterialDone(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("PickEditParticleEffectMaterialDone()");
     StoreResourcePickerPath();
     CloseFileSelector();

@@ -548,7 +520,6 @@

 void EditParticleEffectScaled(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectScaled()");
     if (editParticleEffect is null)
         return;

@@ -563,7 +534,6 @@

 void EditParticleEffectSorted(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectSorted()");
     if (editParticleEffect is null)
         return;

@@ -578,7 +548,6 @@

 void EditParticleEffectRelative(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectRelative()");
     if (editParticleEffect is null)
         return;

@@ -593,7 +562,6 @@

 bool ShowParticleEffectEditor()
 {
-    log.Info("ShowParticleEffectEditor()");
     RefreshParticleEffectEditor();
     particleEffectWindow.visible = true;
     particleEffectWindow.BringToFront();
@@ -602,14 +570,12 @@

 void HideParticleEffectEditor()
 {
-    log.Info("HideParticleEffectEditor()");
     if (particleEffectWindow !is null)
         particleEffectWindow.visible = false;
 }

 void InitParticleEffectPreview()
 {
-    log.Info("InitParticleEffectPreview()");
     particlePreviewScene = Scene("particlePreviewScene");
     particlePreviewScene.CreateComponent("Octree");

@@ -643,7 +609,7 @@
     gizmo.occludee = false;

     particleEffectEmitter = particleEffectPreviewNode.CreateComponent("ParticleEmitter");
-    editParticleEffect = CreateNewParticleEffect();//cache.GetResource("ParticleEffect", "Particle/SnowExplosion.xml");
+    editParticleEffect = CreateNewParticleEffect();
     particleEffectEmitter.effect = editParticleEffect;

     particleEffectPreview = particleEffectWindow.GetChild("ParticleEffectPreview", true);
@@ -666,13 +632,13 @@

 void EditParticleEffect(ParticleEffect@ effect)
 {
-    log.Info("EditParticleEffect()");
     if (effect is null)
         return;

     if (editParticleEffect !is null)
         UnsubscribeFromEvent(editParticleEffect, "ReloadFinished");

+    cache.ReloadResource(effect);
     editParticleEffect = effect;
     particleEffectEmitter.effect = editParticleEffect;

@@ -684,7 +650,6 @@

 void RefreshParticleEffectEditor()
 {
-    log.Info("RefreshParticleEffectEditor()");
     RefreshParticleEffectPreview();
     RefreshParticleEffectName();
     RefreshParticleEffectBasicAttributes();
@@ -695,7 +660,6 @@

 void RefreshParticleEffectColorFrames()
 {
-    log.Info("RefreshParticleEffectColorFrames()");
     if (editParticleEffect is null)
         return;

@@ -815,7 +779,6 @@

 void RefreshParticleEffectTextureFrames()
 {
-    log.Info("RefreshParticleEffectTextureFrames()");
     if (editParticleEffect is null)
         return;

@@ -936,7 +899,6 @@

 void EditParticleEffectColorFrame(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectColorFrame()");
     if (editParticleEffect is null)
         return;

@@ -968,7 +930,6 @@

 void EditParticleEffectTextureFrame(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectTextureFrame()");
     if (editParticleEffect is null)
         return;

@@ -1000,7 +961,6 @@

 void RefreshParticleEffectPreview()
 {
-    log.Info("RefreshParticleEffectPreview()");
     if (particleEffectEmitter is null || editParticleEffect is null)
         return;
     particleEffectEmitter.effect = editParticleEffect;
@@ -1010,7 +970,6 @@

 void RefreshParticleEffectName()
 {
-    log.Info("RefreshParticleEffectName()");
     UIElement@ container = particleEffectWindow.GetChild("NameContainer", true);
     if (container is null)
         return;
@@ -1028,7 +987,6 @@

 void RefreshParticleEffectBasicAttributes()
 {
-    log.Info("RefreshParticleEffectBasicAttributes()");
     if (editParticleEffect is null)
         return;

@@ -1096,7 +1054,6 @@

 void RefreshParticleEffectMaterial()
 {
-    log.Info("RefreshParticleEffectMaterial()");
     UIElement@ container = particleEffectWindow.GetChild("ParticleMaterialContainer", true);
     if (container is null)
         return;
@@ -1125,7 +1082,6 @@

 void RotateParticleEffectPreview(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("RotateParticleEffectPreview()");
     int elemX = eventData["ElementX"].GetInt();
     int elemY = eventData["ElementY"].GetInt();

@@ -1141,7 +1097,6 @@

 void EditParticleEffectName(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("EditParticleEffectName()");
     LineEdit@ nameEdit = eventData["Element"].GetPtr();
     String newParticleEffectName = nameEdit.text.Trimmed();
     if (!newParticleEffectName.empty && !(editParticleEffect !is null && newParticleEffectName == editParticleEffect.name))
@@ -1154,7 +1109,6 @@

 void PickEditParticleEffect()
 {
-    log.Info("PickEditParticleEffect()");
     @resourcePicker = GetResourcePicker(StringHash("ParticleEffect"));
     if (resourcePicker is null)
         return;
@@ -1168,7 +1122,6 @@

 void PickEditParticleEffectDone(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("PickEditParticleEffectDone()");
     StoreResourcePickerPath();
     CloseFileSelector();

@@ -1189,13 +1142,11 @@

 void NewParticleEffect()
 {
-    log.Info("NewParticleEffect()");
     EditParticleEffect(CreateNewParticleEffect());
 }

 void RevertParticleEffect()
 {
-    log.Info("RevertParticleEffect()");
     if (editParticleEffect is null)
         return;

@@ -1208,7 +1159,6 @@

 void SaveParticleEffect()
 {
-    log.Info("SaveParticleEffect()");
     if (editParticleEffect is null || editParticleEffect.name.empty)
         return;

@@ -1222,7 +1172,6 @@

 void SaveParticleEffectAs()
 {
-    log.Info("SaveParticleEffectAs()");
     if (editParticleEffect is null)
         return;

@@ -1239,7 +1188,6 @@

 void SaveParticleEffectAsDone(StringHash eventType, VariantMap& eventData)
 {
-    log.Info("SaveParticleEffectAsDone()");
     StoreResourcePickerPath();
     CloseFileSelector();
     @resourcePicker = null;
@@ -1274,7 +1222,6 @@

 void BeginParticleEffectEdit()
 {
-    log.Info("BeginParticleEffectEdit()");
     if (editParticleEffect is null)
         return;

@@ -1285,7 +1232,6 @@

 void EndParticleEffectEdit()
 {
-    log.Info("EndParticleEffectEdit()");
     if (editParticleEffect is null)
         return;
     if (!dragEditAttribute)


Added getters for clipRect and bufferRect, to change the drawing area when copying pixels from the source->buffer or from the buffer->screen.

--- net/flashpunk/graphics/Image.as
+++ net/flashpunk/graphics/Image.as
@@ -226,6 +226,16 @@
 		 */
 		public function get height():uint { return _bufferRect.height; }

+		/**
+		 * Clipping rectangle for the image.
+		 */
+		public function get clipRect():Rectangle { return _sourceRect; }
+
+		/**
+		 * Clipping rectangle for the buffer.
+		 */
+		public function get bufferRect():Rectangle { return _bufferRect; }
+
 		/** @private Source BitmapData image. */
 		protected function get source():BitmapData { return _source; }


busyWaitWrapper functions now handle multiple targets

--- WeaveCore/src/weave/core/ExternalSessionStateInterface.as
+++ WeaveCore/src/weave/core/ExternalSessionStateInterface.as
@@ -18,11 +18,11 @@
 	import flash.utils.Dictionary;
 	import flash.utils.getQualifiedClassName;

+	import weave.api.getCallbackCollection;
 	import weave.api.core.IExternalSessionStateInterface;
 	import weave.api.core.ILinkableDynamicObject;
 	import weave.api.core.ILinkableHashMap;
 	import weave.api.core.ILinkableObject;
-	import weave.api.getCallbackCollection;
 	import weave.compiler.Compiler;
 	import weave.compiler.ICompiledObject;
 	import weave.compiler.StandardLib;
@@ -391,11 +391,7 @@
 				}

 				if (delayWhileBusy)
-				{
-					if (_funcToWrapper[callback] == null)
-						_funcToWrapper[callback] = generateBusyWaitWrapper(callback, object);
-					callback = _funcToWrapper[callback];
-				}
+					callback = _funcToWrapper[callback] as Function || (_funcToWrapper[callback] = generateBusyWaitWrapper(callback));

 				_d2d_callback_target.set(callback, object, true);
 				if (immediateMode)
@@ -412,12 +408,15 @@
 			return false;
 		}

-		private function generateBusyWaitWrapper(callback:Function, object:ILinkableObject):Function
-		{
-			return function():void {
-				if (!WeaveAPI.SessionManager.linkableObjectIsBusy(object))
-					callback();
+		private function generateBusyWaitWrapper(callback:Function):Function
+		{
+			var wrapper:Function = function():void {
+				for (var target:* in _d2d_callback_target.dictionary[wrapper])
+					if (WeaveAPI.SessionManager.linkableObjectIsBusy(target))
+						return;
+				callback();
 			};
+			return wrapper;
 		}

 		/**
@@ -434,6 +433,7 @@
 				for (var target:Object in _d2d_callback_target.dictionary[callback])
 					getCallbackCollection(target as ILinkableObject).removeCallback(callback);
 				delete _d2d_callback_target.dictionary[callback];
+				delete _funcToWrapper[callback];
 				return true;
 			}


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1290379 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridHeaderInfo.as
+++ frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridHeaderInfo.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


upgrade to use BeadMetrics

upgrade to use BeadMetrics

--- frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
+++ frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
@@ -26,11 +26,13 @@
 	import org.apache.flex.core.IUIBase;
 	import org.apache.flex.core.IViewport;
 	import org.apache.flex.core.IViewportModel;
-	import org.apache.flex.html.supportClasses.Viewport;
+    import org.apache.flex.core.UIMetrics;
 	import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+    import org.apache.flex.html.supportClasses.Viewport;
+    import org.apache.flex.utils.BeadMetrics;

     /**
      *  The FlexibleFirstChildHorizontalLayout class is a simple layout
@@ -167,9 +169,8 @@
             var xx:Number = layoutParent.resizableView.width;
             if (isNaN(xx) || xx <= 0)
                 return true;
-            var padding:Object = determinePadding();
-            // some browsers don't like it when you go all the way to the right edge.
-            xx -= padding.paddingLeft + padding.paddingRight + 1;
+            var uiMetrics:UIMetrics = BeadMetrics.getMetrics(layoutParent.resizableView);
+            xx -= uiMetrics.left + uiMetrics.right + 1; // some browsers won't layout to the edge

             for (var i:int = n - 1; i >= 0; i--)
 			{
@@ -277,64 +278,6 @@
             return sizeChanged;
 		}

-        // TODO (aharui): utility class or base class
-        /**
-         *  Determines the top and left padding values, if any, as set by
-         *  padding style values. This includes "padding" for all padding values
-         *  as well as "padding-left" and "padding-top".
-         *
-         *  Returns an object with paddingLeft and paddingTop properties.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        protected function determinePadding():Object
-        {
-            var paddingLeft:Object;
-            var paddingTop:Object;
-            var paddingRight:Object;
-            var padding:Object = ValuesManager.valuesImpl.getValue(host, "padding");
-            if (typeof(padding) == "Array")
-            {
-                if (padding.length == 1)
-                    paddingLeft = paddingTop = paddingRight = padding[0];
-                else if (padding.length <= 3)
-                {
-                    paddingLeft = padding[1];
-                    paddingTop = padding[0];
-                    paddingRight = padding[1];
-                }
-                else if (padding.length == 4)
-                {
-                    paddingLeft = padding[3];
-                    paddingTop = padding[0];
-                    paddingRight = padding[1];
-                }
-            }
-            else if (padding == null)
-            {
-                paddingLeft = ValuesManager.valuesImpl.getValue(host, "padding-left");
-                paddingTop = ValuesManager.valuesImpl.getValue(host, "padding-top");
-                paddingRight = ValuesManager.valuesImpl.getValue(host, "padding-right");
-            }
-            else
-            {
-                paddingLeft = paddingTop = paddingRight = padding;
-            }
-            var pl:Number = Number(paddingLeft);
-            var pt:Number = Number(paddingTop);
-            var pr:Number = Number(paddingRight);
-            if (isNaN(pl))
-                pl = 0;
-            if (isNaN(pt))
-                pt = 0;
-            if (isNaN(pr))
-                pr = 0;
-            return {paddingLeft:pl, paddingTop:pt, paddingRight:pr};
-        }
-
     }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259356 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/IIMESupport.as
+++ frameworks/projects/framework/src/mx/core/IIMESupport.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.core
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259415 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/IMXMLObject.as
+++ frameworks/projects/framework/src/mx/core/IMXMLObject.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2006 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 7221
Author:   dsubrama@adobe.com
Date:     2009-05-22T16:27:26.493658Z

Log Message:
-----------
-Use Drawing API-2 to render caps for every Line graphic element's strokes. As part of this, GradientStroke now implements IStroke and IStroke has a new method, generateGraphicsStroke() which returns a GraphicsStroke object representing this stroke. More refactoring to share graphics stroke logic between LinearGradientStroke and RadialGradientStroke.
-Removed some un-used imports.
-Added some comments to ItemRenderer and had modified List to use static constants for event listeners.

Fixes: SDK-17661, SDK-21353, SDK-21251

Checkintests: Pass
FXG Tests: Passed (cyclone ran by Joan)
Doc: Added ASDoc for ItemRenderer and IStroke, a glance-over would be swell.
Reviewer: Jason for SDK-17661 me for the others.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/IStroke.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/LinearGradientStroke.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/SolidColorStroke.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/RadialGradientStroke.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/Line.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/GradientStroke.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/ErrorSkin.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1261081 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/graphics/IStroke.as
+++ frameworks/projects/framework/src/mx/graphics/IStroke.as
@@ -13,6 +13,7 @@
 {

 import flash.display.Graphics;
+import flash.display.GraphicsStroke;
 import flash.geom.Rectangle;

 /**
@@ -105,6 +106,22 @@
 	function apply(g:Graphics):void;

 	function draw(g:Graphics, rc:Rectangle):void;
+
+    /**
+     *  Generates a GraphicsStroke object representing
+     *  this stroke.
+     *
+     *  @param rect The stroke's bounding box.
+     *
+     *  @return The Drawing API-2 GraphicsStroke object representing
+     *  this stroke.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+	function generateGraphicsStroke(rect:Rectangle):GraphicsStroke;
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 10755
Author:   clucier@adobe.com
Date:     2009-09-30T19:32:20.239118Z

Log Message:
-----------
Cleanup. Removing all 2.x APIs that have been deprecated since 3.0.

QE notes:  None
Doc notes: None
Bugs: SDK-23265
Reviewer: Ryan, Gordon
Tests run: Checkin
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/HistoryManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceBundle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IHistoryManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/Locale.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1262203 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/resources/Locale.as
+++ frameworks/projects/framework/src/mx/resources/Locale.as
@@ -47,48 +47,6 @@

     //--------------------------------------------------------------------------
     //
-    //  Class methods
-    //
-    //--------------------------------------------------------------------------
-
-    [Deprecated(replacement="ResourceManager.localeChain", since="3.0")]
-
-    /**
-     *  Returns a Locale object, if you compiled your application
-     *  for a single locale. Otherwise, it returns null.
-     *
-     *
This method has been deprecated because the Flex framework
-     *  now supports having resource bundles for multiple locales
-     *  in the same application.
-     *  You can use the getLocale() method of IResourceManager
-     *  to find out which locales the ResourceManager has resource bundles for.
-     *  You can use the localeChain property of IResourceManager
-     *  to determine which locales the ResourceManager searches for
-     *  resources.

-     *
-     *  @param sm The current SystemManager.
-     *
-     *  @return Returns a Locale object.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    public static function getCurrent(sm:ISystemManager):Locale
-    {
-        if (!currentLocale)
-        {
-            var compiledLocales:Array = sm.info()["compiledLocales"];
-            if (compiledLocales != null && compiledLocales.length == 1)
-                currentLocale = new Locale(compiledLocales[0]);
-        }
-
-        return currentLocale;
-    }
-
-    //--------------------------------------------------------------------------
-    //
     //  Constructor
     //
     //--------------------------------------------------------------------------


Transferred from the Adobe Open Source Subversion Repository

Revision: 5257
Author:   jszeto@adobe.com
Date:     2009-03-11T22:12:50.289894Z

Log Message:
-----------
Flex SDK Bug Fixes

SDK-19314 Arrow keys which move a slider's thumb also scroll the player window.

If we handle an arrow key or HOME/END, then we stop it from propagating.

SDK-19443 FxHSlider doesnt position tooltip/datatip correctly when on the right edge of the flex app

Added logic to ensure that the dataTip stays in the bounds of the screen

SDK-19384 @review tags are appearing before asdoc descriptions, causing empty ASDoc tooltips in Flex Builder

Removed all occurrences of @review since it is no longer used.

QE Notes: n/a
Doc Notes: n/a
Bugs: SDK-19314, SDK-19443, SDK-19384
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/filters/ColorMatrixFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TabNavigator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/DropDownBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1267709 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/containers/TabNavigator.as
+++ frameworks/projects/mx/src/mx/containers/TabNavigator.as
@@ -511,7 +511,6 @@
     /**
      *  The set of styles to pass from the TabNavigator to the tabBar.
      *  @see mx.styles.StyleProxy
-     *  @review
      *
      *  @langversion 3.0
      *  @playerversion Flash 9