Transferred from the Adobe Open Source Subversion Repository

Revision: 3297
Author:   jimurphy@adobe.com
Date:     2008-09-22T17:59:53.303960Z

Log Message:
-----------
Merge 3.0.x revisions 3260,3262,3266,3271,3276,3282,3285,3292,3294 -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/FaultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/ResultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/DirectHTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/dragClasses/DragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractInvoker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/Operation.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</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/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IFocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/AbstractMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/Fault.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeProvider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeGroup.as</path>

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

--- frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridHeader.as
+++ frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridHeader.as
@@ -1100,7 +1100,7 @@
                     i = headerItems.length - 1;
             }

-            if (visibleColumns[i].sortable)
+            if (visibleColumns.length > 0 && visibleColumns[i].sortable)
             {
                 var s:Sprite = Sprite(
                     selectionLayer.getChildByName("headerSelection"));


Transferred from the Adobe Open Source Subversion Repository

Revision: 18031
Author:   klin@adobe.com
Date:     2010-10-06T18:01:29.650399Z

Log Message:
-----------
Enable column visibility to change at runtime. When column.visible is changed, it will cause the columns IList to dispatch a CollectionEventKind.UPDATE event for the Grid to handle. The Grid then fixes up GridDimensions and clears the layout cache.

Grid.as - Added columns_visibleChangedHandler which is called when the Grid gets an UPDATE event from the columns IList. It clears the columns that are changing and sets their typical and actual width to the correct values in gridDimensions.

GridColumn.as - visible property now dispatches a CollectionEvent on the columns IList.

GridDimensions.as, GridLayout.as, GridSelection.as - various small fixes to make this all work.

QE notes: No
Doc notes: No
Bugs: SDK-26843
Reviewer: Hans
Tests run: cyclone server
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridSelection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridDimensions.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
@@ -19,6 +19,9 @@
 import mx.core.IIMESupport;
 import mx.core.Singleton;
 import mx.core.mx_internal;
+import mx.events.CollectionEvent;
+import mx.events.CollectionEventKind;
+import mx.events.PropertyChangeEvent;

 import spark.components.DataGrid;
 import spark.components.Grid;
@@ -946,7 +949,19 @@
             return;

         _visible = value;
-        dispatchChangeEvent("visibleChanged");
+
+        // dispatch event for grid.
+        if (grid && grid.columns)
+        {
+            var propertyChangeEvent:PropertyChangeEvent = PropertyChangeEvent.createUpdateEvent(this, "visible", !_visible, _visible);
+            var collectionEvent:CollectionEvent = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
+            collectionEvent.kind = CollectionEventKind.UPDATE;
+            collectionEvent.items.push(propertyChangeEvent);
+
+            grid.columns.dispatchEvent(collectionEvent);
+        }
+
+        dispatchChangeEvent("visibleChanged");
     }

     //--------------------------------------------------------------------------


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@1248437 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/advancedgrids/src/mx/collections/HierarchicalData.as
+++ frameworks/projects/advancedgrids/src/mx/collections/HierarchicalData.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.collections
 {


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@1262279 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/skins/halo/BrokenImageBorderSkin.as
+++ frameworks/projects/framework/src/mx/skins/halo/BrokenImageBorderSkin.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 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: 19611
Author:   jasonsj@adobe.com
Date:     2011-01-05T22:45:41.935084Z

Log Message:
-----------
Enable TextArea scrolling in the mobile theme. Refactored HScrollBar and VScrollBar skins for use with TextArea.

QE notes: None
Doc notes:
Bugs:
Reviewer: jszeto
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/TextAreaSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextAreaVScrollBarSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextAreaVScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextAreaHScrollBarSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextAreaHScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorButtonBarSkin.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/supportClasses/TextSkinBase.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/HScrollBarSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as
@@ -49,16 +49,17 @@
         super();

         useChromeColor = true;
-		layoutMeasuredHeight = 20;
-
-		// Depending on density set our measured width
+        layoutMeasuredHeight = 20;
+        thumbSkinClass = VScrollBarThumbSkin;
+
+        // Depending on density set our measured width
         switch (applicationDPI)
         {
-			case DPIClassification.DPI_320:
-			{
-				layoutMeasuredWidth = 12;
-				break;
-			}
+            case DPIClassification.DPI_320:
+            {
+                layoutMeasuredWidth = 12;
+                break;
+            }
             case DPIClassification.DPI_240:
             {
                 layoutMeasuredWidth = 9;
@@ -78,11 +79,16 @@
     //  Variables
     //
     //--------------------------------------------------------------------------
+
     /**
      *  @copy spark.skins.spark.ApplicationSkin#hostComponent
      */
     public var hostComponent:VScrollBar;
-
+
+    /**
+     *  Skin to use for the thumb Button skin part
+     */
+    protected var thumbSkinClass:Class;

     //--------------------------------------------------------------------------
     //
@@ -133,13 +139,13 @@
         if (!thumb)
         {
             thumb = new Button();
-            thumb.setStyle("skinClass", spark.skins.mobile.VScrollBarThumbSkin);
+            thumb.setStyle("skinClass", thumbSkinClass);
             thumb.width = layoutMeasuredWidth;
             thumb.height = layoutMeasuredWidth;
             addChild(thumb);
         }
     }
-
+
     /**
      *  @private
      */
@@ -148,7 +154,7 @@
         measuredWidth = layoutMeasuredWidth;
         measuredHeight = layoutMeasuredHeight;
     }
-
+
     /**
      *  @private
      */


Transferred from the Adobe Open Source Subversion Repository

Revision: 17768
Author:   cframpto@adobe.com
Date:     2010-09-20T17:01:16.894026Z

Log Message:
-----------
Change getCellAt() to return CellPosition rather than Object.  Remove unused selectionContainsOnlyIndicesCR() method.  Optimize selectionContainsOnlyIndices() a bit.

QE notes:
Doc notes:
Bugs:
Reviewer: Hans
Tests run: cyclone
Is noteworthy for integration: yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
@@ -2094,7 +2094,7 @@

     /**
      *  Return the row and column indices of the cell that overlaps the pixel at the
-     *  specified grid coordinate as an Object with "rowIndex" and "columnIndex" properties.
+     *  specified grid coordinate.
      *  If no such cell exists, null is returned.
      *
      *
The example function below uses this method to compute the value of the
@@ -2102,30 +2102,30 @@
      *

      *  function getCellData(x:Number, y:Number):Object
      *  {
-     *      var cell:Object = getCellAt(x, y);
+     *      var cell:CellPosition = getCellAt(x, y);
      *      if (!cell)
      *          return null;
      *      var GridColumn:column = grid.columns.getItemAt(cell.columnIndex);
-     *      return grid.dataProvider[cell.rowIndex][column.dataField];
+     *      return grid.dataProvider.getItemAt(cell.rowIndex)[column.dataField];
      *  }
      *

      *
      *  @param x The pixel's x coordinate relative to the grid.
      *  @param y The pixel's y coordinate relative to the grid.
-     *  @return An object like {rowIndex:0, columnIndex:0} or null.
+     *  @return The cell position or null.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 2.0
      *  @productversion Flex 4.5
      */
-    public function getCellAt(x:Number, y:Number):Object
+    public function getCellAt(x:Number, y:Number):CellPosition
     {
         const rowIndex:int = gridDimensions.getRowIndexAt(x, y);
         const columnIndex:int = gridDimensions.getColumnIndexAt(x, y);
         if ((rowIndex == -1) || (columnIndex == -1))
             return null;
-        return {rowIndex:rowIndex, columnIndex:columnIndex};
+        return new CellPosition(rowIndex, columnIndex);
     }

     /**


Minor

Minor

--- as3/com/netease/protobuf/UInt64.as
+++ as3/com/netease/protobuf/UInt64.as
@@ -28,9 +28,9 @@
 		 * Convert to Number.
 		 */
 		public final function toNumber():Number {
-			return (high * 4294967296) + low
+			return (high * 4294967296.0) + low
 		}
-			public final function toString(radix:uint = 10):String {
+		public final function toString(radix:uint = 10):String {
 			if (radix < 2 || radix > 36) {
 				throw new ArgumentError
 			}


Fixed updateGeometry in SoftwareSkinningHelper for when XYZ and NORMAL components are in different VertexStreams

--- src/aerys/minko/scene/controller/mesh/skinning/SoftwareSkinningHelper.as
+++ src/aerys/minko/scene/controller/mesh/skinning/SoftwareSkinningHelper.as
@@ -1,5 +1,9 @@
 package aerys.minko.scene.controller.mesh.skinning
 {
+	import flash.geom.Matrix3D;
+	import flash.utils.ByteArray;
+	import flash.utils.Dictionary;
+
 	import aerys.minko.render.geometry.Geometry;
 	import aerys.minko.render.geometry.stream.IVertexStream;
 	import aerys.minko.render.geometry.stream.StreamUsage;
@@ -10,10 +14,6 @@
 	import aerys.minko.scene.node.Mesh;
 	import aerys.minko.type.animation.SkinningMethod;

-	import flash.geom.Matrix3D;
-	import flash.utils.ByteArray;
-	import flash.utils.Dictionary;
-
 	internal final class SoftwareSkinningHelper extends AbstractSkinningHelper
 	{
 		private static const TMP_VECTOR : Vector.<uint> = new <uint>[];
@@ -84,55 +84,63 @@
 			var format				: VertexFormat;
 			var dataLength			: uint;
 			var bytesPerVertex		: uint;
-			var positionStride		: uint;
-			var normalStride		: uint;
+			var stride				: uint;
 			var numInfluences		: uint;

 			for (var streamId : uint = 0; streamId < numStreams; ++streamId)
 			{
-				var realStream			: VertexStream	= VertexStream(realGeometry.getVertexStream(streamId));
-				var fakeStream			: VertexStream	= VertexStream(fakeGeometry.getVertexStream(streamId));
-				var realData			: ByteArray		= realStream.lock();
-				var fakeData			: ByteArray		= fakeStream.lock();
+				var realStreamXYZ		: VertexStream	= VertexStream(realGeometry.getVertexStream(streamId).getStreamByComponent(VertexComponent.XYZ));
+				var fakeStreamXYZ		: VertexStream	= VertexStream(fakeGeometry.getVertexStream(streamId).getStreamByComponent(VertexComponent.XYZ));
+
+				var realStreamNormal	: VertexStream	= VertexStream(realGeometry.getVertexStream(streamId).getStreamByComponent(VertexComponent.NORMAL));
+				var fakeStreamNormal	: VertexStream	= VertexStream(fakeGeometry.getVertexStream(streamId).getStreamByComponent(VertexComponent.NORMAL));
+
+				var realDataXYZ			: ByteArray		= realStreamXYZ.lock();
+				var fakeDataXYZ			: ByteArray		= fakeStreamXYZ.lock();
+
+				var realDataNormal		: ByteArray;
+				var fakeDataNormal		: ByteArray;
+
+				if (realStreamXYZ != realStreamNormal)
+					realDataNormal = realStreamNormal.lock();
+				else
+					realDataNormal = realDataXYZ;
+
+				if (fakeStreamXYZ != fakeStreamNormal)
+					fakeDataNormal = fakeStreamNormal.lock();
+				else
+					fakeDataNormal = fakeDataXYZ;

 				if (streamId == 0)
 				{
-					format				= realStream.format;
-					dataLength			= realData.length;
+					format				= realStreamXYZ.format;
+					dataLength			= realDataXYZ.length;
 					bytesPerVertex		= format.numBytesPerVertex;
-					positionStride		= format.getBytesOffsetForComponent(VertexComponent.XYZ);
-					normalStride		= format.getBytesOffsetForComponent(VertexComponent.NORMAL);
+					stride				= format.getBytesOffsetForComponent(VertexComponent.XYZ);
 					getInfluenceStrides(format, TMP_VECTOR);
 					numInfluences		= influenceStrides.length;
 				}

 				for (var offset : uint = 0; offset < dataLength; offset += bytesPerVertex)
 				{
-					var positionOffset	: uint		= offset + positionStride;
-					realData.position = positionOffset;
-					var inX				: Number	= realData.readFloat();
-					var inY				: Number	= realData.readFloat();
-					var inZ				: Number	= realData.readFloat();
-
-					var normalOffset	: uint		= offset + normalStride;
-					realData.position = normalOffset;
-					var inNx			: Number	= realData.readFloat();
-					var inNy			: Number	= realData.readFloat();
-					var inNz			: Number	= realData.readFloat();
+					var positionOffset	: uint		= offset + stride;
+					realDataXYZ.position = positionOffset;
+
+					var inX				: Number	= realDataXYZ.readFloat();
+					var inY				: Number	= realDataXYZ.readFloat();
+					var inZ				: Number	= realDataXYZ.readFloat();
+

 					var outX			: Number	= 0;
 					var outY			: Number	= 0;
 					var outZ			: Number	= 0;
-					var outNx			: Number	= 0;
-					var outNy			: Number	= 0;
-					var outNz			: Number	= 0;

 					for (var influenceId : uint = 0; influenceId < numInfluences; ++influenceId)
 					{
-						realData.position = offset + influenceStrides[influenceId];
-
-						var jointId			: Number	= realData.readFloat();
-						var jointWeight		: Number	= realData.readFloat();
+						realDataXYZ.position = offset + influenceStrides[influenceId];
+
+						var jointId			: Number	= realDataXYZ.readFloat();
+						var jointWeight		: Number	= realDataXYZ.readFloat();
 						var matrixOffset	: uint		= 16 * jointId;

 						if (jointWeight != 0)
@@ -151,7 +159,48 @@
 								+ inY * _matrices[uint(matrixOffset + 9)]
 								+ inZ * _matrices[uint(matrixOffset + 10)]
 								+ _matrices[uint(matrixOffset + 11)]);
-
+						}
+					}
+
+					fakeDataXYZ.position = positionOffset;
+					fakeDataXYZ.writeFloat(outX);
+					fakeDataXYZ.writeFloat(outY);
+					fakeDataXYZ.writeFloat(outZ);
+				}
+
+
+				if (streamId == 0)
+				{
+					format				= realStreamNormal.format;
+					dataLength			= realDataNormal.length;
+					bytesPerVertex		= format.numBytesPerVertex;
+					stride				= format.getBytesOffsetForComponent(VertexComponent.NORMAL);
+					getInfluenceStrides(format, TMP_VECTOR);
+					numInfluences		= influenceStrides.length;
+				}
+
+				for (offset = 0; offset < dataLength; offset += bytesPerVertex)
+				{
+					var normalOffset	: uint		= offset + stride;
+					realDataNormal.position = normalOffset;
+					var inNx			: Number	= realDataNormal.readFloat();
+					var inNy			: Number	= realDataNormal.readFloat();
+					var inNz			: Number	= realDataNormal.readFloat();
+
+					var outNx			: Number	= 0;
+					var outNy			: Number	= 0;
+					var outNz			: Number	= 0;
+
+					for (influenceId = 0; influenceId < numInfluences; ++influenceId)
+					{
+						realDataNormal.position = offset + influenceStrides[influenceId];
+
+						jointId			= realDataNormal.readFloat();
+						jointWeight		= realDataNormal.readFloat();
+						matrixOffset	= 16 * jointId;
+
+						if (jointWeight != 0)
+						{
 							outNx += jointWeight * (inNx * _matrices[uint(matrixOffset + 0)]
 								+ inNy * _matrices[uint(matrixOffset + 1)]
 								+ inNz * _matrices[uint(matrixOffset + 2)]);
@@ -167,20 +216,20 @@
 					}

 					var invNormalLength : Number = 1 / Math.sqrt(outNx * outNx + outNy * outNy + outNz * outNz);
-
-					fakeData.position = positionOffset;
-					fakeData.writeFloat(outX);
-					fakeData.writeFloat(outY);
-					fakeData.writeFloat(outZ);
-
-					fakeData.position = normalOffset;
-					fakeData.writeFloat(outNx * invNormalLength);
-					fakeData.writeFloat(outNy * invNormalLength);
-					fakeData.writeFloat(outNz * invNormalLength);
-				}
-
-				realStream.unlock(false);
-				fakeStream.unlock();
+
+					fakeDataNormal.position = normalOffset;
+					fakeDataNormal.writeFloat(outNx * invNormalLength);
+					fakeDataNormal.writeFloat(outNy * invNormalLength);
+					fakeDataNormal.writeFloat(outNz * invNormalLength);
+				}
+
+				realStreamXYZ.unlock(false);
+				if (realStreamNormal != realStreamXYZ)
+					realStreamNormal.unlock(false);
+
+				fakeStreamXYZ.unlock();
+				if (fakeStreamNormal != fakeStreamXYZ)
+					fakeStreamNormal.unlock(false);
 			}
 		}
 	}


[feat] increase alpha on user image overlay

--- src/main/actionscript/com/dotfold/dotvimstat/view/summary/UserSummary.as
+++ src/main/actionscript/com/dotfold/dotvimstat/view/summary/UserSummary.as
@@ -139,7 +139,7 @@
 			_loader.y = 0;

 			var overlay:Shape = new Shape();
-			paintShape(overlay, 0x000000, 0.5);
+			paintShape(overlay, 0x000000, 0.65);

 			content.addChildAt(overlay, getChildIndex(_userNameLabel));


Allow GLoader to load component.

Allow GLoader to load component.

--- source/fairygui/GLoader.as
+++ source/fairygui/GLoader.as
@@ -15,6 +15,7 @@
 		private var _valign: String;
 		private var _autoSize: Boolean;
 		private var _fill: int;
+		private var _shrinkOnly:Boolean;
 		private var _showErrorSign: Boolean;
 		private var _playing: Boolean;
 		private var _frame: Number = 0;
@@ -28,6 +29,7 @@

 		private var _content:Sprite;
 		private var _errorSign: GObject;
+		private var _content2:GComponent;

 		private var _updatingLayout: Boolean;

@@ -57,6 +59,9 @@
 					this.freeExternal(texture);
 			}

+			if(_content2!=null)
+				_content2.dispose();
+
 			super.dispose();
 		}

@@ -113,6 +118,20 @@
 			if (this._fill != value) {
 				this._fill = value;
 				this.updateLayout();
+			}
+		}
+
+		public function get shrinkOnly():Boolean
+		{
+			return _shrinkOnly;
+		}
+
+		public function set shrinkOnly(value:Boolean):void
+		{
+			if(_shrinkOnly!=value)
+			{
+				_shrinkOnly = value;
+				updateLayout();
 			}
 		}

@@ -179,6 +198,11 @@

 		public function get content(): Node {
 			return this._content;
+		}
+
+		public function get component():GComponent
+		{
+			return _content2;
 		}

 		protected function loadContent(): void {
@@ -237,6 +261,25 @@
 					MovieClip(this._content).boundsRect = new Rectangle(0,0,this._contentSourceWidth,this._contentSourceHeight);
 					this.updateLayout();
 				}
+				else if(_contentItem.type==PackageItemType.Component)
+				{
+					var obj:GObject = UIPackage.createObjectFromURL(itemURL);
+					if(!obj)
+						setErrorState();
+					else if(!(obj is GComponent))
+					{
+						obj.dispose();
+						setErrorState();
+					}
+					else
+					{
+						_content2 = obj.asCom;
+						this._displayObject.addChild(_content2.displayObject);
+						_contentSourceWidth = _contentItem.width;
+						_contentSourceHeight = _contentItem.height;
+						updateLayout();
+					}
+				}
 				else
 					this.setErrorState();
 			}
@@ -302,7 +345,7 @@
 		}

 		private function updateLayout(): void {
-			if (this._content == null) {
+			if (_content2==null && this._content == null) {
 				if (this._autoSize) {
 					this._updatingLayout = true;
 					this.setSize(50, 30);
@@ -311,10 +354,6 @@
 				return;
 			}

-			this._content.x = 0;
-			this._content.y = 0;
-			this._content.scaleX = 1;
-			this._content.scaleY = 1;
 			this._contentWidth = this._contentSourceWidth;
 			this._contentHeight = this._contentSourceHeight;

@@ -328,7 +367,21 @@
 				this._updatingLayout = false;

 				if(_contentWidth==_width && _contentHeight==_height)
+				{
+					if(_content2!=null)
+					{
+						_content2.setXY(0, 0);
+						_content2.setScale(1, 1);
+					}
+					else
+					{
+						_content.x = 0;
+						_content.y = 0;
+						_content.scaleX = 1;
+						_content.scaleY = 1;
+					}
 					return;
+				}
 			}

 			var sx: Number = 1, sy: Number = 1;
@@ -357,24 +410,43 @@
 						else
 							sx = sy;
 					}
+
+					if (_shrinkOnly && sx >= 1 && sy >= 1)
+						sx = sy = 1;
+
 					_contentWidth = _contentSourceWidth * sx;
 					_contentHeight = _contentSourceHeight * sy;
 				}
 			}

-			if (this._content is Image)
+			if(_content2!=null)
+				_content2.setScale(sx, sy);
+			else if (this._content is Image)
 				Image(this._content).scaleTexture(sx, sy);
 			else
 				this._content.scale(sx, sy);

+			var nx:Number, ny:Number;
 			if (this._align == "center")
-				this._content.x = Math.floor((this.width - this._contentWidth) / 2);
+				nx = Math.floor((this.width - this._contentWidth) / 2);
 			else if (this._align == "right")
-				this._content.x = this.width - this._contentWidth;
+				nx = this.width - this._contentWidth;
+			else
+				nx = 0;
 			if (this._valign == "middle")
-				this._content.y = Math.floor((this.height - this._contentHeight) / 2);
+				ny = Math.floor((this.height - this._contentHeight) / 2);
 			else if (this._valign == "bottom")
-				this._content.y = this.height - this._contentHeight;
+				ny = this.height - this._contentHeight;
+			else
+				ny = 0;
+
+			if(_content2!=null)
+				_content2.setXY(nx, ny);
+			else
+			{
+				_content.x = nx;
+				_content.y = ny;
+			}
 		}

 		private function clearContent(): void {
@@ -389,6 +461,12 @@
 					this.freeExternal(texture);
 			}

+			if(_content2!=null)
+			{
+				_content2.dispose();
+				_content2 = null;
+			}
+
 			this._contentItem = null;
 		}

@@ -419,6 +497,7 @@
 			if (str)
 				this._fill = LoaderFillType.parse(str);

+			_shrinkOnly = xml.getAttribute("shrinkOnly") == "true";
 			this._autoSize = xml.getAttribute("autoSize") == "true";

 			str = xml.getAttribute("errorSign");


Transferred from the Adobe Open Source Subversion Repository

Revision: 16658
Author:   smgilson@adobe.com
Date:     2010-06-24T18:55:42.130688Z

Log Message:
-----------
update ASDoc comment for sortCompareFunction based on user feedback

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as</path>

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

--- frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
+++ frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
@@ -1226,8 +1226,10 @@
      *  property is not a valid property of the data provider, the sort does
      *  not work or will generate an exception.
      *  If you specify a value of the labelFunction property,
-     *  you must also provide a function to the sortCompareFunction property,
-     *  unless sorting is not allowed on this column.
+     *  you typically also provide a function to the sortCompareFunction property,
+     *  unless sorting is not allowed on this column.
+     *  That means you specify a function when the value from the column's dataField
+     *  does not sort in the same way as the computed value from the labelFunction property.
      *
      *
The AdvancedDataGrid control uses this function to sort the elements of the data
      *  provider collection. The function signature of
@@ -1826,7 +1828,7 @@
             null :
             embeddedFontRegistry.getAssociatedModuleFactory(
                 fontName, bold, italic, this, flexModuleFactory,
-				owner.systemManager);
+                owner.systemManager);
     }

     /**
@@ -1855,7 +1857,7 @@
             null :
             embeddedFontRegistry.getAssociatedModuleFactory(
                 fontName, bold, italic, this, flexModuleFactory,
-				owner.systemManager);
+                owner.systemManager);
         return fontContext != oldEmbeddedFontContext;
     }


Added time support to isActivated()

Added time support to isActivated()

--- com/zehfernando/input/binding/KeyActionBinder.as
+++ com/zehfernando/input/binding/KeyActionBinder.as
@@ -8,6 +8,7 @@
 	import flash.ui.GameInput;
 	import flash.ui.GameInputControl;
 	import flash.ui.GameInputDevice;
+	import flash.utils.getTimer;
 	/**
 	 * @author zeh fernando
 	 */
@@ -44,6 +45,9 @@

 		private static var gameInput:GameInput;

+		private var ii:int;												// Internal i, for speed
+		private var it:int;												// Internal t, for speed
+
 		// ================================================================================================================
 		// STATIC CONSTRUCTOR ---------------------------------------------------------------------------------------------

@@ -167,6 +171,7 @@
 				if (!filteredKeys[i].isActivated) {
 					// Marks as pressed
 					filteredKeys[i].isActivated = true;
+					filteredKeys[i].lastActivatedTime = getTimer();

 					// Add this activation to the list of current activations
 					(actionsActivations[filteredKeys[i].action] as ActivationInfo).activations.push(filteredKeys[i]);
@@ -419,6 +424,7 @@
 		 * Checks whether an action is currently activated (in practice, a button is pressed).
 		 *
 		 * @param action				An arbritrary String id identifying the action that should be checked.
+		 * @param timeToleranceSeconds	Time tolerance, in seconds, before the action is assumed to be expired. If < 0, no time is checked.
 		 *
 		 *
Examples:

 		 *
@@ -430,10 +436,29 @@
 		 * if (isActionActivated("move-right")) {
 		 *     player.moveRight();
 		 * }
+		 *
+		 * // Check if a jump was activated (includes just before falling, for a more user-friendly control):
+		 * if (isTouchingSurface && isActionActivated("jump"), 0.1) {
+		 *     player.moveRight();
+		 * }
 		 *

 		 */
-		public function isActionActivated(__action:String):Boolean {
-			return actionsActivations.hasOwnProperty(__action) && (actionsActivations[__action] as ActivationInfo).activations.length > 0;
+		public function isActionActivated(__action:String, __timeToleranceSeconds:Number = 0):Boolean {
+			if (actionsActivations.hasOwnProperty(__action) && (actionsActivations[__action] as ActivationInfo).activations.length > 0) {
+				if (__timeToleranceSeconds <= 0) {
+					// No need for time tolerance check
+					return true;
+				} else {
+					// Needs to check the time
+					var actionActivations:Vector.<BindingInfo> = (actionsActivations[__action] as ActivationInfo).activations;
+					it = getTimer() - __timeToleranceSeconds * 1000;
+					for (ii = 0; ii < actionActivations.length; ii++) {
+						if (actionActivations[ii].lastActivatedTime >= it) return true;
+					}
+				}
+			}
+
+			return false;
 		}

 		public function consumeAction(__action:String):void {
@@ -505,6 +530,7 @@
 	public var action:String;
 	public var binding:IBinding;
 	public var isActivated:Boolean;
+	public var lastActivatedTime:uint;

 	// ================================================================================================================
 	// CONSTRUCTOR ----------------------------------------------------------------------------------------------------
@@ -513,6 +539,7 @@
 		action = __action;
 		binding = __binding;
 		isActivated = false;
+		lastActivatedTime = 0;
 	}
 }


modified for use in iOS simulator (no longer supported in simulator)

--- actionscript/src/com/freshplanet/ane/AirInAppPurchase/InAppPurchase.as
+++ actionscript/src/com/freshplanet/ane/AirInAppPurchase/InAppPurchase.as
@@ -232,7 +232,7 @@
          * @return
          */
         private static function _isIOS():Boolean {
-            return Capabilities.manufacturer.indexOf("iOS") > -1;
+			return Capabilities.manufacturer.indexOf("iOS") > -1 && Capabilities.os.indexOf("x86_64") < 0 && Capabilities.os.indexOf("i386") < 0;
         }

         /**


Fix in managed context

Fix in managed context

--- src/Modi/ManagedContext.as
+++ src/Modi/ManagedContext.as
@@ -26,7 +26,7 @@
 		{
 			var id:ManagedObjectId = new ManagedObjectId("id_" + _idCounter);
 			_managedObjects[id.objectId] = managedObject;
-			managedObject.contextId = new ManagedObjectId(id);
+			managedObject.contextId = new ManagedObjectId(id.objectId);
 			_idCounter++;
 		}


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@1282425 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2008 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 spark.components.supportClasses
 {


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@1261623 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/managers/IHistoryManagerClient.as
+++ frameworks/projects/framework/src/mx/managers/IHistoryManagerClient.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.managers
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 17330
Author:   chiedozi@adobe.com
Date:     2010-08-16T17:36:59.538425Z

Log Message:
-----------
Removed the sections functionality from ViewNavigator and refactored that logic into TabbedViewNavigator.  Updated dependent performance tests and components.
Introduced MobileApplicationBase and TabbedMobileApplication do support the tabbed use case for mobile.
Deleted SliderSkin from the framework.  All mobile skins now extend MobileSkin.

QE notes:
Doc notes:
Bugs:
Reviewer: Glenn and Ryan
Tests run: checkintests
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/manifest.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.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/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/ViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/managers/PersistenceManager.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorSection.as" copyfrom-rev="17260" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/NavigationStack.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/MobileApplicationBase.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="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/FlipViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/ComponentCatalog/src/ScriptRunner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/SlideViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/ComponentCatalog/src/ComponentCatalog.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorSection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedMobileApplicationSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewHistoryData.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/managers/IPersistenceManager.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/IViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarTrackSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedMobileApplication.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/SliderSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/MobileApplicationSkin.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@1263721 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
@@ -546,6 +546,7 @@
     /**
      *  @private
      */
+    // TODO (chiedozi): Update != to !==
     override protected function partAdded(partName:String, instance:Object):void
     {
         super.partAdded(partName, instance);


Transferred from the Adobe Open Source Subversion Repository

Revision: 11586
Author:   klin@adobe.com
Date:     2009-11-09T21:51:48.562271Z

Log Message:
-----------
Fix for Range-based components to behave like the MX Slider instead of the MX NumericStepper. Also, snapInterval now defaults to stepSize if snapInterval is not explicitly set. Various fixes for wireframe skins.

Range.as - Valid values are now increments of snapInterval starting from the minimum value, but are still constrained by the maximum. The maximum is still included in the range. For example, a Slider with min=1, max=10, and snapInterval=2 has a range of [1, 3, 5, 7, 9, 10]. I modified nearestValidValue() to take the minimum into account when calculating the nearest value. Also, added logic to have snapInterval default to stepSize if stepSize is explicitly set and snapInterval is not. Edited ASDocs to reflect these changes.

Spinner.as, NumericStepper.as - Edited ASDocs to reflect the Range changes.

CheckBoxSkin.mxml, RadioButtonSkin.mxml - Added focusSkinExclusions() for the labelDisplay.

HSliderSkin.mxml, VSliderSkin.mxml - Added dataTip.

QE notes: No
Doc notes: No
Bugs: SDK-23264, SDK-23602, SDK-23903, SDK-23907
Reviewer: Hans
Tests run: checkintests, Slider, NumericStepper, ScrollBar
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VSliderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/HSliderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/RadioButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Range.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/Range.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/Range.as
@@ -259,15 +259,18 @@
     private var _snapInterval:Number = 1;

     private var snapIntervalChanged:Boolean = false;
-
-    /**
-     *  If nonzero, valid values must be an integer multiple of this property,
-     *  or equal to the minimum or the maximum.
+    private var _explicitSnapInterval:Boolean = false;
+
+    /**
+     *  If nonzero, valid values are the sum of the minimum with integer multiples
+     *  of this property and less than or equal to the maximum.
      *
      *
If the value of this property is zero, then valid values are only constrained
      *  to be between minimum and maximum inclusive.

      *
-     *
This property also constrains valid values for the stepSize property.

+     *
This property also constrains valid values for the stepSize property when set.
+     *  If this property is not explicitly set and stepSize is set, then snapInterval
+     *  will default to stepSize.

      *
      *  @default 1
      *  @see #nearestValidValue
@@ -284,12 +287,25 @@

     public function set snapInterval(value:Number):void
     {
+        // snapInterval defaults to stepSize if snapInterval is not
+        // explicitly set.
+        _explicitSnapInterval = true;
+
         if (value == _snapInterval)
             return;
-
-        _snapInterval = value;
+
+        // NaN effectively clears the snapInterval and resets it to 1.
+        if (isNaN(value))
+        {
+            _snapInterval = 1;
+            _explicitSnapInterval = false;
+        }
+        else
+        {
+            _snapInterval = value;
+        }
+
         snapIntervalChanged = true;
-
         stepSizeChanged = true;

         invalidateProperties();
@@ -329,7 +345,19 @@

         if (stepSizeChanged)
         {
-            _stepSize = nearestValidSize(_stepSize);
+            // Only modify stepSize if snapInterval was explicitly set.
+            // Otherwise, snapInterval defaults to stepSize and we set
+            // the value to respect the new snapInterval.
+            if (_explicitSnapInterval)
+            {
+                _stepSize = nearestValidSize(_stepSize);
+            }
+            else
+            {
+                _snapInterval = _stepSize;
+                setValue(nearestValidValue(_value, snapInterval));
+            }
+
             stepSizeChanged = false;
         }
     }
@@ -362,25 +390,26 @@
     }

     /**
-     *  Returns the integer multiple of interval that's closest to value, unless
-     *  value is closer to either the minimum or the maximum limit, in which
-     *  case the corresponding limit is returned.
+     *  Returns the sum of the minimum with an integer multiple of interval that's
+     *  closest to value, unless value is closer to the maximum limit,
+     *  in which case the maximum is returned.
      *
      *
If interval is equal to 0, the value is clipped to the minimum and maximum
      *  limits.

      *
-     *
The valid values for a range are defined by the minimum and maximum
-     *  properties and the multiples of the interval in between.
-     *
-     *  The minimum and maximum values need not be a multiple of snapInterval.

-     *
-     *
For example, if minimum is equal to 1, maximum is equal to 5,
+     *
The valid values for a range are defined by the sum of the minimum property
+     *  with multiples of the interval and also defined to be less than or equal to the
+     *  maximum property.
+     *
+     *  The maximum need not be a multiple of snapInterval.

+     *
+     *
For example, if minimum is equal to 1, maximum is equal to 6,
      *  and snapInterval is equal to 2, the valid
-     *  values for the Range are 1, 2, 4, 5.
-     *
-     *  Similarly, if minimum is equal to 2, maximum is equal to 8,
+     *  values for the Range are 1, 3, 5, 6.
+     *
+     *  Similarly, if minimum is equal to 2, maximum is equal to 9,
      *  and snapInterval is equal to 1.5, the valid
-     *  values for the Range are 2, 3, 4.5, 6, 7.5, and 8.

+     *  values for the Range are 2, 3.5, 5, 6.5, 8, and 9.

      *
      *  @param value The input value.
      *  @param interval The value of snapInterval or an integer multiple of snapInterval.
@@ -395,11 +424,12 @@
     {
         if (interval == 0)
             return Math.max(minimum, Math.min(maximum, value));
-
-        var minValue:Number = minimum;
-        var maxValue:Number = maximum;
+
+        var maxValue:Number = maximum - minimum;
         var scale:Number = 1;
-
+
+        value -= minimum;
+
         // If interval isn't an integer, there's a possibility that the floating point
         // approximation of value or value/interval will be slightly larger or smaller
         // than the real value.  This can lead to errors in calculations like
@@ -412,18 +442,17 @@
         if (interval != Math.round(interval))
         {
             const parts:Array = (new String(1 + interval)).split(".");
-            scale = Math.pow(10, parts[1].length);
-            minValue *= scale;
+            scale = Math.pow(10, parts[1].length);
             maxValue *= scale;
             value = Math.round(value * scale);
             interval = Math.round(interval * scale);
         }

-        var lower:Number = Math.max(minValue, Math.floor(value / interval) * interval);
+        var lower:Number = Math.max(0, Math.floor(value / interval) * interval);
         var upper:Number = Math.min(maxValue, Math.floor((value + interval) / interval) * interval);
         var validValue:Number = ((value - lower) >= ((upper - lower) / 2)) ? upper : lower;
-
-        return validValue / scale;
+
+        return (validValue / scale) + minimum;
     }

     /**


Fix line color bug on PoCs.

Fix line color bug on PoCs.

--- asn_visualization/asn_visualization.as
+++ asn_visualization/asn_visualization.as
@@ -132,7 +132,7 @@
                 // remove highlight on mouse out
                 function(e:SelectionEvent):void
                 {
-                    e.node.lineColor=_default_node_line_color;
+                	restore_node_line_color(e.node);
                 }));

             vis.controls.add(new ClickControl(NodeSprite, 1, function(evt:SelectionEvent):void
@@ -352,6 +352,10 @@
                 node_size/=10;
                 node_size=Math.max(node_size, 0.3);
                 nodeSprite.size=node_size;
+
+				if (nodeSprite == null)
+					throw new Error("nodeSprite cannot be null");
+

                 if (o['asn'] == 'REST_OF_WORLD')
                 {
@@ -757,20 +761,27 @@
             return node.data.is_point_of_control;
         }

+	    private function restore_node_line_color(node:NodeSprite):void
+	    {
+            if (isPointOfControl(node))
+            {
+                node.lineColor=_node_point_of_control_line_color;
+            }
+            else
+            {
+                node.lineColor=_default_node_line_color;
+            }
+        }
+
         private function restore_nodes_color():void
         {
             for each (var _node:NodeSprite in vis.data.nodes)
             {
                 _node.data.highlighted=false;
                 _node.fillColor=_default_node_fill_color;
-                if (isPointOfControl(_node))
-                {
-                    _node.lineColor=_node_point_of_control_line_color;
-                }
-                else
-                {
-                    _node.lineColor=_default_node_line_color;
-                }
+
+                restore_node_line_color(_node);
+
                 _node.focusRect=true;
                 _node.dirty();
             }
@@ -806,7 +817,7 @@
                 }, NodeSprite.OUT_LINKS);

             node.fillColor=_default_node_fill_color;
-            node.lineColor=0XFF000000;
+            restore_node_line_color(node);

             node.visitNodes(function(n:NodeSprite):void
                 {


Fixed a bug that caused preloading of animated background-images in CSS files to fail

--- src/reprise/css/CSS.as
+++ src/reprise/css/CSS.as
@@ -7,6 +7,9 @@

 package reprise.css
 {
+	import flash.events.Event;
+	import flash.utils.getTimer;
+
 	import reprise.core.reprise;
 	import reprise.css.propertyparsers.RuntimeParser;
 	import reprise.data.collection.IndexedArray;
@@ -14,12 +17,11 @@
 	import reprise.events.ResourceEvent;
 	import reprise.external.AbstractResource;
 	import reprise.external.BitmapResource;
+	import reprise.external.IResource;
+	import reprise.external.ImageResource;
 	import reprise.external.ResourceLoader;
 	import reprise.utils.StringUtil;

-	import flash.events.Event;
-	import flash.utils.getTimer;
-
 	use namespace reprise;

 	public class CSS extends AbstractResource
@@ -461,7 +463,7 @@

 			if (!m_imagePreloadingResource)
 			{
-				dispatchEvent(new CommandEvent(Event.COMPLETE, success));
+				notifyComplete(success);
 			}
 			else
 			{
@@ -502,7 +504,9 @@
 					{
 						var imageProp : CSSProperty =
 							declaration.getStyle('backgroundImage');
-						imageProp && enqueuePreloadableProperty(imageProp);
+						var isAnimation : Boolean = declaration.hasStyle('backgroundImageType') &&
+								declaration.getStyle('backgroundImageType').valueOf();
+						imageProp && enqueuePreloadableProperty(imageProp, isAnimation);
 					}

@@ -520,17 +524,27 @@
 			return true;
 		}

-		protected function enqueuePreloadableProperty(prop : CSSProperty) : void
+		protected function enqueuePreloadableProperty(
+				imageProperty : CSSProperty, isAnimation : Boolean) : void
 		{
 			if (!m_imagePreloadingResource)
 			{
 				m_imagePreloadingResource = new ResourceLoader();
 			}
-			var loader : BitmapResource =
-				new BitmapResource(prop.valueOf() as String, true);
-			loader.setCacheBitmap(true);
-			loader.setCloneBitmap(false);
-			m_imagePreloadingResource.addResource(loader);
+			var url : String = imageProperty.valueOf() as String;
+			var resource : IResource;
+			if (isAnimation)
+			{
+				resource = new ImageResource(url);
+			}
+			else
+			{
+				var loader : BitmapResource = new BitmapResource(url, true);
+				loader.setCacheBitmap(true);
+				loader.setCloneBitmap(false);
+				resource = loader;
+			}
+			m_imagePreloadingResource.addResource(resource);
 		}

 		/**


Transferred from the Adobe Open Source Subversion Repository

Revision: 8574
Author:   aharui@adobe.com
Date:     2009-07-15T05:33:44.225721Z

Log Message:
-----------
Bugs related to TLF and focus.  Also TLF Marshall Plan adjustments, and some IME fixes

QE Notes: None
Doc Notes: None
Bugs: SDK-21278, SDK-21686, SDK-21375, SDK-18516, SDK-15093, SDK-21335
Reviewer: darrell, carol
tests: checkintests mustella/gumbo mustella/components

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IFocusManagerComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IIMESupport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/SWFBridgeEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/alertClasses/AlertForm.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework_textLayout/src/mx/core/UITLFTextField.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/spark/src/spark/primitives/supportClasses/RichEditableTextContainerManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.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/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/FocusManagerMarshalMixin.as</path>

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

--- frameworks/projects/mx/src/mx/controls/TextInput.as
+++ frameworks/projects/mx/src/mx/controls/TextInput.as
@@ -355,9 +355,6 @@
     public function TextInput()
     {
         super();
-
-        // InteractiveObject variables.
-        tabChildren = true;
     }

     //--------------------------------------------------------------------------
@@ -394,12 +391,6 @@
      *  like NumericStepper or ComboBox;
      */
     mx_internal var parentDrawsFocus:Boolean = false;
-
-    /**
-     *  @private
-     *  Previous imeMode.
-     */
-    private var prevMode:String = IMEConversionMode.UNKNOWN;

     /**
      *  @private
@@ -2293,11 +2284,9 @@
         }

         super.focusInHandler(event);
-
+
         if (_imeMode != null && _editable)
         {
-            IME.enabled = true;
-            prevMode = IME.conversionMode;
             // When IME.conversionMode is unknown it cannot be
             // set to anything other than unknown(English)
             try
@@ -2330,17 +2319,6 @@
     {
         super.focusOutHandler(event);

-        if (_imeMode != null && _editable)
-        {
-            // When IME.conversionMode is unknown it cannot be
-            // set to anything other than unknown(English)
-            // and when known it cannot be set to unknown
-            if (IME.conversionMode != IMEConversionMode.UNKNOWN
-                && prevMode != IMEConversionMode.UNKNOWN)
-                IME.conversionMode = prevMode;
-            IME.enabled = false;
-        }
-
         dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 12557
Author:   egeorgie@adobe.com
Date:     2009-12-04T22:51:10.865570Z

Log Message:
-----------
Fix http://bugs.adobe.com/jira/browse/SDK-24324 Dragging an item from a DataGrid that is in an application loaded into SWFLoader causes a RTE

Problem: The DragProxy and DragManagerImpl/NativeDragManagerImpl are looking up the styles from the top level app.
Fix: Make them look up the styles from the module of the drag initiator.

Credits go to Darrell for this fix!

QE notes: None
Doc notes: None
Bugs: SDK-24324
Reviewer: Darrell
Tests run: checkintests, mustella cyclone
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/dragClasses/DragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as</path>

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

--- frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as
+++ frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as
@@ -27,6 +27,7 @@

 import mx.core.DragSource;
 import mx.core.IFlexDisplayObject;
+import mx.core.IFlexModule;
 import mx.core.IFlexModuleFactory;
 import mx.core.IUIComponent;
 import mx.core.UIComponentGlobals;
@@ -37,6 +38,7 @@
 import mx.events.InterManagerRequest;
 import mx.managers.dragClasses.DragProxy;
 import mx.styles.CSSStyleDeclaration;
+import mx.styles.IStyleManager2;
 import mx.styles.StyleManager;

 use namespace mx_internal;
@@ -292,7 +294,7 @@
 		{
 			// No drag image specified, use default
 			var dragManagerStyleDeclaration:CSSStyleDeclaration =
-				StyleManager.getStyleManager(sm as IFlexModuleFactory).getStyleDeclaration("DragManager");
+                getStyleManager(dragInitiator).getStyleDeclaration("DragManager");
 			var dragImageClass:Class =
 				dragManagerStyleDeclaration.getStyle("defaultDragImageSkin");
 			dragImage = new dragImageClass();
@@ -516,7 +518,22 @@
 		sm.stage.removeEventListener(NativeDragEvent.NATIVE_DRAG_START, nativeDragEventHandler, true);

 	}
-
+
+    /**
+     *  @private
+     */
+    static private function getStyleManager(dragInitiator:IUIComponent):IStyleManager2
+    {
+        // If the dragInitiator has a styleManager, use that one.
+        // In a situation where a main application that loads a module with drag initiator,
+        // the main application may not link in the DragManager and appropriate styles.
+        // We want to use the styles of the module of the dragInitiator. See SDK-24324.
+        if (dragInitiator is IFlexModule)
+            return StyleManager.getStyleManager(IFlexModule(dragInitiator).moduleFactory);
+
+        return StyleManager.getStyleManager(sm as IFlexModuleFactory);
+    }
+
 	//--------------------------------------------------------------------------
 	//
 	//  Event handlers


Transferred from the Adobe Open Source Subversion Repository

Revision: 8
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-15T01:49:31.087529Z

Log Message:
-----------
The beginning of the open-source Flex SDK.

Populated the flex/sdk/trunk directory with an open-source subset of files from //depot/flex/sdk/...@191097 in the Faramir Perforce server. This changelist is a bit past the 3.0rc0 build.

The Ant scripts will not successfully build yet. They need to be adapted to the open-source subset.

Modified Paths:
--------------
2532 paths were modified

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

--- frameworks/projects/framework/src/mx/logging/errors/InvalidFilterError.as
+++ frameworks/projects/framework/src/mx/logging/errors/InvalidFilterError.as
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.logging.errors
+{
+
+/**
+ *  This error is thrown when a filter specified for a target
+ *  contains invalid characters or is malformed.
+ *  This error is thrown by the following methods/properties:
+ *

+ *
ILoggerTarget.filters if a filter expression
+ *    in this listis malformed.

+ *

+ */
+public class InvalidFilterError extends Error
+{
+	include "../../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+    /**
+	 *  Constructor.
+	 *
+	 *  @param message The message that describes this error.
+     */
+    public function InvalidFilterError(message:String)
+    {
+        super(message);
+    }
+
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+
+         /**
+	 *  Returns the messge as a String.
+	 *
+	 *  @return The message.
+	 */
+    public function toString():String
+    {
+        return String(message);
+    }
+}
+
+}


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@1268884 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/controls/listClasses/ListBaseSeekPending.as
+++ frameworks/projects/mx/src/mx/controls/listClasses/ListBaseSeekPending.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.controls.listClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 3418
Author:   shodgson@adobe.com
Date:     2008-09-30T17:24:48.986106Z

Log Message:
-----------
Remove obsolete poll-sync responders from PollingChannel and other impacted protocol-specific channels.

QA: No
Doc: No
Checkintests Pass: Yes

This stuff was originally used by a PollingChannel to directly monitor subscribe/unsubscribe commands issued by higher-level components in order to drive a count of active subscriptions, and from that, whether or not the channel needed to issue poll requests.

However, DataService, and then Consumer ended up managing this directly because they had better insight into when they considered themselves subscribed and they notify the PollingChannel of their state changes directly (mx_internally). When this was added, the underlying poll-sync responder machinery didn't go away, and it generally doesn't cause problems except in the case of a client disconnect without a preceding explicit unsubscribe. In this case the higher level component moves to an unsubscribed state when it disconnects (and lets the PollingChannel know) but because no unsubscribe command is sent by a poll-sync responder, the extra count it added never decrements and the channel continues to poll incorrectly.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/AMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/PollingChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/NetConnectionChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/HTTPChannel.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/channels/NetConnectionChannel.as
+++ frameworks/projects/rpc/src/mx/messaging/channels/NetConnectionChannel.as
@@ -140,14 +140,6 @@
     /**
      *  @private
      */
-    override protected function getPollSyncMessageResponder(agent:MessageAgent, msg:CommandMessage):MessageResponder
-    {
-        return new PollSyncMessageResponder(agent, msg, this);
-    }
-
-    /**
-     *  @private
-     */
     override protected function getDefaultMessageResponder(agent:MessageAgent, msg:IMessage):MessageResponder
     {
         return new NetConnectionMessageResponder(agent, msg, this);
@@ -686,96 +678,4 @@
         channel.removeEventListener(ChannelEvent.DISCONNECT, channelDisconnectHandler);
         channel.removeEventListener(ChannelFaultEvent.FAULT, channelFaultHandler);
     }
-}
-
-/**
- *  @private
- *  This class provides a way to synchronize polling with a subscribe or
- *  unsubscribe request.
- *  It is constructed in response to a Consumer sending either a subscribe or
- *  unsubscribe command message.
- *  If a successfull subscribe/unsubscribe is made this responder will inform the
- *  channel which will trigger it to start/stop polling if necessary.
- *
- */
-class PollSyncMessageResponder extends NetConnectionMessageResponder
-{
-    //--------------------------------------------------------------------------
-    //
-    // Constructor
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @private
-     *  Constructs a PollSyncMessageResponder.
-     *
-     *  @param agent The agent to manage polling for.
-     *
-     *  @param msg The subscribe or unsubscribe message for the agent.
-     *
-     *  @param channel The underlying Channel for the responder.
-     */
-    public function PollSyncMessageResponder(agent:MessageAgent, msg:IMessage,
-                                                channel:NetConnectionChannel)
-    {
-        super(agent, msg, channel);
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    // Overridden Protected Methods
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @private
-     *  This method is called by the player when the result of sending a message
-     *  is received.
-     *
-     *  @param msg The response to a subscribe or unsubscribe request.
-     */
-    override protected function resultHandler(msg:IMessage):void
-    {
-        super.resultHandler(msg);
-        if ((msg is AsyncMessage) && (AsyncMessage(msg).correlationId == message.messageId))
-        {
-            // notify the channel
-            var cmd:CommandMessage = CommandMessage(message);
-            switch (cmd.operation)
-            {
-                case CommandMessage.SUBSCRIBE_OPERATION:
-                    NetConnectionChannel(channel).enablePolling();
-                break;
-
-                case CommandMessage.UNSUBSCRIBE_OPERATION:
-                    NetConnectionChannel(channel).disablePolling();
-                break;
-            }
-        }
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    // Protected Methods
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @private
-     *  Handles a disconnect of the underlying Channel before a response is
-     *  returned to the responder and supresses resend attempts.
-     *
-     *  @param event The Channel disconnect event.
-     */
-    override protected function channelDisconnectHandler(event:ChannelEvent):void {}
-
-    /**
-     *  @private
-     *  Handles a fault of the underlying Channel before a response is
-     *  returned to the responder and supresses resend attempts.
-     *
-     *  @param event The Channel fault event.
-     */
-    override protected function channelFaultHandler(event:ChannelFaultEvent):void {}
-}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 4959
Author:   gosmith@adobe.com
Date:     2009-02-14T01:10:57.069625Z

Log Message:
-----------
Removed the undocumented TextBlockComposer and TextFlowComposer classes. These were helper classes for TextBox and TextGraphic, respectively. Their functionality has been rolled into TextBox, TextGraphic, and TextGraphicElement. This should improve both memory and speed since the helper objects no longer have to be created. It also allows more code to be shared in TextGraphicElement.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Carol

Modified Paths:
--------------
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/TextFlowComposer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextBox.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/TextBlockComposer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/TextGraphicElement.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
@@ -12,9 +12,11 @@
 package mx.graphics.baseClasses
 {

+import flash.display.DisplayObjectContainer;
 import flash.display.Graphics;
 import flash.display.Sprite;
 import flash.geom.Rectangle;
+import flash.text.engine.TextLine;

 import mx.core.mx_internal;
 import mx.styles.CSSStyleDeclaration;
@@ -51,6 +53,24 @@
     //  Variables
     //
     //--------------------------------------------------------------------------
+
+	/**
+     *  @private
+     *  The composition bounds used when creating the TextLines.
+     */
+    mx_internal var bounds:Rectangle = new Rectangle(0, 0, NaN, NaN);
+
+    /**
+     *  @private
+	 *  The TextLines created to render the text.
+     */
+    mx_internal var textLines:Array = [];
+
+    /**
+     *  @private
+     *  This flag is set to true if the text must be clipped.
+     */
+    mx_internal var isOverset:Boolean = false;

     /**
      *  @private
@@ -67,7 +87,25 @@
     //  Overridden properties: GraphicElement
     //
     //--------------------------------------------------------------------------
-
+
+    //----------------------------------
+    //  baselinePosition
+    //----------------------------------
+
+    [Inspectable(category="General")]
+
+    /**
+     *  @private
+     */
+    override public function get baselinePosition():Number
+    {
+        mx_internal::validateBaselinePosition();
+
+        // Return the baseline of the first line of composed text.
+        return mx_internal::textLines.length > 0 ?
+			   mx_internal::textLines[0].y : 0;
+    }
+
     //----------------------------------
     //  needsDisplayObject
     //----------------------------------
@@ -340,23 +378,22 @@
     /**
      *  @private
      */
-    override protected function updateDisplayList(unscaledWidth:Number,
-                                                  unscaledHeight:Number):void
-    {
-        /*
-        var g:Graphics = Sprite(displayObject).graphics;
+    override protected function measure():void
+    {
+        super.measure();

-        // TODO EGeorgie: clearing the graphics needs to be shared when
-        // the display objects are shared.
-        g.clear();
-
-        g.lineStyle()
-        g.beginFill(0xCCCCCC);
-        g.drawRect(0, 0, unscaledWidth, unscaledHeight);
-        g.endFill();
-        */
-    }
-
+        // The measure() method of a GraphicElement can get called
+        // when its style chain hasn't been initialized.
+        // In that case, composeTextLines() must not be called.
+        if (!mx_internal::styleChainInitialized)
+            return;
+
+        composeTextLines(explicitWidth, explicitHeight);
+
+        measuredWidth = Math.ceil(mx_internal::bounds.width);
+        measuredHeight = Math.ceil(mx_internal::bounds.height);
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Methods: ISimpleStyleClient
@@ -490,12 +527,67 @@

     /**
      *  @private
-     *  TODO Make this mx_internal.
+     *  TODO This should be mx_internal, but that causes a compiler error.
      */
     protected function invalidateTextLines(cause:String):void
     {
     }

+    /**
+     *  @private
+     *  TODO This should be mx_internal, but that causes a compiler error.
+     */
+    protected function composeTextLines(width:Number = NaN,
+										height:Number = NaN):void
+	{
+	}
+
+	/**
+	 *  @private
+	 *  Adds the TextLines created by composeTextLines()
+     *  to a specified DisplayObjectContainer.
+	 *  Sets the isOverset flag to indicate whether they require clipping.
+	 */
+	mx_internal function addTextLines(container:DisplayObjectContainer,
+								  index:int = 0):void
+	{
+		var n:int = mx_internal::textLines.length;
+		for (var i:int = n - 1; i >= 0; i--)
+		{
+			var textLine:TextLine = TextLine(mx_internal::textLines[i]);
+			container.addChildAt(textLine, index);
+		}
+
+		var r:Rectangle = container.getBounds(container);
+		mx_internal::isOverset = !mx_internal::bounds.containsRect(r);
+	}
+
+	/**
+	 *  @private
+	 *  Removes the TextLines created by composeTextLines()
+     *  from whatever container they were added to, and frees them.
+	 *  Empties the textLines Array.
+	 */
+	mx_internal function removeTextLines():void
+	{
+		var n:int = mx_internal::textLines.length;
+		if (n == 0)
+			return;
+
+		// The old TextLines might have been added to a different
+		// container than the one we'd use now to add new TextLines.
+		var container:DisplayObjectContainer =
+			mx_internal::textLines[0].parent;
+
+		for (var i:int = 0; i < n; i++)
+		{
+			var textLine:TextLine = TextLine(mx_internal::textLines[i]);
+			container.removeChild(textLine);
+		}
+
+		mx_internal::textLines.length = 0;
+	}
+
     /**
 	 *  Use scrollRect to clip overset lines.
 	 *  But don't read or write scrollRect if you can avoid it,
@@ -503,9 +595,9 @@
 	 *  And if scrollRect is already set to a Rectangle instance,
 	 *  reuse it rather than creating a new one.
      */
-    mx_internal function clip(overset:Boolean, w:Number, h:Number):void
+    mx_internal function clip(w:Number, h:Number):void
 	{
-        if (overset)
+        if (mx_internal::isOverset)
         {
             var r:Rectangle = displayObject.scrollRect;
             if (r)


Stop job monitoring timer when job is complete

--- collect-client/src/main/flex/org/openforis/collect/presenter/JobMonitor.as
+++ collect-client/src/main/flex/org/openforis/collect/presenter/JobMonitor.as
@@ -84,6 +84,7 @@
 				eventDispatcher.dispatchEvent(new CollectJobEvent(CollectJobEvent.COLLECT_JOB_STATUS_UPDATE, _job));
 				if (_job.completed || _job.aborted || _job.failed) {
 					eventDispatcher.dispatchEvent(new CollectJobEvent(CollectJobEvent.COLLECT_JOB_END, _job));
+					stop();
 				}
 			}
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

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

--- frameworks/projects/mx/src/mx/containers/GridRow.as
+++ frameworks/projects/mx/src/mx/containers/GridRow.as
@@ -31,6 +31,11 @@
  *  Possible values are "left", "center",
  *  and "right".
  *  The default value is "left".
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="horizontalAlign", type="String", enumeration="left,center,right", inherit="no")]

@@ -39,6 +44,11 @@
  *  Possible values are "top", "middle",
  *  and "bottom".
  *  The default value is "top".
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="verticalAlign", type="String", enumeration="bottom,middle,top", inherit="no")]

@@ -147,6 +157,11 @@
  *  @see mx.containers.GridItem
  *
  *  @includeExample examples/GridLayoutExample.mxml
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class GridRow extends HBox
 {
@@ -160,6 +175,11 @@

     /**
      *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function GridRow()
     {
@@ -361,6 +381,11 @@
      *  @param unscaledHeight Specifies the height of the component, in pixels,
      *  in the component's coordinates, regardless of the value of the
      *  scaleY property of the component.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     override protected function updateDisplayList(unscaledWidth:Number,
                                                   unscaledHeight:Number):void


FLEX-20956 Added support for MMM and MMMM month formats

--- frameworks/projects/mx/src/mx/controls/DateField.as
+++ frameworks/projects/mx/src/mx/controls/DateField.as
@@ -51,6 +51,7 @@
 import mx.managers.IFocusManagerComponent;
 import mx.managers.ISystemManager;
 import mx.managers.PopUpManager;
+import mx.resources.ResourceManager;
 import mx.styles.CSSStyleDeclaration;
 import mx.styles.StyleManager;
 import mx.styles.StyleProxy;
@@ -615,14 +616,21 @@
         var month:String = String(value.getMonth() + 1);
         var year:String = String(value.getFullYear());

-        var mask:String;
+		var mask:String;
+		var fullMask:String;
 		var maskLength:int
 		var output:String = "";
-
+
+		//TODO Support changing locale at runtime
+		var monthNames:Array =
+			ResourceManager.getInstance().getStringArray(
+				"SharedResources", "monthNames");
+
         length = maskParts.length;
         for (i = 0; i < length; i++)
         {
-            mask = maskParts[i].charAt(0);
+			fullMask = maskParts[i];
+            mask = fullMask.charAt(0);
 			maskLength = maskParts[i].length;

 			if (mask == "D")
@@ -631,6 +639,14 @@
 					date = "0" + date;

 				output += date;
+			}
+			else if (fullMask == "MMM")
+			{
+				output += monthNames[value.getMonth()].substr(0,3);
+			}
+			else if (fullMask == "MMMM")
+			{
+				output += monthNames[value.getMonth()];
 			}
 			else if (mask == "M")
 			{


qnd: fix warnings

qnd: fix warnings

git-svn-id: 8a2ccb88241e16c78017770bc38d91d6d5396a5a@77543 6b8eccd3-e8c5-4e7d-8186-e12b5326b719

--- generator/sources/as3/com/kaltura/encryption/MD5.as
+++ generator/sources/as3/com/kaltura/encryption/MD5.as
@@ -75,7 +75,7 @@
 		  var bkey:Array = rstr2binl (key);
 		  if (bkey.length > 16) bkey = binl_md5 (bkey, key.length * 8);

-		  var ipad:Array = Array(16), opad:Array = Array(16);
+		  var ipad:Array = new Array(16), opad:Array = new Array(16);
 		  for(var i:Number = 0; i < 16; i++) {
 		    ipad[i] = bkey[i] ^ 0x36363636;
 		    opad[i] = bkey[i] ^ 0x5C5C5C5C;
@@ -128,7 +128,7 @@
 		  var i:Number, q:Number, x:Number, quotient:Array;

 		  /* Convert to an array of 16-bit big-endian values, forming the dividend */
-		  var dividend:Array = Array(input.length / 2);
+		  var dividend:Array = new Array(input.length / 2);
 		  for(i = 0; i < dividend.length; i++) {
 		    dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
 		  }
@@ -222,10 +222,11 @@
 		 * Characters >255 have their high-byte silently ignored.
 		 */
 		public static function rstr2binl (input:String):Array {
-		  var output:Array = Array(input.length >> 2);
-		  for(var i:Number = 0; i < output.length; i++)
+		  var output:Array = new Array(input.length >> 2);
+		  var i:Number;
+		  for(i = 0; i < output.length; i++)
 		    output[i] = 0;
-		  for(var i:Number = 0; i < input.length * 8; i += 8)
+		  for(i = 0; i < input.length * 8; i += 8)
 		    output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
 		  return output;
 		}


Changed wire pathing

Changed wire pathing

--- src/Components/Wire.as
+++ src/Components/Wire.as
@@ -45,6 +45,9 @@
 					break;

 				path.push(pathEnd = nextPoint);
+
+				if (!mayMoveThrough(nextPoint))
+					break;
 			}

 			while (constrained && path.length > 1 && !validPosition())
@@ -55,6 +58,16 @@
 		}

 		protected function mayMoveThrough(p:Point):Boolean {
+			var objType:Class = U.state.objTypeAtPoint(p);
+			if (objType == null)
+				return true;
+			if (objType == Module)
+				return false;
+
+			var carriers:Vector.<Carrier> = U.state.carriersAtPoint(p);
+			for each (var carrier:Carrier in carriers)
+				if (carrier is Port)
+					return false;
 			return true;
 		}


A serialization with introspection using describeType

git-svn-id: 3704838867447408e01268abee7e32a5bd8c3d03@7 5cda2b45-c24c-6f34-eaa9-e0910a1cbe04

--- src/aerys/qark/Qark.as
+++ src/aerys/qark/Qark.as
@@ -3,6 +3,7 @@
 	import flash.net.FileReference;
 	import flash.utils.ByteArray;
 	import flash.utils.Dictionary;
+	import flash.utils.describeType;

 	public class Qark
 	{
@@ -86,10 +87,11 @@
 		{
 			var start	: int = target.position;
 			var length 	: int = 0;
+			var propertyName : String = null;

 			target.position += 2;

-			for (var propertyName : String in source)
+			for (propertyName in source)
 			{
 				encodeString(propertyName, target);
 				encodeRecursive(source[propertyName], target);
@@ -97,6 +99,21 @@
 				++length;
 			}

+			if (length == 0)
+			{
+				var variables : XMLList = describeType(source).variable;
+
+				for each (var variable : XML in variables)
+				{
+					propertyName = variable.@name;
+
+					encodeString(propertyName, target);
+					encodeRecursive(source[propertyName], target);
+
+					++length;
+				}
+			}
+
 			var stop : int = target.position;

 			target.position = start;


Transferred from the Adobe Open Source Subversion Repository

Revision: 21316
Author:   chiedozi@adobe.com
Date:     2011-06-01T16:57:48.824303Z

Log Message:
-----------
Merging 4.5.1 changelist 21314 into 4y branch

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="dir" action="M">/private/flex/sdk/branches/4.y</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
@@ -1868,6 +1868,8 @@

     /**
      *  @private
+     *  This method is used to create the top view of the ViewNavigator.  This
+     *  is only used by TabbedViewNavigator when the selected tab has changed.
      */
     override mx_internal function createTopView():void
     {
@@ -1893,7 +1895,10 @@
         // Create the view if needed
         var view:View = currentViewDescriptor.instance;
         if (!view)
+        {
             view = createViewInstance(currentViewDescriptor);
+            view.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, view_propertyChangeHandler);
+        }

         // Cancel any view change requests that occurred prior to this call
         // since the top most view was just created.


Transferred from the Adobe Open Source Subversion Repository

Revision: 17178
Author:   chiedozi@adobe.com
Date:     2010-08-04T00:08:50.804269Z

Log Message:
-----------
View orientation is now managed by ViewNavigator instead of MobileApplication.
Added landscapeOrientation property to ViewNavigator

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
@@ -55,7 +55,6 @@

 /**
  *
- *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 2.5
@@ -64,7 +63,6 @@
 [SkinState("portrait")]

 /**
- *
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -75,7 +73,6 @@

 /**
  *
- *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 2.5
@@ -84,7 +81,6 @@
 [SkinState("portraitAndOverlay")]

 /**
- *
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -389,6 +385,38 @@
             return _sections[selectedIndex];

         return null;
+    }
+
+    //----------------------------------
+    //  landscapeOrientation
+    //----------------------------------
+
+    private var _landscapeOrientation:Boolean = false;
+
+    [Bindable]
+    /**
+     *
+     *  @default true
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get landscapeOrientation():Boolean
+    {
+        return _landscapeOrientation;
+    }
+
+    public function set landscapeOrientation(value:Boolean):void
+    {
+        if (value != _landscapeOrientation)
+        {
+            _landscapeOrientation = value;
+
+            if (activeView)
+                activeView.setCurrentState(activeView.getCurrentViewState(_landscapeOrientation), false);
+        }
     }

     //----------------------------------
@@ -1608,7 +1636,8 @@
             // Grab the views return object and set it on the new view
             if (lastAction == POP_ACTION && activeView)
                 view.returnedObject = activeView.createReturnObject();
-
+
+            view.setCurrentState(view.getCurrentViewState(landscapeOrientation), false);
             addElement(view);
         }

@@ -1627,9 +1656,9 @@
      *  @param location int indicating where in the source the item was added.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     private function internalDispatchEvent(kind:String, item:Object = null, location:int = -1):void
     {
@@ -1644,6 +1673,14 @@
         }
     }

+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     // Only current because previous views are already persisted
     mx_internal function persistCurrentView():void
     {
@@ -1651,6 +1688,14 @@
             currentViewData.persistedData = currentViewData.instance.getPersistenceData();
     }

+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     protected function viewAdded(transition:IViewTransition = null):void
     {
         var currentView:View;
@@ -1717,11 +1762,32 @@
         }
     }

+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     override protected function getCurrentSkinState():String
     {
-        return (_overlayControls) ? "portraitAndOverlay" : "portrait";
-    }
-
+        var finalState:String = (_landscapeOrientation) ? "landscape" : "portrait";
+
+        if (_overlayControls)
+            finalState += "AndOverlay";
+
+        return finalState;
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     protected function transitionComplete(event:Event):void
     {
         IViewTransition(event.target).removeEventListener(Event.COMPLETE, transitionComplete);
@@ -1733,6 +1799,14 @@
         endViewChange();
     }

+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     protected function updateActionBarProperties(view:View, forceUpdate:Boolean = false):void
     {
         if (!actionBar || !view)
@@ -1818,8 +1892,13 @@
     }

     /**
-     *
-     */
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     protected function view_propertyChangeHandler(event:PropertyChangeEvent):void
     {
         var property:Object = event.property;
@@ -1846,7 +1925,14 @@
         }
     }

-
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     override protected function partAdded(partName:String, instance:Object):void
     {
         super.partAdded(partName, instance);