Transferred from the Adobe Open Source Subversion Repository

Revision: 12850
Author:   jimurphy@adobe.com
Date:     2009-12-11T14:57:14.623098Z

Log Message:
-----------
add 6 new DMV projects to the SDK:
automation
automation_air
automation_dmv
automation_flashflexkit
automation_spark
datavisualization

These projects are setup to build in an ant main call.  There are currently several warnings in the datavisualization project that will be cleaned up.  No checkintests exist for these projects as of yet.

I also modified the exisitng projects build files for easier management of the localization targets, bundle and fat-swc. If the projects that I updated:airframework,airspark,framework,playerglobal,rpc,and spark.  All the new projects have been implemented this same way.

QE notes: DMV folks should run through their tests
Doc notes: probably
Bugs: nope
Reviewer:
Tests run: ran the following targets: compile,checkintests,other.locales and doc
Is noteworthy for integration: no

Modified Paths:
--------------
1404 paths were modified

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

--- frameworks/projects/charts/src/mx/charts/GridLines.as
+++ frameworks/projects/charts/src/mx/charts/GridLines.as
@@ -0,0 +1,689 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.charts
+{
+
+import flash.display.Graphics;
+import flash.geom.Rectangle;
+import mx.charts.chartClasses.CartesianChart;
+import mx.charts.chartClasses.ChartElement;
+import mx.charts.chartClasses.ChartState;
+import mx.charts.chartClasses.GraphicsUtilities;
+import mx.charts.chartClasses.IAxisRenderer;
+import mx.charts.styles.HaloDefaults;
+import mx.core.mx_internal;
+import mx.graphics.IFill;
+import mx.graphics.IStroke;
+import mx.graphics.Stroke;
+import mx.styles.CSSStyleDeclaration;
+import mx.core.IFlexModuleFactory;
+
+use namespace mx_internal;
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+/**
+ *  Specifies the direction of the grid lines.
+ *  Allowable values are horizontal,
+ *  vertical, or both.
+ *  The default value is horizontal.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="gridDirection", type="String", enumeration="horizontal,vertical,both", inherit="no")]
+
+/**
+ *  Specifies the fill pattern for alternating horizontal bands
+ *  not defined by the fill property.
+ *  Use the IFill class to define the properties of the fill
+ *  as a child tag in MXML, or create an IFill object in ActionScript.
+ *  Set to null to not fill the bands.
+ *  The default value is null.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalAlternateFill", type="mx.graphics.IFill", inherit="no")]
+
+/**
+ *  Specifies the number of tick marks between horizontal grid lines.
+ *  Set the horizontalChangeCount property to 3
+ *  to draw a grid line at every third tick mark along the axis.
+ *  The fill style alternates at each grid line, so a larger
+ *  horizontalChangeCount value results
+ *  in large alternating bands.
+ *  The defaults value is 1.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalChangeCount", type="int", inherit="no")]
+
+/**
+ *  Specifies the fill pattern for every other horizontal band
+ *  created by the grid lines.
+ *  Use the IFill class to define the  properties of the fill
+ *  as a child tag in MXML, or create a IFill object in ActionScript.
+ *  Set to null to not fill the bands.
+ *  The default value is null.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalFill", type="mx.graphics.IFill", inherit="no")]
+
+/**
+ *  Specifies the line style for the horizontal origin.
+ *  Use the Stroke class to define the properties as a child tag in MXML,
+ *  or create a Stroke object in ActionScript.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalOriginStroke", type="mx.graphics.IStroke", inherit="no")]
+
+/**
+ *  Determines whether to draw the horizontal origin.
+ *  If true, and the origin falls within the chart bounds,
+ *  the grid lines draw it using the horizontalOriginStroke style.
+ *  For ColumnChart, LineChart, PlotChart, BubbleChart, and AreaChart
+ *  controls, the default value is true.
+ *  For BarChart controls, the default value is false.
+ *  This property does not apply to PieChart controls.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalShowOrigin", type="Boolean", inherit="no")]
+
+/**
+ *  Specifies the line style for horizontal grid lines.
+ *  Use the Stroke class to define the properties as a child tag in MXML,
+ *  or create a Stroke object in ActionScript.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalStroke", type="mx.graphics.IStroke", inherit="no")]
+
+/**
+ *  Determines whether to align horizontal grid lines with tick marks.
+ *  If true, horizontal grid lines are drawn aligned
+ *  with the tick marks.
+ *  If false, Flex draws them between tick marks.
+ *  The default value is true.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="horizontalTickAligned", type="Boolean", inherit="no")]
+
+/**
+ *  Specifies the fill pattern for alternating vertical bands
+ *  not defined by the fill property.
+ *  Use the IFill class to define the properties of the fill
+ *  as a child tag in MXML, or create an IFill object in ActionScript.
+ *  Set to null to not fill the bands.
+ *  The default value is null.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalAlternateFill", type="mx.graphics.IFill", inherit="no")]
+
+/**
+ *  Specifies the number of tick marks between vertical grid lines.
+ *  Set verticalChangeCount to 3
+ *  to draw a grid line at every third tick mark along the axis.
+ *  The fill style alternates at each grid line, so a larger
+ *  verticalChangeCount value results in large alternating bands.
+ *  The default value is 1.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalChangeCount", type="int", inherit="no")]
+
+/**
+ *  Specifies the fill pattern for alternating vertical bands
+ *  created by the grid lines.
+ *  Use the IFill class to define the properties of the fill
+ *  as a child tag in MXML, or create a IFill object in ActionScript.
+ *  Set to null to not fill the bands.
+ *  The default value is null.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalFill", type="mx.graphics.IFill", inherit="no")]
+
+/**
+ *  Specifies the line style for the vertical origin.
+ *  Use the Stroke class to define the properties as a child tag in MXML,
+ *  or create a Stroke object in ActionScript.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalOriginStroke", type="mx.graphics.IStroke", inherit="no")]
+
+/**
+ *  Determines whether to draw the vertical Origin.
+ *  If true, and the origin falls within the chart bounds,
+ *  Flex draws it using the verticalOriginStroke style.
+ *  For ColumnChart, LineChart, and AreaChart controls,
+ *  the default value is false.
+ *  For PlotChart, BubbleChart, and BarChart controls,
+ *  the default value is true.
+ *  This property does not apply to PieChart controls.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalShowOrigin", type="Boolean", inherit="no")]
+
+/**
+ *  Specifies the line style for vertical grid lines.
+ *  Use the Stroke class to define the properties as a child tag in MXML,
+ *  or create a Stroke object in ActionScript.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalStroke", type="mx.graphics.IStroke", inherit="no")]
+
+/**
+ *  Determines whether to align vertical grid lines with tick marks.
+ *  If true, Flex draws vertical grid lines aligned
+ *  with the tick marks.
+ *  If false, Flex draws them between tick marks.
+ *  The default value is true.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="verticalTickAligned", type="Boolean", inherit="no")]
+
+/**
+ *  The GridLines class draws grid lines inside the data area of the chart.
+ *  Flex can draw lines horizontally, vertically, or both.
+ *
+ *
Flex draws grid lines aligned to the tick marks of the parent chart.
+ *  By default, Flex draws one line for every tick mark
+ *  along the appropriate axis.

+ *
+ *
You typically use the GridLines class as a child tag
+ *  of a chart control's backgroundElements property
+ *  or annotationElements property.

+ *
+ *  @mxml
+ *
+ *
The <mx:GridLines> tag inherits all the properties
+ *  of its parent classes and adds the following properties:

+ *
+ *

+ *  <mx:GridLines
+ *    Styles
+ *     gridDirection="horizontal|vertical|both"
+ *     horizontalAlternateFill="null"
+ *     horizontalChangeCount="1"
+ *     horizontalFill="null"
+ *     horizontalOriginStroke="IStroke; No default"
+ *     horizontalShowOrigin="Default depends on type of chart"
+ *     horizontalStroke="IStroke; No default"
+ *     horizontalTickAligned="true|false"
+ *     verticalAlternateFill="null"
+ *     verticalChangeCount="1"
+ *     verticalFill="null"
+ *     verticalOriginStroke="IStroke; No default"
+ *     verticalShowOrigin="Default depends on type of chart"
+ *     verticalStroke="IStroke; No default"
+ *     verticalTickAligned="true|false"
+ *  />
+ *

+ *
+ *  @includeExample examples/GridLinesExample.mxml
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class GridLines extends ChartElement
+{
+    include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class initialization
+	//
+	//--------------------------------------------------------------------------
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function GridLines()
+	{
+		super();
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Variables
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private var _moduleFactoryInitialized:Boolean = false;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: UIComponent
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private function initStyles():Boolean
+	{
+		HaloDefaults.init(styleManager);
+
+		var gridlinesStyleName:CSSStyleDeclaration =
+			HaloDefaults.createSelector("mx.charts.GridLines", styleManager);
+
+		gridlinesStyleName.defaultFactory = function():void
+		{
+			this.gridDirection = "horizontal";
+			this.horizontalOriginStroke = new Stroke(0xB0C1D0, 1);
+			this.horizontalShowOrigin = true;
+			this.horizontalStroke = new Stroke(0xEEEEEE, 0);
+			this.horizontalTickAligned = true;
+			this.verticalOriginStroke = new Stroke(0xB0C1D0, 1);
+			this.verticalShowOrigin = false;
+			this.verticalStroke = new Stroke(0xEEEEEE, 0);
+			this.verticalTickAligned= true;
+		}
+
+		var hgridlinesStyle:CSSStyleDeclaration =
+			HaloDefaults.createSelector(".horizontalGridLines", styleManager);
+
+		hgridlinesStyle.defaultFactory = function():void
+		{
+			this.gridDirection = "vertical";
+			this.horizontalFill = null;
+			this.horizontalShowOrigin = false;
+			this.horizontalTickAligned = true;
+			this.verticalFill = null;
+			this.verticalShowOrigin = true;
+			this.verticalTickAligned= true;
+		}
+
+		var bothGridLines:CSSStyleDeclaration =
+			HaloDefaults.createSelector(".bothGridLines", styleManager);
+
+		bothGridLines.defaultFactory = function():void
+		{
+			this.gridDirection = "both";
+			this.horizontalShowOrigin = true;
+			this.horizontalTickAligned= true;
+			this.verticalShowOrigin = true;
+			this.verticalTickAligned= true;
+		}
+
+		return true;
+	}
+
+	/**
+	 *  @inheritDoc
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	override public function set moduleFactory(factory:IFlexModuleFactory):void
+	{
+		super.moduleFactory = factory;
+
+		if (_moduleFactoryInitialized)
+			return;
+
+		_moduleFactoryInitialized = true;
+
+		// our style settings
+		initStyles();
+	}
+
+	/**
+	 *  @private
+	 */
+	override protected function updateDisplayList(unscaledWidth:Number,
+												  unscaledHeight:Number):void
+	{
+		super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+		var len:int;
+		var c:Object;
+		var stroke:IStroke;
+		var changeCount:int;
+		var ticks:Array /* of Number */;
+		var spacing:Array /* of Number */;
+		var axisLength:Number;
+		var colors:Array /* of IFill */;
+		var rc:Rectangle;
+		var originStroke:IStroke;
+		var addedFirstLine:Boolean;
+		var addedLastLine:Boolean;
+		var n:int;
+
+		if (!chart||
+			chart.chartState == ChartState.PREPARING_TO_HIDE_DATA ||
+			chart.chartState == ChartState.HIDING_DATA)
+		{
+			return;
+		}
+
+		var g:Graphics = graphics;
+		g.clear();
+
+		var gridDirection:String = getStyle("gridDirection");
+		if (gridDirection == "horizontal" || gridDirection == "both")
+		{
+			stroke = getStyle("horizontalStroke");
+
+			changeCount = Math.max(1, getStyle("horizontalChangeCount"));
+			if ((changeCount * 0 != 0) || changeCount <= 1)
+				changeCount = 1;
+
+			var verticalAxisRenderer:IAxisRenderer;
+
+			if (!(CartesianChart(chart).verticalAxisRenderer))
+			{
+				verticalAxisRenderer = CartesianChart(chart).getLeftMostRenderer();
+				if (!verticalAxisRenderer)
+					verticalAxisRenderer = CartesianChart(chart).getRightMostRenderer();
+			}
+			else
+			    verticalAxisRenderer = CartesianChart(chart).verticalAxisRenderer;
+
+			ticks = verticalAxisRenderer.ticks;
+
+			if (getStyle("horizontalTickAligned") == false)
+			{
+				len = ticks.length;
+				spacing = [];
+				n = len;
+				for (var i:int = 1; i < n; i++)
+				{
+					spacing[i - 1] = (ticks[i] + ticks[i - 1]) / 2;
+				}
+			}
+			else
+			{
+				spacing = ticks;
+			}
+
+			addedFirstLine = false;
+			addedLastLine = false;
+
+			if (spacing[0] != 0)
+			{
+				addedFirstLine = true;
+				spacing.unshift(0);
+			}
+
+			if (spacing[spacing.length - 1] != 1)
+			{
+				addedLastLine = true;
+				spacing.push(1);
+			}
+
+			axisLength = unscaledHeight;
+
+			colors = [ getStyle("horizontalFill"),
+					   getStyle("horizontalAlternateFill") ];
+
+			len = spacing.length;
+
+			if (spacing[len - 1] < 1)
+			{
+				c = colors[1];
+				if (c != null)
+				{
+					g.lineStyle(0, 0, 0);
+					GraphicsUtilities.fillRect(g, 0,
+						spacing[len - 1] * axisLength, unscaledWidth,
+						unscaledHeight, c);
+				}
+			}
+
+			n = spacing.length;
+			for (i = 0; i < n; i += changeCount)
+			{
+				var idx:int = len - 1 - i;
+				c = colors[(i / changeCount) % 2];
+				var bottom:Number = spacing[idx] * axisLength;
+				var top:Number =
+					spacing[Math.max(0, idx - changeCount)] * axisLength;
+				rc = new Rectangle(0, top, unscaledWidth, bottom-top);
+
+				if (c != null)
+				{
+					g.lineStyle(0, 0, 0);
+					GraphicsUtilities.fillRect(g, rc.left, rc.top,
+											   rc.right, rc.bottom, c);
+				}
+
+				if (stroke && rc.bottom >= -1) //round off errors
+				{
+					if (addedFirstLine && idx == 0)
+						continue;
+					if (addedLastLine && idx == (spacing.length-1))
+						continue;
+
+					stroke.apply(g,null,null);
+					g.moveTo(rc.left, rc.bottom);
+					g.lineTo(rc.right, rc.bottom);
+
+				}
+			}
+		}
+
+		if (gridDirection == "vertical" || gridDirection == "both")
+		{
+
+			stroke = getStyle("verticalStroke");
+			changeCount = Math.max(1,getStyle("verticalChangeCount"));
+
+			if (isNaN(changeCount) || changeCount <= 1)
+				changeCount = 1;
+
+			var horizontalAxisRenderer:IAxisRenderer;
+
+			if (!(CartesianChart(chart).horizontalAxisRenderer))
+			{
+				horizontalAxisRenderer = CartesianChart(chart).getBottomMostRenderer();
+				if (!horizontalAxisRenderer)
+					horizontalAxisRenderer = CartesianChart(chart).getTopMostRenderer();
+			}
+			else
+			    horizontalAxisRenderer = CartesianChart(chart).horizontalAxisRenderer;
+
+			ticks = horizontalAxisRenderer.ticks.concat();
+
+			if (getStyle("verticalTickAligned") == false)
+			{
+				len = ticks.length;
+				spacing = [];
+				n = len;
+				for (i = 1; i < n; i++)
+				{
+					spacing[i - 1] = (ticks[i] + ticks[i - 1]) / 2;
+				}
+			}
+			else
+			{
+				spacing = ticks;
+			}
+
+			addedFirstLine = false;
+			addedLastLine = false;
+
+			if (spacing[0] != 0)
+			{
+				addedFirstLine = true;
+				spacing.unshift(0);
+			}
+
+			if (spacing[spacing.length - 1] != 1)
+			{
+				addedLastLine = true;
+				spacing.push(1);
+			}
+
+			axisLength = unscaledWidth;
+
+			colors = [ getStyle("verticalFill"),
+					   getStyle("verticalAlternateFill") ];
+
+			n = spacing.length;
+			for (i = 0; i < n; i += changeCount)
+			{
+				c = colors[(i / changeCount) % 2];
+				var left:Number = spacing[i] * axisLength;
+				var right:Number =
+					spacing[Math.min(spacing.length - 1,
+									 i + changeCount)] * axisLength;
+				rc = new Rectangle(left, 0, right - left, unscaledHeight);
+				if (c != null)
+				{
+					g.lineStyle(0, 0, 0);
+					GraphicsUtilities.fillRect(g, rc.left, rc.top,
+											   rc.right, rc.bottom, c);
+				}
+
+				if (stroke) // round off errors
+				{
+					if (addedFirstLine && i == 0)
+						continue;
+					if (addedLastLine && i == spacing.length-1)
+						continue;
+
+					stroke.apply(g,null,null);
+					g.moveTo(rc.left, rc.top);
+					g.lineTo(rc.left, rc.bottom);
+				}
+			}
+		}
+
+		var horizontalShowOrigin:Object = getStyle("horizontalShowOrigin");
+		var verticalShowOrigin:Object = getStyle("verticalShowOrigin");
+
+		if (verticalShowOrigin || horizontalShowOrigin)
+		{
+			var cache:Array /* of Object */ = [ { xOrigin: 0, yOrigin: 0 } ];
+			var sWidth:Number = 0.5;
+
+			dataTransform.transformCache(cache, "xOrigin", "x", "yOrigin", "y");
+
+			if (horizontalShowOrigin &&
+				cache[0].y > 0 && cache[0].y < unscaledHeight)
+			{
+				originStroke = getStyle("horizontalOriginStroke");
+				originStroke.apply(g,null,null);
+				g.moveTo(0, cache[0].y - sWidth / 2);
+				g.lineTo($width, cache[0].y - sWidth / 2);
+			}
+
+			if (verticalShowOrigin &&
+				cache[0].x > 0 && cache[0].x < unscaledWidth)
+			{
+				originStroke = getStyle("verticalOriginStroke");
+				originStroke.apply(g,null,null);
+				g.moveTo(cache[0].x - sWidth / 2, 0);
+				g.lineTo(cache[0].x - sWidth / 2, $height);
+			}
+		}
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: ChartElement
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function mappingChanged():void
+	{
+		invalidateDisplayList();
+	}
+
+	/**
+	 *  @private
+	 */
+	override public function chartStateChanged(oldState:uint,
+											   newState:uint):void
+	{
+		invalidateDisplayList();
+	}
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 17101
Author:   rfrishbe@adobe.com
Date:     2010-07-28T18:31:06.934256Z

Log Message:
-----------
Cleaning up lots of code, fixing some bugs, tweaking the API for List/Scroller, and tweaking the kinetics for Scroller.

Major API changes are:

1) Got rid of scrollAxis on IViewport.  We now just use horizontalScrollPolicy/verticalScrollPolicy.
2) No more overlay for horizontalScrollPolicy/verticalScrollPolicy.  Instead, we just key off of inputMode="touch" to determine this
3) spark.events.TouchScrollEvent moved to mx.events.TouchScrollEvent
4) Added new API to help with testing: mx.utils.GetTimerUtil.mx_internal::getTimerFunction

We now use the distance scrolled as well as the velocity of that scroll to determine how far to throw the list

QE notes: Added new API for testing purposes
Doc notes: None
Bugs: SDK-27031, SDK-27021
Reviewer: None - will review with mobile list stuff later (very soon in fact)
Tests run: checkintests, mustella Scroller, List, and ListDND
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/GetTimerUtil.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/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TouchScrollingEasing.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/events/TouchScrollEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/IViewport.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ScrollPolicy.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/events/TouchScrollEvent.as" copyfrom-rev="17005" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/TouchScrollEvent.as</path>

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

--- frameworks/projects/framework/src/FrameworkClasses.as
+++ frameworks/projects/framework/src/FrameworkClasses.as
@@ -136,6 +136,7 @@
 	import mx.utils.DescribeTypeCache; DescribeTypeCache;
 	import mx.utils.DescribeTypeCacheRecord; DescribeTypeCacheRecord;
 	import mx.utils.DisplayUtil; DisplayUtil;
+    import mx.utils.GetTimerUtil; GetTimerUtil;
     import mx.utils.HSBColor; HSBColor;
     import mx.utils.LinkedList; LinkedList;
 	import mx.utils.LinkedListNode; LinkedListNode;


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

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

 package mx.rpc.soap
 {


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

--- frameworks/projects/rpc/src/mx/rpc/soap/WebService.as
+++ frameworks/projects/rpc/src/mx/rpc/soap/WebService.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 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: 19980
Author:   chiedozi@adobe.com
Date:     2011-01-27T19:46:02.128372Z

Log Message:
-----------
TabbedViewNavigator now disables the TabBar when a child navigator is changing views
TabbedViewNavigator now enforces its tabBar skinpart to have its requireSelection property be true
Removed an unnecessary  validateNow from TabbedViewNavigator
Resolved some TODOs and FIXMEs

QE notes:
Doc notes:
Bugs:
Reviewer: Jason San Jose
Tests run:
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/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/managers/PersistenceManager.as</path>
<path kind="file" action="M">/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/ViewNavigatorApplicationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/NavigationStack.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.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@1264621 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as
@@ -505,7 +505,6 @@
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    // TODO (chiedozi): This is not module safe
     public function loadViewData(value:Object):void
     {
         label = value.label;
@@ -516,6 +515,9 @@
             icon = value.iconStringName;
         else if (iconClassName != null)
             icon = getDefinitionByName(iconClassName);
+
+        // TODO (chiedozi): This is not module safe because of its use of
+        // getDefinitionByName.  Should use systemManager to do this. (SDK-27424)
     }

     /**


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

--- frameworks/projects/mx/src/mx/effects/RemoveItemAction.as
+++ frameworks/projects/mx/src/mx/effects/RemoveItemAction.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2007 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: 1218
Author:   jimurphy@adobe.com
Date:     2008-04-15T16:09:32.174552Z

Log Message:
-----------
merge 3.0.x[1069:1202] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/in/air/air_version.txt</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/lib/flex-messaging-common.jar</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/codec/PNGEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MultiTopicProducer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/codec/JPEGEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/StatusBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SchemaTypeRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/codec/IImageEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ObjectProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MultiTopicConsumer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/IXMLDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/SOAPFault.as</path>
<path kind="file" action="M">/flex/sdk/trunk/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/WebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/Channel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/Operation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/HaloColors.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/skins/halo/SliderThumbSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/IXMLEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/RoundedRectangle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SimpleXMLEncoder.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/rpc/src/mx/rpc/soap/SOAPHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/mxml/WebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/wsdl/WSDLBinding.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/mxml/Operation.as</path>

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

--- frameworks/projects/mx/src/mx/controls/ComboBox.as
+++ frameworks/projects/mx/src/mx/controls/ComboBox.as
@@ -395,7 +395,7 @@
  *    <b>Styles</b>
  *    alternatingItemColors="undefined"
  *    arrowButtonWidth="22"
- *    borderColor="0xB7BAABC"
+ *    borderColor="0xB7BABC"
  *    borderThickness="1"
  *    closeDuration="250"
  *    closeEasingFunction="undefined"


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

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

 package mx.controls
 {


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

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


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

--- frameworks/projects/automation/src/mx/automation/delegates/controls/ButtonBarAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/controls/ButtonBarAutomationImpl.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.automation.delegates.controls
 {


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

--- frameworks/projects/automation/src/mx/automation/events/AutomationDragEventWithPositionInfo.as
+++ frameworks/projects/automation/src/mx/automation/events/AutomationDragEventWithPositionInfo.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.automation.events
 {


Take an E4X shortcut.

Take an E4X shortcut.

--- exporter/src/main/as/flump/export/BetwixtPublisher.as
+++ exporter/src/main/as/flump/export/BetwixtPublisher.as
@@ -75,10 +75,8 @@
                 var movieXml :XML = movie.toXML();
                 movieXml.@authoredDevice = authoredDevice.name();
                 movieXml.@name = prefix + movieXml.@name;
-                for each (var kf :XML in movieXml..kf) {
-                    if (new XmlConverter(kf).hasAttr("ref")) {
-                        kf.@ref = prefix + kf.@ref;
-                    }
+                for each (var kf :XML in movieXml..kf.@ref) {
+                    kf.@ref = prefix + kf.@ref;
                 }
                 xml.appendChild(movieXml);
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 158
Author:   jszeto@adobe.com
Date:     2008-01-11T07:17:51.518779Z

Log Message:
-----------
Flex SDK Bug Fix

SDK-14226 - Container uses scale9Grid as borderMetrics

Changed container and ScrollControlBase to no longer use the skin's scale9Grid as the borderMetrics.

Bug: SDK-14226
QA: Yes
Doc: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>

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

--- frameworks/projects/mx/src/mx/core/ScrollControlBase.as
+++ frameworks/projects/mx/src/mx/core/ScrollControlBase.as
@@ -303,8 +303,8 @@
      */
     public function get borderMetrics():EdgeMetrics
     {
-        return (border && border is IBorder) ?
-                IBorder(border).borderMetrics : EdgeMetrics.EMPTY;
+        return (border && border is IRectangularBorder) ?
+                IRectangularBorder(border).borderMetrics : EdgeMetrics.EMPTY;
     }

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 13026
Author:   jszeto@adobe.com
Date:     2009-12-17T01:51:29.158496Z

Log Message:
-----------
UITextField and UIFTETextField measurement fixes

http://bugs.adobe.com/jira/browse/SDK-24687 - DateField does not position month/year as expected in date dropDown
when scale is applied

UITextField and UIFTETextField were returning incorrect values for measuredHeight and measuredWidth when an ancestor was scaled.

UITextField works around a quirk of a scaled TextField. When using device fonts, textWidth and textHeight return a value modified by scale (when it really shouldn't).

I’ll use the term "scaledWidth" and "scaledHeight" to represent the actual pixel dimensions of a scaled textField. This is the dimensions of the textField as it appears on the screen.

textWidth = scaledWidth / scaleX
textHeight = scaledHeight / scaleX

To calculate the unscaled textWidth and textHeight, we need to multiply textWidth and textHeight by scaleX / scaleY.

unscaled textWidth = textWidth * scaleX / scaleY
unscaled textHeight = textHeight * scaleX / scaleY

UIFTETextField properly returns textWidth and textHeight properties even when scaled. So measuredWidth and measuredHeight can just use textWidth and textHeight when using device or embedded fonts.

DateChooser was measuring and laying itself out before it was added to the stage (which is true for all components in an application). Thus it was not getting the correct measurements for the month and year textFields. The fix is to listen for the addedToStage event and invalidate our size if scaleX or scaleY != 1.

QE notes: Add tests for scaled DateChooser and DateField
Doc notes: None
Bugs: SDK-24687
Reviewer: Alex
Tests run: checkintests, DateChooser, DateField
Is noteworthy for integration: No

Modified Paths:
--------------
<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/spark/src/mx/core/UIFTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>

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

--- frameworks/projects/spark/src/mx/core/UIFTETextField.as
+++ frameworks/projects/spark/src/mx/core/UIFTETextField.as
@@ -1226,10 +1226,7 @@
     {
         validateNow();

-        if (!stage)
-            return textHeight + TEXT_HEIGHT_PADDING;
-
-        return textHeight * transform.concatenatedMatrix.d + TEXT_HEIGHT_PADDING;
+        return textHeight + TEXT_HEIGHT_PADDING;
     }

     //----------------------------------
@@ -1296,10 +1293,7 @@
     {
         validateNow();

-        if (!stage)
-            return textWidth + TEXT_WIDTH_PADDING;
-
-        return textWidth * transform.concatenatedMatrix.a + TEXT_WIDTH_PADDING;
+        return textWidth + TEXT_WIDTH_PADDING;
     }

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 5161
Author:   cframpto@adobe.com
Date:     2009-03-04T14:20:59.384387Z

Log Message:
-----------
Fallout from optimizing the number of times text has to be composed for TextBox/TextGraphic.

If the text has certain styles, such as textAlign that is not left-aligned or verticalAlign that is not top-aligned, the text must be recomposed when the size changes so that it's moved to the proper place within the new boundaries.

QE Notes: tests that passed: TextGraphic, layout3D, Button, Radiobutton, checkin tests
Doc Notes:
Bugs: SDK-19666
Reviewers: will be Gordon on his return

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextBox.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@1279461 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/Label.as
+++ frameworks/projects/spark/src/spark/components/Label.as
@@ -22,7 +22,6 @@
 import flash.text.engine.FontMetrics;
 import flash.text.engine.Kerning;
 import flash.text.engine.LineJustification;
-import flash.text.engine.TabStop;
 import flash.text.engine.SpaceJustifier;
 import flash.text.engine.TextBlock;
 import flash.text.engine.TextElement;
@@ -155,6 +154,37 @@
     //  Methods
     //
     //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Certain styles require the text to be recomposed when the height
+     *  changes.
+     */
+    override protected function composeOnHeightChange():Boolean
+    {
+        var verticalAlign:String = getStyle("verticalAlign");
+        var topAligned:Boolean = (verticalAlign == "top");
+
+        return !topAligned;
+    }
+
+    /**
+     *  @private
+     *  Certain styles require the text to be recomposed when the width
+     *  changes.
+     */
+    override protected function composeOnWidthChange():Boolean
+    {
+        var direction:String = getStyle("direction");
+        var textAlign:String = getStyle("textAlign");
+
+        var leftAligned:Boolean =
+            textAlign == "left" ||
+            textAlign == "start" && direction == "ltr" ||
+            textAlign == "end" && direction == "rtl";
+
+        return !leftAligned;
+    }

     /**
      *  @private


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

--- frameworks/projects/spark/src/spark/utils/BitmapUtil.as
+++ frameworks/projects/spark/src/spark/utils/BitmapUtil.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.utils
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 1098
Author:   jimurphy@adobe.com
Date:     2008-04-03T21:50:39.896200Z

Log Message:
-----------
Merge 3.0.x -- 362:394, 427:429, 603:608, 644:645, 651:663, 672:676, 755:756, 763:766, 785:790, 812:814, 854:861, 862:866, 866:933,971:1009, 1050:1056 --> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/DefaultDataDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VRule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncRequest.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/IList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/StreamingConnectionHandler.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IRepeaterClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/videoClasses/VideoError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ObjectProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/HTTPRequestMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/Locale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/Responder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/MessageSerializationError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/SOAPMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IBrowserManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ComponentDescriptor.as</path>
<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/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/IViewCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/AbstractWebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Tween.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManager.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/controls/menuClasses/IMenuItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageResponder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridBase.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/framework/src/mx/preloaders/Preloader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ILayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Spacer.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/rpc/src/mx/rpc/Fault.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/XMLListCollection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectTargetFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/SliderEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncToken.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/ScrollEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/videoClasses/CuePointManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/NumericStepperEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/BrowserManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/events/ChannelFaultEvent.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/collections/CursorBookmark.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/IXMLEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/WSDLLoadEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/LoadEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/ListCollectionView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/FlexClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/SubscriptionInfo.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/DescribeTypeCache.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/logging/LogLogger.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/rpc/src/mx/messaging/MessageAgent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/build_framework.xml</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/rpc/src/mx/rpc/events/HeaderEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/DownloadProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/ITreeDataDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/RemoteObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>

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

--- frameworks/projects/mx/src/mx/containers/Panel.as
+++ frameworks/projects/mx/src/mx/containers/Panel.as
@@ -1684,8 +1684,8 @@

     /**
      *  Returns the height of the header.
-     *
-     *  @return The height of the header, in pixels.
+     *
+     *  @return The height of the header, in pixels.
      */
     protected function getHeaderHeight():Number
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 10200
Author:   rfrishbe@adobe.com
Date:     2009-09-12T17:42:53.454591Z

Log Message:
-----------
Found a bug when I was fixing visibility issues for AIR.  "windowClose" as an event name conflicts with another internal event that Window/WindowedApplication use.  To fix this, I'm changing the newly added WindowedSystemManager.WINDOW_CLOSE to "globalNotifyWindowClose".  This class (and the event) is an internal class that is only used by automation.  I've run this change by the automation team to make sure it is ok.

QE notes: -
Doc notes: -
Bugs: -
Reviewer: Darrell
Tests run: checkintests, Rob ran WindowedApplication and Window tests
Is noteworthy for integration: no

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/WindowExistenceEvent.as

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

--- frameworks/projects/airframework/src/mx/events/WindowExistenceEvent.as
+++ frameworks/projects/airframework/src/mx/events/WindowExistenceEvent.as
@@ -39,7 +39,7 @@

     /**
      *  The WindowExistenceEvent.WINDOW_CREATE constant defines the value of the
-     *  type property of the event object for a windowCreate event.
+     *  type property of the event object for a globalNotifyWindowCreate event.
      *
      *
The properties of the event object have the following values:

      *

@@ -58,17 +58,17 @@
      *       was created.

      *

      *
-     *  @eventType windowCreate
+     *  @eventType globalNotifyWindowCreate
      *
      *  @langversion 3.0
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    public static const WINDOW_CREATE:String = "windowCreate";
+    public static const WINDOW_CREATE:String = "globalNotifyWindowCreate";

         /**
      *  The WindowExistenceEvent.WINDOW_CLOSE constant defines the value of the
-     *  type property of the event object for a windowClose event.
+     *  type property of the event object for a globalNotifyWindowClose event.
      *
      *
The properties of the event object have the following values:

      *

@@ -87,13 +87,13 @@
      *       was closed.

      *

      *
-     *  @eventType windowClose
+     *  @eventType globalNotifyWindowClose
      *
      *  @langversion 3.0
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    public static const WINDOW_CLOSE:String = "windowClose";
+    public static const WINDOW_CLOSE:String = "globalNotifyWindowClose";

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 5099
Author:   gauravj@adobe.com
Date:     2009-02-27T03:43:02.639229Z

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:
--------------
147 paths were modified

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

--- frameworks/projects/rpc/src/mx/messaging/channels/DirectHTTPChannel.as
+++ frameworks/projects/rpc/src/mx/messaging/channels/DirectHTTPChannel.as
@@ -56,6 +56,12 @@
     /**
     *  Constructs an instance of a DirectHTTPChannel.
     *  The parameters are not used.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion BlazeDS 4
+    *  @productversion LCDS 3
     */
     public function DirectHTTPChannel(id:String, uri:String="")
     {
@@ -84,6 +90,12 @@

     /**
      *  Indicates if this channel is connected.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion BlazeDS 4
+     *  @productversion LCDS 3
      */
     override public function get connected():Boolean
     {
@@ -92,6 +104,12 @@

     /**
      *  Indicates the protocol used by this channel.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion BlazeDS 4
+     *  @productversion LCDS 3
      */
     override public function get protocol():String
     {
@@ -129,6 +147,12 @@
      *  @param message The IMessage to send.
      *
      *  @return The MessageResponder to handle the send result or fault.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion BlazeDS 4
+     *  @productversion LCDS 3
      */
     override protected function getMessageResponder(agent:MessageAgent,
                                             message:IMessage):MessageResponder
@@ -295,6 +319,12 @@

     /**
      *  Constructs a DirectHTTPMessageResponder.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion BlazeDS 4
+     *  @productversion LCDS 3
      */
     public function DirectHTTPMessageResponder(agent:MessageAgent, msg:IMessage,
                                         channel:DirectHTTPChannel, urlLoader:URLLoader)
@@ -327,6 +357,12 @@

     /**
      *  The URLLoader associated with this responder.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion BlazeDS 4
+     *  @productversion LCDS 3
      */
     public var urlLoader:URLLoader;

@@ -421,6 +457,12 @@
     /**
      *  Handle a request timeout by closing our associated URLLoader and
      *  faulting the message to the agent.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion BlazeDS 4
+     *  @productversion LCDS 3
      */
     override protected function requestTimedOut():void
     {


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

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


Implement adding DroneAnarchy directory in case of running from Urho3DPlayer

--- DroneAnarchy/Resources/Scripts/DroneAnarchy.as
+++ DroneAnarchy/Resources/Scripts/DroneAnarchy.as
@@ -62,6 +62,8 @@
 void Start()
 {
 	graphics.windowTitle = "Drone Anarchy";
+
+	cache.AddResourceDir("DroneAnarchy");

 	CreateDebugHud();


fix world to local computation/update when the local to world is uptodate and the world to local has already been instanciated

--- src/aerys/minko/scene/controller/TransformController.as
+++ src/aerys/minko/scene/controller/TransformController.as
@@ -1,283 +1,283 @@
 package aerys.minko.scene.controller
 {
-	import aerys.minko.ns.minko_math;
-	import aerys.minko.render.Viewport;
-	import aerys.minko.scene.node.Group;
-	import aerys.minko.scene.node.ISceneNode;
-	import aerys.minko.scene.node.Scene;
-	import aerys.minko.type.math.Matrix4x4;
-
-	import flash.display.BitmapData;
-	import flash.utils.Dictionary;
-
-	use namespace minko_math;
-
-	/**
-	 * The TransformController handles the batched update of all the local to world matrices
-	 * of a sub-scene. As such, it will only be active on the root node of a sub-scene and will
-	 * automatically disable itself on other nodes.
-	 *
-	 * @author Jean-Marc Le Roux
-	 *
-	 */
-	public final class TransformController extends AbstractController
-	{
-		private var _target								: ISceneNode;
-
-		private var _invalidList						: Boolean;
-
-		private var _nodeToId							: Dictionary;
-		private var _idToNode							: Vector.<ISceneNode>
-		private var _transforms							: Vector.<Matrix4x4>;
-		private var _localToWorldTransformsInitialized	: Vector.<Boolean>;
-		private var _localToWorldTransforms 			: Vector.<Matrix4x4>;
+    import aerys.minko.ns.minko_math;
+    import aerys.minko.render.Viewport;
+    import aerys.minko.scene.node.Group;
+    import aerys.minko.scene.node.ISceneNode;
+    import aerys.minko.scene.node.Scene;
+    import aerys.minko.type.math.Matrix4x4;
+
+    import flash.display.BitmapData;
+    import flash.utils.Dictionary;
+
+    use namespace minko_math;
+
+    /**
+     * The TransformController handles the batched update of all the local to world matrices
+     * of a sub-scene. As such, it will only be active on the root node of a sub-scene and will
+     * automatically disable itself on other nodes.
+     *
+     * @author Jean-Marc Le Roux
+     *
+     */
+    public final class TransformController extends AbstractController
+    {
+        private static const INIT_NONE                  : uint  = 0;
+        private static const INIT_LOCAL_TO_WORLD        : uint  = 1;
+        private static const INIT_WORLD_TO_LOCAL        : uint  = 2;
+
+        private var _target								: ISceneNode;
+
+        private var _invalidList						: Boolean;
+
+        private var _nodeToId							: Dictionary;
+        private var _idToNode							: Vector.<ISceneNode>
+        private var _transforms							: Vector.<Matrix4x4>;
+        private var _initialized	                    : Vector.<uint>;
+        private var _localToWorldTransforms 			: Vector.<Matrix4x4>;
         private var _worldToLocalTransforms 			: Vector.<Matrix4x4>;
-		private var _numChildren						: Vector.<uint>;
-		private var _firstChildId						: Vector.<uint>;
-		private var _parentId							: Vector.<int>;
-
-		public function TransformController()
-		{
-			super();
-
-			targetAdded.add(targetAddedHandler);
-			targetRemoved.add(targetRemovedHandler);
-		}
-
-		private function renderingBeginHandler(scene			: Scene,
-											   viewport		: Viewport,
-											   destination	: BitmapData,
-											   time			: Number) : void
-		{
-			if (_invalidList)
-				updateTransformsList();
-
-			if (_transforms.length)
-				updateLocalToWorld();
-		}
-
-		private function updateLocalToWorld(nodeId : uint = 0) : void
-		{
-			var numNodes 			: uint 			= _transforms.length;
-			var childrenOffset		: uint			= 1;
-			var rootLocalToWorld	: Matrix4x4		= _localToWorldTransforms[nodeId];
-			var rootTransform		: Matrix4x4		= _transforms[nodeId];
-			var root				: ISceneNode	= _idToNode[childId];
-
-			if (rootTransform._hasChanged || !_localToWorldTransformsInitialized[nodeId])
-			{
-				rootLocalToWorld.copyFrom(rootTransform);
-
-				if (nodeId != 0)
-					rootLocalToWorld.append(_localToWorldTransforms[_parentId[nodeId]]);
-
-				rootTransform._hasChanged = false;
-				_localToWorldTransformsInitialized[nodeId] = true;
-				root.localToWorldTransformChanged.execute(root, rootLocalToWorld);
-			}
-
-			for (; nodeId < numNodes; ++nodeId)
-			{
-				var localToWorld 	: Matrix4x4	= _localToWorldTransforms[nodeId];
-				var numChildren		: uint		= _numChildren[nodeId];
-				var firstChildId	: uint		= _firstChildId[nodeId];
-				var lastChildId		: uint		= firstChildId + numChildren;
-				var isDirty			: Boolean	= localToWorld._hasChanged;
+        private var _numChildren						: Vector.<uint>;
+        private var _firstChildId						: Vector.<uint>;
+        private var _parentId							: Vector.<int>;
+
+        public function TransformController()
+        {
+            super();
+
+            targetAdded.add(targetAddedHandler);
+            targetRemoved.add(targetRemovedHandler);
+        }
+
+        private function renderingBeginHandler(scene			: Scene,
+                                               viewport		: Viewport,
+                                               destination	: BitmapData,
+                                               time			: Number) : void
+        {
+            if (_invalidList)
+                updateTransformsList();
+
+            if (_transforms.length)
+                updateLocalToWorld();
+        }
+
+        private function updateLocalToWorld(nodeId : uint = 0) : void
+        {
+            var numNodes 			: uint 			= _transforms.length;
+            var childrenOffset		: uint			= 1;
+            var rootLocalToWorld	: Matrix4x4		= _localToWorldTransforms[nodeId];
+            var rootTransform		: Matrix4x4		= _transforms[nodeId];
+            var root				: ISceneNode	= _idToNode[childId];
+
+            if (rootTransform._hasChanged || _initialized[nodeId] == INIT_NONE)
+            {
+                rootLocalToWorld.copyFrom(rootTransform);
+
+                if (nodeId != 0)
+                    rootLocalToWorld.append(_localToWorldTransforms[_parentId[nodeId]]);
+
+                rootTransform._hasChanged = false;
+                _initialized[nodeId] = INIT_LOCAL_TO_WORLD;
+                root.localToWorldTransformChanged.execute(root, rootLocalToWorld);
+            }
+
+            for (; nodeId < numNodes; ++nodeId)
+            {
+                var localToWorld 	: Matrix4x4	= _localToWorldTransforms[nodeId];
+                var numChildren		: uint		= _numChildren[nodeId];
+                var firstChildId	: uint		= _firstChildId[nodeId];
+                var lastChildId		: uint		= firstChildId + numChildren;
+                var isDirty			: Boolean	= localToWorld._hasChanged;

                 localToWorld._hasChanged = false;
-
-				for (var childId : uint = firstChildId; childId < lastChildId; ++childId)
-				{
-					var childTransform		: Matrix4x4		= _transforms[childId];
-					var childLocalToWorld	: Matrix4x4		= _localToWorldTransforms[childId];
-					var childIsDirty		: Boolean		= isDirty || childTransform._hasChanged
-						|| !_localToWorldTransformsInitialized[childId];
-
-					if (childIsDirty)
-					{
-						var child	: ISceneNode	= _idToNode[childId];
-
-						childLocalToWorld
-							.copyFrom(childTransform)
-							.append(localToWorld);
-
-						childTransform._hasChanged = false;
-						_localToWorldTransformsInitialized[childId] = true;
-						child.localToWorldTransformChanged.execute(child, childLocalToWorld);
-					}
-				}
-			}
-		}
-
-        private function getDirtyRoot(nodeId : int) : int
+
+                for (var childId : uint = firstChildId; childId < lastChildId; ++childId)
+                {
+                    var childTransform		: Matrix4x4		= _transforms[childId];
+                    var childLocalToWorld	: Matrix4x4		= _localToWorldTransforms[childId];
+                    var childIsDirty		: Boolean		= isDirty || childTransform._hasChanged
+                        || !_initialized[childId];
+
+                    if (childIsDirty)
+                    {
+                        var child	: ISceneNode	= _idToNode[childId];
+
+                        childLocalToWorld
+                        .copyFrom(childTransform)
+                            .append(localToWorld);
+
+                        childTransform._hasChanged = false;
+                        _initialized[childId] = INIT_LOCAL_TO_WORLD;
+                        child.localToWorldTransformChanged.execute(child, childLocalToWorld);
+                    }
+                }
+            }
+        }
+
+        private function updateAncestorsAndSelfLocalToWorld(nodeId : uint) : void
         {
             var dirtyRoot : int = -1;

             while (nodeId >= 0)
             {
                 if ((_transforms[nodeId] as Matrix4x4)._hasChanged ||
-					!_localToWorldTransformsInitialized[nodeId])
+                    !_initialized[nodeId])
                     dirtyRoot = nodeId;

                 nodeId = _parentId[nodeId];
             }

-            return dirtyRoot;
-        }
-
-		private function targetAddedHandler(ctrl	: TransformController,
-											target	: ISceneNode) : void
-		{
-			if (_target)
-				throw new Error('The TransformController cannot have more than one target.');
-
-			_target = target;
-			_invalidList = true;
-
-			if (target is Scene)
-			{
-				(target as Scene).renderingBegin.add(renderingBeginHandler);
-				return;
-			}
-
-			if (target is Group)
-			{
-				var targetGroup : Group = target as Group;
-
-				targetGroup.descendantAdded.add(descendantAddedHandler);
-				targetGroup.descendantRemoved.add(descendantRemovedHandler);
-			}
-
-			target.added.add(addedHandler);
-		}
-
-		private function targetRemovedHandler(ctrl		: TransformController,
-											  target	: ISceneNode) : void
-		{
-			target.added.remove(addedHandler);
-
-			if (target is Group)
-			{
-				var targetGroup : Group = target as Group;
-
-				targetGroup.descendantAdded.remove(descendantAddedHandler);
-				targetGroup.descendantRemoved.remove(descendantRemovedHandler);
-			}
-
-			_invalidList = false;
-			_target = null;
-
-			_nodeToId = null;
-			_transforms = null;
-			_localToWorldTransformsInitialized = null;
-			_localToWorldTransforms = null;
+            if (dirtyRoot >= 0)
+                updateLocalToWorld(dirtyRoot);
+        }
+
+        private function targetAddedHandler(ctrl	: TransformController,
+                                            target	: ISceneNode) : void
+        {
+            if (_target)
+                throw new Error('The TransformController cannot have more than one target.');
+
+            _target = target;
+            _invalidList = true;
+
+            if (target is Scene)
+            {
+                (target as Scene).renderingBegin.add(renderingBeginHandler);
+                return;
+            }
+
+            if (target is Group)
+            {
+                var targetGroup : Group = target as Group;
+
+                targetGroup.descendantAdded.add(descendantAddedHandler);
+                targetGroup.descendantRemoved.add(descendantRemovedHandler);
+            }
+
+            target.added.add(addedHandler);
+        }
+
+        private function targetRemovedHandler(ctrl		: TransformController,
+                                              target	: ISceneNode) : void
+        {
+            target.added.remove(addedHandler);
+
+            if (target is Group)
+            {
+                var targetGroup : Group = target as Group;
+
+                targetGroup.descendantAdded.remove(descendantAddedHandler);
+                targetGroup.descendantRemoved.remove(descendantRemovedHandler);
+            }
+
+            _invalidList = false;
+            _target = null;
+
+            _nodeToId = null;
+            _transforms = null;
+            _initialized = null;
+            _localToWorldTransforms = null;
             _worldToLocalTransforms = null;
-			_numChildren = null;
-			_idToNode = null;
-			_parentId = null;
-		}
-
-		private function addedHandler(target : ISceneNode, ancestor : Group) : void
-		{
-			// the controller will remove itself from the node when it's not its own root anymore
-			// but it will watch for the 'removed' signal to add itself back if the node becomes
-			// its own root again
-			_target.removed.add(removedHandler);
-			_target.removeController(this);
-		}
-
-		private function removedHandler(target : ISceneNode, ancestor : Group) : void
-		{
-			if (target.root == target)
-			{
-				target.removed.remove(removedHandler);
-				target.addController(this);
-			}
-		}
-
-		private function descendantAddedHandler(root		: Group,
-												descendant	: ISceneNode) : void
-		{
-			_invalidList = true;
-		}
-
-		private function descendantRemovedHandler(root			: Group,
-												  descendant	: ISceneNode) : void
-		{
-			_invalidList = true;
-		}
-
-		private function updateTransformsList() : void
-		{
-			var root 	: ISceneNode 			= _target.root;
-			var nodes 	: Vector.<ISceneNode> 	= new <ISceneNode>[root];
-			var nodeId 	: uint 					= 0;
-
-			_nodeToId = new Dictionary(true);
-			_transforms = new <Matrix4x4>[];
-			_localToWorldTransformsInitialized = new <Boolean>[];
-			_localToWorldTransforms = new <Matrix4x4>[];
+            _numChildren = null;
+            _idToNode = null;
+            _parentId = null;
+        }
+
+        private function addedHandler(target : ISceneNode, ancestor : Group) : void
+        {
+            // the controller will remove itself from the node when it's not its own root anymore
+            // but it will watch for the 'removed' signal to add itself back if the node becomes
+            // its own root again
+            _target.removed.add(removedHandler);
+            _target.removeController(this);
+        }
+
+        private function removedHandler(target : ISceneNode, ancestor : Group) : void
+        {
+            if (target.root == target)
+            {
+                target.removed.remove(removedHandler);
+                target.addController(this);
+            }
+        }
+
+        private function descendantAddedHandler(root		: Group,
+                                                descendant	: ISceneNode) : void
+        {
+            _invalidList = true;
+        }
+
+        private function descendantRemovedHandler(root			: Group,
+                                                  descendant	: ISceneNode) : void
+        {
+            _invalidList = true;
+        }
+
+        private function updateTransformsList() : void
+        {
+            var root 	: ISceneNode 			= _target.root;
+            var nodes 	: Vector.<ISceneNode> 	= new <ISceneNode>[root];
+            var nodeId 	: uint 					= 0;
+
+            _nodeToId = new Dictionary(true);
+            _transforms = new <Matrix4x4>[];
+            _initialized = new <uint>[];
+            _localToWorldTransforms = new <Matrix4x4>[];
             _worldToLocalTransforms = new <Matrix4x4>[];
-			_numChildren = new <uint>[];
-			_firstChildId = new <uint>[];
-			_idToNode = new <ISceneNode>[];
-			_parentId = new <int>[-1];
-
-			while (nodes.length)
-			{
-				var node 	: ISceneNode 	= nodes.shift();
-				var group 	: Group 		= node as Group;
-
-				_nodeToId[node] = nodeId;
-				_idToNode[nodeId] = node;
-				_transforms[nodeId] = node.transform;
-				_localToWorldTransforms[nodeId] = new Matrix4x4().lock();
-				_localToWorldTransformsInitialized[nodeId] = false;
-
-				if (group)
-				{
-					var numChildren 	: uint = group.numChildren;
-					var firstChildId 	: uint = nodeId + nodes.length + 1;
-
-					_numChildren[nodeId] = numChildren;
-					_firstChildId[nodeId] = firstChildId;
-					for (var childId : uint = 0; childId < numChildren; ++childId)
-					{
-						_parentId[uint(firstChildId + childId)] = nodeId;
-						nodes.push(group.getChildAt(childId));
-					}
-				}
-				else
-				{
-					_numChildren[nodeId] = 0;
-					_firstChildId[nodeId] = 0;
-				}
-
-				++nodeId;
-			}
-
+            _numChildren = new <uint>[];
+            _firstChildId = new <uint>[];
+            _idToNode = new <ISceneNode>[];
+            _parentId = new <int>[-1];
+
+            while (nodes.length)
+            {
+                var node 	: ISceneNode 	= nodes.shift();
+                var group 	: Group 		= node as Group;
+
+                _nodeToId[node] = nodeId;
+                _idToNode[nodeId] = node;
+                _transforms[nodeId] = node.transform;
+                _localToWorldTransforms[nodeId] = new Matrix4x4().lock();
+                _initialized[nodeId] = INIT_NONE;
+
+                if (group)
+                {
+                    var numChildren 	: uint = group.numChildren;
+                    var firstChildId 	: uint = nodeId + nodes.length + 1;
+
+                    _numChildren[nodeId] = numChildren;
+                    _firstChildId[nodeId] = firstChildId;
+                    for (var childId : uint = 0; childId < numChildren; ++childId)
+                    {
+                        _parentId[uint(firstChildId + childId)] = nodeId;
+                        nodes.push(group.getChildAt(childId));
+                    }
+                }
+                else
+                {
+                    _numChildren[nodeId] = 0;
+                    _firstChildId[nodeId] = 0;
+                }
+
+                ++nodeId;
+            }
+
             _worldToLocalTransforms.length = _localToWorldTransforms.length;
-			_invalidList = false;
-		}
-
-		public function getLocalToWorldTransform(node 			: ISceneNode,
-												 forceUpdate 	: Boolean = false) : Matrix4x4
-		{
-			if (_invalidList || _nodeToId[node] == undefined)
-				updateTransformsList();
-
-			var nodeId : uint = _nodeToId[node];
-
-			if (forceUpdate)
-            {
-                var dirtyRoot : int = getDirtyRoot(nodeId);
-
-                if (dirtyRoot >= 0)
-                    updateLocalToWorld(dirtyRoot);
-            }
-
-			return _localToWorldTransforms[nodeId];
-		}
+            _invalidList = false;
+        }
+
+        public function getLocalToWorldTransform(node 			: ISceneNode,
+                                                 forceUpdate 	: Boolean = false) : Matrix4x4
+        {
+            if (_invalidList || _nodeToId[node] == undefined)
+                updateTransformsList();
+
+            var nodeId : uint = _nodeToId[node];
+
+            if (forceUpdate)
+                updateAncestorsAndSelfLocalToWorld(nodeId);
+
+            return _localToWorldTransforms[nodeId];
+        }

         public function getWorldToLocalTransform(node           : ISceneNode,
                                                  forceUpdate    : Boolean   = false) : Matrix4x4
@@ -292,24 +292,25 @@
             {
                 _worldToLocalTransforms[nodeId] = worldToLocalTransform = new Matrix4x4();
                 if (!forceUpdate)
+                {
                     worldToLocalTransform.copyFrom(_localToWorldTransforms[nodeId]).invert();
+                    _initialized[nodeId] |= INIT_WORLD_TO_LOCAL;
+                }
             }

             if (forceUpdate)
-            {
-                var dirtyRoot : int = getDirtyRoot(nodeId);
-
-                if (dirtyRoot >= 0)
-                {
-                    updateLocalToWorld(dirtyRoot);
-
-                    worldToLocalTransform
-                        .copyFrom(_localToWorldTransforms[nodeId])
-                        .invert();
-                }
+                updateAncestorsAndSelfLocalToWorld(nodeId);
+
+            if (!(_initialized[nodeId] & INIT_WORLD_TO_LOCAL))
+            {
+                _initialized[nodeId] |= INIT_WORLD_TO_LOCAL;
+
+                worldToLocalTransform
+                    .copyFrom(_localToWorldTransforms[nodeId])
+                    .invert();
             }

             return worldToLocalTransform;
         }
-	}
+    }
 }


optimize TransformController.updateLocalToWorld() to stop updating as soon as the node with id == targetNodeId is updated (if provided)

--- src/aerys/minko/scene/controller/TransformController.as
+++ src/aerys/minko/scene/controller/TransformController.as
@@ -53,7 +53,7 @@
             targetRemoved.add(targetRemovedHandler);
         }

-        private function renderingBeginHandler(scene			: Scene,
+        private function renderingBeginHandler(scene		: Scene,
                                                viewport		: Viewport,
                                                destination	: BitmapData,
                                                time			: Number) : void
@@ -105,12 +105,15 @@
             }
         }

-        private function updateLocalToWorld(nodeId : uint = 0, subtreeOnly : Boolean = false) : void
-        {
-            var numNodes 			: uint 			= _transforms.length;
-            var subtreeMax          : uint          = nodeId;
+        private function updateLocalToWorld(nodeId : uint = 0, targetNodeId : int = -1) : void
+        {
+            var numNodes 	: uint 	= _transforms.length;
+            var subtreeMax  : uint  = nodeId;

             updateRootLocalToWorld(nodeId);
+
+            if (nodeId == targetNodeId)
+                return;

             while (nodeId < numNodes)
             {
@@ -164,10 +167,13 @@
                             if (childFlags & FLAG_LOCK_TRANSFORMS)
                                 childWorldToLocal.unlock();
                         }
+
+                        if (childId == targetNodeId)
+                            return;
                     }
                 }

-                if (subtreeOnly && nodeId && nodeId >= subtreeMax)
+                if (targetNodeId >= 0 && nodeId && nodeId >= subtreeMax)
                 {
                     // jump to the first brother who has children
                     var parentId : uint = _parentId[nodeId];
@@ -186,21 +192,22 @@
             }
         }

-        private function updateAncestorsAndSelfLocalToWorld(nodeId : int) : void
+        private function updateAncestorsAndSelfLocalToWorld(nodeId : uint) : void
         {
             var dirtyRoot : int = -1;
-
-            while (nodeId >= 0)
-            {
-                if ((_transforms[nodeId] as Matrix4x4)._hasChanged
+            var tmpNodeId : int = nodeId;
+
+            while (tmpNodeId >= 0)
+            {
+                if ((_transforms[tmpNodeId] as Matrix4x4)._hasChanged
                     || !(_flags[nodeId] & FLAG_INIT_LOCAL_TO_WORLD))
-                    dirtyRoot = nodeId;
-
-                nodeId = _parentId[nodeId];
+                    dirtyRoot = tmpNodeId;
+
+                tmpNodeId = _parentId[tmpNodeId];
             }

             if (dirtyRoot >= 0)
-                updateLocalToWorld(dirtyRoot, true);
+                updateLocalToWorld(dirtyRoot, nodeId);
         }

         private function targetAddedHandler(ctrl	: TransformController,


Cleanup.

Cleanup.

git-svn-id: b675b909355d5cf946977f44a8ec5a6ceb3782e4@694 ed5b42cb-e716-0410-a449-f6a68f950b19

--- src/as/com/threerings/flash/video/SimpleVideoDisplay.as
+++ src/as/com/threerings/flash/video/SimpleVideoDisplay.as
@@ -46,9 +46,9 @@

         addChild(_player.getDisplay());

-        _mask = new Shape();
-        this.mask = _mask;
-        addChild(_mask);
+        var masker :Shape = new Shape();
+        this.mask = masker;
+        addChild(masker);

         addEventListener(MouseEvent.ROLL_OVER, handleRollOver);
         addEventListener(MouseEvent.ROLL_OUT, handleRollOut);
@@ -58,7 +58,7 @@
         redrawHUD();

         // create the mask...
-        var g :Graphics = _mask.graphics;
+        var g :Graphics = masker.graphics;
         g.clear();
         g.beginFill(0xFFFFFF);
         g.drawRect(0, 0, NATIVE_WIDTH, NATIVE_HEIGHT);
@@ -310,9 +310,6 @@

     protected var _dragging :Boolean;

-    /** Our mask, also defines our boundaries for clicking. */
-    protected var _mask :Shape;
-
     protected static const PAD :int = 10;
     protected static const TRACK_HEIGHT :int = 20;
     protected static const TRACK_WIDTH :int = NATIVE_WIDTH - (PAD * 2);


Freak out in a controlled way if this happens.

git-svn-id: a3e1eb16dde062992de22c830ed8045c8013209a@482 c613c5cb-e716-0410-b11b-feb51c14d237

--- src/as/com/threerings/whirled/client/SceneDirector.as
+++ src/as/com/threerings/whirled/client/SceneDirector.as
@@ -215,6 +215,11 @@
         clearScene();

         // make the pending scene the active scene
+        if (_pendingData == null) {
+            log.warning("Aiya! Scene move succeeded but we have no pending data! " +
+                        "[prevId=" + _previousSceneId + "].");
+            return;
+        }
         _sceneId = _pendingData.sceneId;
         _pendingData = null;


Transferred from the Adobe Open Source Subversion Repository

Revision: 17662
Author:   clucier@adobe.com
Date:     2010-09-10T19:03:43.452589Z

Log Message:
-----------
Refactor MXItemRenderer.as so as to avoid re-entrancy related to setting state in invalidateDisplayList.

QE notes: None
Doc notes: None
Bugs: SDK-26586
Reviewer: Alex
Tests run: Checkin
Is noteworthy for integration: No

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/mx/controls/listClasses/MXItemRenderer.as

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

--- frameworks/projects/spark/src/mx/controls/listClasses/MXItemRenderer.as
+++ frameworks/projects/spark/src/mx/controls/listClasses/MXItemRenderer.as
@@ -71,6 +71,19 @@
         focusEnabled = false;
     }

+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Flag to help us determine if we need to validate renderer state during
+     *  commitProperties.
+     */
+    private var rendererStateChanged:Boolean;
+
     //----------------------------------
     //  listData
     //----------------------------------
@@ -164,14 +177,17 @@
         if (listData)
         {
             // see if we need to change state.  This is the only invalidation method guaranteed to be
-            // called.  We set up the renderers properties here so no matter what validation method gets
-            // called first, the properties are set up accordingly.
+            // called.
             var listBase:mx.controls.listClasses.ListBase = mx.controls.listClasses.ListBase(listData.owner);
             if (listBase)
             {
-                showsCaret = listBase.isItemShowingCaret(data);
-                selected = listBase.isItemSelected(data);
-                super.hovered = listBase.isItemHighlighted(data);
+                if (showsCaret != listBase.isItemShowingCaret(data) ||
+                    selected != listBase.isItemSelected(data) ||
+                    super.hovered != listBase.isItemHighlighted(data))
+                {
+                    rendererStateChanged = true;
+                    invalidateProperties();
+                }
             }
         }

@@ -205,14 +221,23 @@
      */
     override protected function commitProperties():void
     {
+        // make sure itemIndex is correct before the base class does any computation
+        // based on it
         if (listData)
         {
-            // make sure itemIndex is correct before the base class does any computation
-            // based on it
             var listBase:mx.controls.listClasses.ListBase = mx.controls.listClasses.ListBase(listData.owner);
             itemIndex = listData.rowIndex + listBase.verticalScrollPosition;
         }
-
+
+        // Validate renderer state prior to super.commitProperties.
+        if (rendererStateChanged && listBase)
+        {
+            rendererStateChanged = false;
+            showsCaret = listBase.isItemShowingCaret(data);
+            selected = listBase.isItemSelected(data);
+            super.hovered = listBase.isItemHighlighted(data);
+        }
+
         super.commitProperties();
     }


Update LoaderInspector.dispose for best GC.

--- src/net/manaca/loaderqueue/inspector/LoaderInspector.as
+++ src/net/manaca/loaderqueue/inspector/LoaderInspector.as
@@ -280,6 +280,24 @@
             removeEvents();
             clearAllTask();
         }
+        if(container)
+        {
+            scrollPane.content.removeChild(container);
+            container = null;
+        }
+
+        if(scrollPane)
+        {
+            scrollPane = null;
+        }
+
+        if(onlyButton)
+        {
+            removeChild(onlyButton);
+            onlyButton = null;
+        }
+
+        parentContainer = null;
     }

     /**


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

--- frameworks/projects/automation/src/mx/automation/delegates/containers/TabNavigatorAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/containers/TabNavigatorAutomationImpl.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.automation.delegates.containers
 {


add missing unit image bindings

add missing unit image bindings

--- src/battlecode/client/viewer/render/ImageAssets.as
+++ src/battlecode/client/viewer/render/ImageAssets.as
@@ -25,7 +25,21 @@
 		[Embed('/img/units/soldier0.png')] public static const SOLDIER_NEUTRAL:Class;
 		[Embed('/img/units/soldier1.png')] public static const SOLDIER_A:Class;
 		[Embed('/img/units/soldier2.png')] public static const SOLDIER_B:Class;
-		[Embed('/img/units/medbay0.png')] public static const PLACEHOLDER:Class; // TODO
+        [Embed('/img/units/medbay0.png')] public static const MEDBAY_NEUTRAL:Class;
+        [Embed('/img/units/medbay1.png')] public static const MEDBAY_A:Class;
+        [Embed('/img/units/medbay2.png')] public static const MEDBAY_B:Class;
+        [Embed('/img/units/shields0.png')] public static const SHIELDS_NEUTRAL:Class;
+        [Embed('/img/units/shields1.png')] public static const SHIELDS_A:Class;
+        [Embed('/img/units/shields2.png')] public static const SHIELDS_B:Class;
+        [Embed('/img/units/artillery0.png')] public static const ARTILLERY_NEUTRAL:Class;
+        [Embed('/img/units/artillery1.png')] public static const ARTILLERY_A:Class;
+        [Embed('/img/units/artillery2.png')] public static const ARTILLERY_B:Class;
+        [Embed('/img/units/generator0.png')] public static const GENERATOR_NEUTRAL:Class;
+        [Embed('/img/units/generator1.png')] public static const GENERATOR_A:Class;
+        [Embed('/img/units/generator2.png')] public static const GENERATOR_B:Class;
+        [Embed('/img/units/supplier0.png')] public static const SUPPLIER_NEUTRAL:Class;
+        [Embed('/img/units/supplier1.png')] public static const SUPPLIER_A:Class;
+        [Embed('/img/units/supplier2.png')] public static const SUPPLIER_B:Class;

 		// explosions images
 		[Embed('/img/explode/explode64_f01.png')] public static const EXPLODE_1:Class;


FLEX-33130 Added label setter/getter to interface

--- frameworks/projects/framework/src/mx/core/IButton.as
+++ frameworks/projects/framework/src/mx/core/IButton.as
@@ -52,6 +52,26 @@
      */
     function callLater(method:Function,
                               args:Array /* of Object */ = null):void
+
+	/**
+	 * Gets the text on a Button.
+	 *
+	 * @langversion 3.0
+	 * @playerversion Flash 9
+	 * @playerversion AIR 1.1
+	 * @productversion ApacheFlex 4.10
+	 */
+	function get label():String;
+
+	/**
+	 * Sets the text on a Button.
+	 *
+	 * @langversion 3.0
+	 * @playerversion Flash 9
+	 * @playerversion AIR 1.1
+	 * @productversion ApacheFlex 4.10
+	 */
+	function set label(value:String):void;
 }

 }