Transferred from the Adobe Open Source Subversion Repository

Revision: 12370
Author:   smgilson@adobe.com
Date:     2009-12-02T16:48:37.124467Z

Log Message:
-----------
Fix for doc bug FLEXDOCS-1150

Added a few new examples and default sizes to Spark components

QE notes: -
Doc notes: -
Bugs: -
Reviewer: -
Tests run: - FLEXDOCS-1150
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/SkinnableContainerExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/VScrollBarExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TabBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/BorderContainerExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/HGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/HScrollBarExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TileGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/MyBorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/BorderContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VGroup.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/SkinnableDataContainerExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/formatters/DateFormatter.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/ApplicationContainerExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NavigatorContent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DataGroup.as</path>

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

--- frameworks/projects/spark/src/spark/components/HGroup.as
+++ frameworks/projects/spark/src/spark/components/HGroup.as
@@ -25,6 +25,14 @@
  *  Do not modify the layout property.
  *  instead, use the properties of the HGroup class to modify the
  *  characteristics of the HorizontalLayout class.
+ *
+ *
The HGroup container has the following default characteristics:

+ *

+ *
Characteristic	Description

+ *
Default size	Large enough to display its children

+ *
Minimum size	0 pixels

+ *
Maximum size	10000 pixels wide and 10000 pixels high

+ *

  *
  *  @mxml
  *


Transferred from the Adobe Open Source Subversion Repository

Revision: 11840
Author:   smgilson@adobe.com
Date:     2009-11-16T15:56:26.046886Z

Log Message:
-----------
ASDoc pass on new TabBar control

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/TabBarButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TabBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/TabBarSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/TabBar.as
+++ frameworks/projects/spark/src/spark/components/TabBar.as
@@ -34,6 +34,8 @@
 /**
  *  Defines the radius of the TabBar buttons' top-left and top-right corners for the default
  *  TabBarButton skin.
+ *
+ *  @default 4
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -43,15 +45,53 @@
 [Style(name="cornerRadius", type="Number", format="Length", inherit="no", theme="spark")]

 /**
- *  Displays a list of identical buttons called "tabs".  One tab can be selected at a time
- *  and the first tab is selected by default.
+ *  The TabBar class displays a set of identical tabs.
+ *  One tab can be selected at a time, and the first tab is selected by default.
+ *  The TabBarSkin class arranges the tabs in a single row.
+ *  Use the TabBar cornerRadius style to configure the corner radius
+ *  of the tabs.
  *
- *
The list of tabs is defined by the dataProvider and their appearance is
- *  defined by the dataGroup's ItemRenderer, typically a ButtonBarButton.

- *
- *
The default TabBar skin arranges ButtonBarButton tabs in a single row.  The TabBar
- *  cornerRadius style is used by the default skin to configure the cornerRadius
- *  of ButtonBarButton tabs, setting the style on the TabBar affects all tabs.

+ *
The set of tabs is defined by the dataProvider property.
+ *  The appearance of each tab is defined by the TabBarSkin class.
+ *  By default, each tab is defined as a ButtonBarButton component
+ *  with a skin defined by the TabBarButtonSkin class.

+ *
+ *
You can use the TabBar control to set the active child of a ViewStack container,
+ *  as the following example shows:

+ *
+ *

+ *  <s:TabBar dataProvider="{myViewStack}"/>
+ *
+ *  <mx:ViewStack id="myViewStack"
+ *      borderStyle="solid">
+ *
+ *      <s:NavigatorContent id="search" label="Search">
+ *          <s:Label text="Search Screen"/>
+ *          </s:NavigatorContent>
+ *
+ *      <s:NavigatorContent id="custInfo" label="Customer Info">
+ *          <s:Label text="Customer Info"/>
+ *          </s:NavigatorContent>
+ *
+ *      <s:NavigatorContent id="accountInfo" label="Account Info">
+ *          <s:Label text="Account Info"/>
+ *          </s:NavigatorContent>
+ *      </mx:ViewStack>

+ *
+ *  @mxml
The <s:TabBar> tag inherits all of the tag
+ *  attributes of its superclass and adds the following tag attributes:

+ *
+ *

+ *  <s:TabBar
+ *    Styles
+ *    cornerRadius="4"
+ *  />
+ *

+ *
+ *  @see mx.containers.ViewStack
+ *  @see spark.skins.spark.TabBarSkin
+ *  @see spark.skins.spark.TabBarButtonSkin
+ *  @see spark.components.ButtonBarButton
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -63,6 +103,14 @@
     include "../core/Version.as";

+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
     public function TabBar()
     {
         super();


organize imports

organize imports

--- WeaveAdmin/src/weave/services/Admin.as
+++ WeaveAdmin/src/weave/services/Admin.as
@@ -15,7 +15,6 @@

 package weave.services
 {
-	import flash.display.LoaderInfo;
 	import flash.utils.Dictionary;

 	import mx.controls.Alert;
@@ -23,11 +22,8 @@
 	import mx.utils.UIDUtil;
 	import mx.utils.URLUtil;

-	import weave.api.data.Aggregation;
+	import weave.api.linkBindableProperty;
 	import weave.api.data.ColumnMetadata;
-	import weave.api.data.DataType;
-	import weave.api.data.EntityType;
-	import weave.api.linkBindableProperty;
 	import weave.api.services.beans.Entity;
 	import weave.api.services.beans.EntityHierarchyInfo;
 	import weave.compiler.StandardLib;


added pluck & sort test case

added pluck & sort test case

--- WeaveCore/src/weave/utils/AsyncSort.as
+++ WeaveCore/src/weave/utils/AsyncSort.as
@@ -388,6 +388,20 @@

 				start = getTimer();
 				_debugCompareCount = 0;
+				var plucked:Array = new Array(_array.length);
+				var i:int = _array.length;
+				while (i--)
+					plucked[i] = _array[i]['value'];
+				if (compare === null)
+					plucked.sort(0);
+				else if (compare is Function)
+					plucked.sort(_debugCompareCounter);
+				else
+					plucked.sort(compare);
+				trace('Pluck & sort', plucked.length, 'numbers;', (getTimer() - start) / 1000, 'seconds;', _debugCompareCount ? (_debugCompareCount+' comparisons') : '');
+
+				start = getTimer();
+				_debugCompareCount = 0;
 				sortImmediately(array2, _debugCompareCounter);
 				//trace('Merge Sort', n, 'numbers;', _immediateSorter.elapsed / 1000, 'seconds;',_debugCompareCount,'comparisons');
 				trace('Merge SortOn', array2.length, 'numbers;', (getTimer() - start) / 1000, 'seconds;', _debugCompareCount ? (_debugCompareCount+' comparisons') : '');


Fixed typo that caused xml session state serialization to fail.

--- WeaveCore/src/weave/core/WeaveXMLEncoder.as
+++ WeaveCore/src/weave/core/WeaveXMLEncoder.as
@@ -88,7 +88,7 @@
 			{
 				var className:String = obj[DynamicState.CLASS_NAME];
 				var objectName:String = obj[DynamicState.OBJECT_NAME];
-				var sessionState:String = obj[DynamicState.SESSION_STATE];
+				var sessionState:Object = obj[DynamicState.SESSION_STATE];

 				if (className == null)
 				{


Revert "added stopPropagation function to EventCallbackCollection"

This reverts commit eec7fe6aa043f6ab507a870b98a1936a1b5a60bc.

--- WeaveJS/src/weavejs/core/EventCallbackCollection.as
+++ WeaveJS/src/weavejs/core/EventCallbackCollection.as
@@ -17,16 +17,14 @@
 {
 	public class EventCallbackCollection/*/<T>/*/ extends CallbackCollection
 	{
-		public function EventCallbackCollection(stopPropagation:/*/(event:T)=>void/*/Function = null)
+		public function EventCallbackCollection()
 		{
 			// specify the preCallback function in super() so data will be set before each callback.
-			super(_setEvent);
-			this._stopPropagation = stopPropagation;
+			super(_setEvent);
 		}

 		// This variable is set before each callback runs
 		private var _event:Object = null;
-		private var _stopPropagation:Function = null;

 		private function _setEvent(event:Object = null):void
 		{
@@ -51,15 +49,6 @@
 			var prevEvent:Object = _event;
 			_runCallbacksImmediately(event);
 			_setEvent(prevEvent);
-		}
-
-		/**
-		 * calls the stopPropagation function which was passed to the constructor.
-		 */
-		public function stopPropagation():void
-		{
-			if (_stopPropagation != null)
-				_stopPropagation(event);
 		}
 	}
 }


SICP exercises

SICP exercises

--- test/stutter/SICPTest.as
+++ test/stutter/SICPTest.as
@@ -196,5 +196,25 @@
 			assert('(sum-largest-two 3 4 2)', 25);
 			assert('(sum-largest-two 4 2 3)', 25);
 		}
+
+		[Test(order=12)]
+		public function ch1_ex1_4():void
+		{
+			eval(<![CDATA[
+
+				(label a-plus-abs-b (quote (lambda (a b)
+  					((if (> b 0) (quote +) (quote -)) a b))))
+
+				]]>.toString());
+
+			assert('(a-plus-abs-b 1 2)', 3);
+			assert('(a-plus-abs-b 1 -2)', 3);
+		}
+
+		[Test(order=13)]
+		public function ch1_ex1_5():void
+		{
+
+		}
 	}
 }


Removed some comments from MTime. It now matches the JS and PHP versions.

--- src/util/MTime.as
+++ src/util/MTime.as
@@ -8,21 +8,10 @@

 		public static function sec2hms(sec:int):String
 		{
-			// start with a blank string
 			var hms:String = '';
-
-			// do the hours first: there are 3600 seconds in an hour, so if we divide
-			// the total number of seconds by 3600 and throw away the remainder, we're
-			// left with the number of hours in those seconds
+
 			var hours:int = int(sec / 3600);
-
-			// dividing the total seconds by 60 will give us the number of minutes
-			// in total, but we're interested in *minutes past the hour* and to get
-			// this, we have to divide by 60 again and then use the remainder
 			var minutes:int = int(sec / 60) % 60;
-
-			// seconds past the minute are found by dividing the total number of seconds
-			// by 60 and using the remainder
 			var seconds:int = int(sec % 60);

 			//Padding


Added TODO for entity-based change triggers.

--- src/engine/tetragon/systems/racetrack/RacetrackSystem.as
+++ src/engine/tetragon/systems/racetrack/RacetrackSystem.as
@@ -1293,6 +1293,11 @@
 					break;
 				case RTTriggerActions.CHANGE_OBJECT_STATE:
 					var targetObjectID:String = trigger.arguments[0];
+					if (targetObjectID == "this")
+					{
+						// TODO Add support for entity state changes!
+						return;
+					}
 					var targetObject:RTObject = _racetrack.objects[targetObjectID];
 					var targetStateID:String = trigger.arguments[1];
 					duration = trigger.arguments[2];


JSON fixes.

JSON fixes.

--- runtime/src/main/as/flump/xfl/XflKeyframe.as
+++ runtime/src/main/as/flump/xfl/XflKeyframe.as
@@ -149,16 +149,16 @@
         if (symbol != null) {
             json.ref = symbol;
             if (x != 0 || y != 0) {
-                json.loc = x + "," + y;
+                json.loc = [x, y];
             }
             if (scaleX != 1 || scaleY != 1) {
-                json.scale = scaleX + "," + scaleY;
+                json.scale = [scaleX, scaleY];
             }
             if (rotation != 0) {
                 json.rotation = rotation;
             }
             if (pivotX != 0 || pivotY != 0) {
-                json.pivot = pivotX + "," + pivotY;
+                json.pivot = [pivotX, pivotY];
             }
             if (alpha != 1) {
                 json.alpha = alpha;


Small fix for getRect

Small fix for getRect

--- src/flash/display/DisplayObjectContainer.as
+++ src/flash/display/DisplayObjectContainer.as
@@ -191,8 +191,7 @@
 				if (rect == null) {
 					rect = rect1;
 				}else if(rect1){
-					rect.inflate(rect1.x, rect1.y);
-					rect.inflate(rect1.right, rect1.bottom);
+					rect.union(rect1);
 				}
 			}
 			return rect;


renamed VertexStream.(un)lockData to VertexStream.(un)lock and made sure signals are executed only when relevant

--- src/aerys/minko/type/stream/VertexStream.as
+++ src/aerys/minko/type/stream/VertexStream.as
@@ -28,7 +28,7 @@
 		private var _maximum		: Vector.<Number>			= null;
 		private var _minimum		: Vector.<Number>			= null;

-		private var _dataLocked		: Boolean					= false;
+		private var _locked			: Boolean					= false;

 		private var _changed		: Signal					= new Signal('VertexStream.changed');
 		private var _boundsChanged	: Signal					= new Signal('VertexStream.boundsChanged');
@@ -62,6 +62,11 @@
 		{
 			_data = value;
 			_changed.execute(this, null);
+		}
+
+		public function get locked() : Boolean
+		{
+			return _locked;
 		}

 		public function get changed() : Signal
@@ -197,24 +202,39 @@
 				minMaxChanged = true;
 			}

-			_changed.execute(this, null);
-			_boundsChanged.execute(this);
-		}
-
-		public function lockData(): Vector.<Number> {
-			if (_dataLocked)
-				throw new Error("Data lock is already active");
+			if (_locked)
+			{
+				_invalidMinMax = minMaxChanged;
+			}
+			else
+			{
+				_changed.execute(this, null);
+				if (minMaxChanged)
+					_boundsChanged.execute(this);
+			}
+		}
+
+		public function lock() : Vector.<Number>
+		{
+			if (_locked)
+				throw new Error("The stream is already locked.");
 			if (_localDispose)
-				throw new Error("Can not lock stream data which is marked for disposal");
+				throw new Error("Cannot lock stream data which is already disposed.");
+
 			checkWriteUsage(this);
-			_dataLocked = true;
+
+			_locked = true;
+			_invalidMinMax = false;
+
 			return _data;
 		}

-		public function unlockData(): void {
-			if (!_dataLocked)
+		public function unlock() : void
+		{
+			if (!_locked)
 				throw new Error("Data is not locked");
-			_dataLocked = false;
+
+			_locked = false;
 			_invalidMinMax = true;
 			_changed.execute(this, null);
 		}
@@ -223,21 +243,46 @@
 		{
 			checkWriteUsage(this);

-			var dataLength : int = data.length;
-
-			if (dataLength % _format.dwordsPerVertex)
+			var numValues 		: int 		= data.length;
+			var minMaxChanged	: Boolean	= false;
+
+			if (numValues % _format.dwordsPerVertex)
 				throw new Error("Invalid data length.");

-			for (var i : int = 0; i < dataLength; i++)
-				_data.push(data[i]);
-
-			_invalidMinMax = true;
-			_changed.execute(this, null);
+			for (var i : int = 0; i < numValues; i++)
+			{
+				var value 	: Number	= data[i];
+				var ii		: uint		= i % _format.dwordsPerVertex;
+
+				if (value < _minimum[ii])
+				{
+					_minimum[i] = value;
+					minMaxChanged = true;
+				}
+				else if (value > _maximum[ii])
+				{
+					_maximum[i] = value;
+					minMaxChanged = true;
+				}
+
+				_data.push(value);
+			}
+
+			if (_locked)
+			{
+				_invalidMinMax = minMaxChanged;
+			}
+			else
+			{
+				_changed.execute(this, null);
+				if (minMaxChanged)
+					_boundsChanged.execute(this);
+			}
 		}

 		public function disposeLocalData(waitForUpload : Boolean = true) : void
 		{
-			if (_dataLocked)
+			if (_locked)
 				throw new Error("Stream data can not be disposed since it's locked for update");
 			if (waitForUpload)
 				_localDispose = true;
@@ -360,7 +405,7 @@
 					+ "is not set to StreamUsage.WRITE."
 				);
 			}
-			if (stream._dataLocked)
+			if (stream._locked)
 				throw new Error(
 					"Unable to write in vertex stream: stream data "
 					+ "is locked for bulk update"


update Fake class signature to last change to Environment class

--- tests/GAv4/com/google/analytics/utils/FakeEnvironment.as
+++ tests/GAv4/com/google/analytics/utils/FakeEnvironment.as
@@ -22,7 +22,7 @@
         private var _screenWidth:Number;
         private var _screenHeight:Number;
         private var _screenColorDepth:String;
-        private var _userAgent:UserAgent;
+        private var _userAgent:String;
         private var _isInHTML:Boolean;
         private var _isAIR:Boolean;

@@ -35,7 +35,7 @@
                                        playerType:String = "", platform:String = "",
                                        protocol:Protocols = null, screenWidth:Number = NaN,
                                        screenHeight:Number = NaN, screenColorDepth:String = "",
-                                       userAgent:UserAgent = null,
+                                       userAgent:String = null,
                                        isInHTML:Boolean = false,
                                        isAIR:Boolean = false )
         {
@@ -169,12 +169,12 @@
             return _screenColorDepth;
         }

-        public override function get userAgent():UserAgent
+        public override function get userAgent():String
         {
             return _userAgent;
         }

-        public override function set userAgent( custom:UserAgent ):void
+        public override function set userAgent( custom:String ):void
         {
             _userAgent = custom;
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 88
Author:   open-source-svn-admin@adobe.com
Date:     2008-01-03T22:47:56.499469Z

Log Message:
-----------
Perforce Change 191925 by proberts@proberts-laptop-flex on 2008/01/03 16:47:12 Severity: ignore Details: doc additions/clean up for FlexNativeMenu. Also FLEXDOCS-320 (update documentation for FlexNativeMenuEvent.MENU_SHOW to explain that the index, label, and item properties are null) Affected files ...

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/rpc/src/mx/messaging/Consumer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/NoChannelAvailableError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemHistoryButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/DirectHTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemTree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/config/ServerConfig.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/mac/AIR Integration Kit.tbz2</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/rpc/src/mx/messaging/channels/HTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/MessagingError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/InvalidChannelError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/AbstractProducer.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/config/ConfigMap.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/airframework/src/mx/controls/FileSystemComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/SecureStreamingAMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/StreamingHTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/win/AIR Integration Kit.zip</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/AbstractConsumer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/SecureStreamingHTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXContext.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/AMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeMenuEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/PollingChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/lib/flex-messaging-common.jar</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/NetConnectionChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/mxml/RemoteObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/SecureAMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.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/rpc/src/mx/messaging/channels/StreamingAMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/Grammar.jj</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ConsumerMessageDispatcher.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/SecureHTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/InvalidDestinationError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXResult.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/AbstractMessageStore.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/Channel.as
+++ frameworks/projects/rpc/src/mx/messaging/Channel.as
@@ -1,21 +1,14 @@
-/*************************************************************************
- *
- * ADOBE CONFIDENTIAL
- * __________________
- *
- *  [2002] - [2007] Adobe Systems Incorporated
- *  All Rights Reserved.
- *
- * NOTICE:  All information contained herein is, and remains
- * the property of Adobe Systems Incorporated and its suppliers,
- * if any.  The intellectual and technical concepts contained
- * herein are proprietary to Adobe Systems Incorporated
- * and its suppliers and may be covered by U.S. and Foreign Patents,
- * patents in process, and are protected by trade secret or copyright law.
- * Dissemination of this information or reproduction of this material
- * is strictly forbidden unless prior written permission is obtained
- * from Adobe Systems Incorporated.
- */
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.messaging
 {


Add meshFunction that enable mesh modifications while loading it.

--- src/aerys/minko/type/parser/ParserOptions.as
+++ src/aerys/minko/type/parser/ParserOptions.as
@@ -6,7 +6,7 @@
 		private var _textureFilenameFunction	: Function	= null;
 		private var _textureFunction			: Function	= null;

-//		private var _sceneFunction				: Function	= null;
+		private var _meshFunction				: Function	= null;

 		private var _loadMeshes					: Boolean	= true;
 		private var _mergeMeshes				: Boolean	= false;
@@ -16,9 +16,9 @@
 		public function get loadTextures()				: Boolean	{ return _loadTextures; }
 		public function get textureFilenameFunction()	: Function	{ return _textureFilenameFunction; }
 		public function get textureFunction()			: Function	{ return _textureFunction; }
-//		public function get sceneFunction()				: Function	{ return _sceneFunction; }

 		public function get loadMeshes()				: Boolean	{ return _loadMeshes; }
+		public function get meshFunction()				: Function	{ return _meshFunction; }
 		public function get mergeMeshes()				: Boolean	{ return _mergeMeshes; }

 		public function get loadSkins()					: Boolean	{ return _loadSkins; }
@@ -38,10 +38,10 @@
 			_textureFunction = value;
 		}

-		/*public function set sceneFunction(value : Function) : void
+		public function set meshFunction(value : Function) : void
 		{
-			_sceneFunction = value;
-		}*/
+			_meshFunction = value;
+		}

 		public function set loadMeshes(value : Boolean) : void
 		{


fixed error message

fixed error message

--- WeaveData/src/weave/data/DataSources/GeoJSONDataSource.as
+++ WeaveData/src/weave/data/DataSources/GeoJSONDataSource.as
@@ -150,7 +150,7 @@

 				// make sure it's valid GeoJSON
 				if (!GeoJSON.isGeoJSONObject(obj))
-					throw new Error("Invalid GeoJSON file: " + url);
+					throw new Error("Invalid GeoJSON file: " + url.value);

 				// parse data
 				jsonData = new GeoJSONData(obj, getKeyType(), keyProperty.value);
@@ -530,4 +530,4 @@
 		}
 		return result;
 	}
-}+}


That last commit was for http://www.igniterealtime.org/issues/browse/XIFF-26, and was reviewed by Armando

git-svn-id: c197267f952b24206666de142881703007ca05d5@10162 b35dd754-fafc-0310-a699-88a17e54d16e

--- src/org/jivesoftware/xiff/conference/Room.as
+++ src/org/jivesoftware/xiff/conference/Room.as
@@ -1073,7 +1073,6 @@

 				if (!isActive && aPresence.type != Presence.UNAVAILABLE_TYPE)
 				{
-					//trace("Room: becoming active: " + presence.getNode());
 					active = true;
 					e = new RoomEvent(RoomEvent.ROOM_JOIN);
 					dispatchEvent(e);


Transferred from the Adobe Open Source Subversion Repository

Revision: 12077
Author:   pfarland@adobe.com
Date:     2009-11-21T02:16:32.434366Z

Log Message:
-----------
Although Spark RichText does not support link formats, modifying compiled FXG to not generate ActionScript code that will cause compile time exceptions.

Removing references to Flex Builder 3 in RPC.

QE notes: N/A
Doc notes: N/A
Bugs:
SDK-24305 - [CTFXG 2480289] Link format property nodes cause errors on RichText in FXG 2.0
SDK-24322 - A couple references to Flex Builder 3 in Flex 4 LangRef (and code comments)
Reviewer: Deepa
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexFXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as</path>

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

--- frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as
+++ frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as
@@ -2159,7 +2159,7 @@
                             // for simple property values on strongly typed values

                             // HACK for SDK-14800:
-                            // Flex Builder 3 may generate a strongly typed class for simpleContent extensions
+                            // Flash Builder may generate a strongly typed class for simpleContent extensions
                             // or restrictions, which uses the convention of "_" + typeName for the simpleContent
                             // value.
                             var localName:String = getUnqualifiedClassName(simpleContent);
@@ -2171,7 +2171,7 @@
                             }

                             // HACK for SDK-22327:
-                            // Flex Builder 3 may alternatively generate a property
+                            // Flash Builder may alternatively generate a property
                             // name with camel case for a simpleType enumeration
                             simplePropName = localName.charAt(0).toLowerCase() + localName.substr(1);
                             if (Object(simpleContent).hasOwnProperty(simplePropName))


fix missing calls to IDataBindingsConsumer.setProperty() when a binding is added/removed

--- src/aerys/minko/type/binding/DataBindings.as
+++ src/aerys/minko/type/binding/DataBindings.as
@@ -100,6 +100,10 @@

 			providerBindingNames.push(bindingName);
 			_bindingNames.push(bindingName);
+
+            var numConsumers : uint = _consumers.length;
+            for (var consumerId : uint = 0; consumerId < numConsumers; ++consumerId)
+                _consumers[consumerId].setProperty(bindingName, value);

 			if (_bindingNameToChangedSignal[bindingName])
 				_bindingNameToChangedSignal[bindingName].execute(this, bindingName, null, value);
@@ -151,6 +155,10 @@

 			_bindingNames[_bindingNames.indexOf(bindingName)] = _bindingNames[numBindings];
 			_bindingNames.length = numBindings;
+
+            var numConsumers : uint = _consumers.length;
+            for (var consumerId : uint = 0; consumerId < numConsumers; ++consumerId)
+                _consumers[consumerId].setProperty(bindingName, null);

 			if (changedSignal != null)
 				changedSignal.execute(this, bindingName, value, null);


FreeRunner now uses an Iterator instead of for each, in preparation for asynchronous methods.

--- as3/src/asunit/framework/FreeRunner.as
+++ as3/src/asunit/framework/FreeRunner.as
@@ -3,6 +3,8 @@
 	import flash.events.EventDispatcher;
 	import flash.utils.describeType;
 	import asunit.errors.AssertionFailedError;
+	import asunit.util.ArrayIterator;
+	import asunit.util.Iterator;

 	public class FreeRunner extends EventDispatcher {

@@ -33,9 +35,10 @@

 		public function runTest(test:Object):void {
 			var testResult:FreeTestResult = new FreeTestResult();
-			var methodNames:Array = getTestMethods(test);
+            var methodsList:Iterator = new ArrayIterator(getTestMethods(test));

-			for each (var methodName:String in methodNames) {
+            while (methodsList.hasNext()) {
+				var methodName:String = String(methodsList.next());
 				test.setUp();
 				try {
 					test[methodName]();


Fixed missing array length check in ArrayInterpolator
Fixed number formatting bugs in Strings, added new test
Added gray method to Colors
Added first and last properties to OperatorLists

git-svn-id: 6aa7ccb0a2048310a30f08a72aaff4ca39d980ed@172 91848ab2-c4ae-4e4f-8e6a-6a52ea0dccc3


Transferred from the Adobe Open Source Subversion Repository

Revision: 5340
Author:   gosmith@adobe.com
Date:     2009-03-17T01:56:28.362863Z

Log Message:
-----------
Measurement is now consistent with rendering for Halo components using TLF.

If a Halo component is using a UITLFTextField to render its text (because its textFieldClass style is the class mx.core.UITLFTextField), it now measures itself using an offscreen TLFTextField. Previously it was rendering with a UITLFTextField but measuring with a TextField, which was inconsistent.

This required adding a new useTLF:Boolean property to UITextFormat so that the format knows whether it is for a TextField or a TLFTextField.

There is one offscreen TLFTextField per module factory, managed by TextFieldFactory, just like for offscreen TextFields. I've added a new method, createTLFTextField(), to ITextFieldFactory. Its return type is Object rather than TLFTextField to avoid linking in TLFTextField, and therefore much of TLF, into Halo apps unless it is being used by setting textFieldClass.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Deepa

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ITextFieldFactory.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextFormat.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/TextFieldFactory.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/framework/src/mx/core/UITextFormat.as
+++ frameworks/projects/framework/src/mx/core/UITextFormat.as
@@ -394,6 +394,23 @@
      */
     public var thickness:Number;

+    //----------------------------------
+    //  useTLF
+    //----------------------------------
+
+    /**
+     *  Determines how the measureText()
+     *  and measureHTMLText() methods do text measurement.
+     *
+     *
If true, they use an offscreen instance
+     *  of the TLFTextField class in the Text Layout Framework.
+     *  If false, they use an offscreen instance
+     *  of the TextField class in the Flash Player.
+     *
+     *  @default false
+     */
+    public var useTLF:Boolean = false;
+
     //--------------------------------------------------------------------------
     //
     //  Methods
@@ -477,8 +494,10 @@
             fontModuleFactory = systemManager;
         }

-        var measurementTextField:TextField = null;
-        measurementTextField = TextField(textFieldFactory.createTextField(fontModuleFactory));
+        var measurementTextField:Object /* either TextField or TLFTextField */ =
+        	useTLF ?
+        	textFieldFactory.createTLFTextField(fontModuleFactory) :
+        	textFieldFactory.createTextField(fontModuleFactory);

         // Clear any old text from the TextField.
         // Otherwise, new text will get the old TextFormat.


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/framework/src/mx/events/StyleEvent.as
+++ frameworks/projects/framework/src/mx/events/StyleEvent.as
@@ -20,6 +20,11 @@
  *  class when a style SWF is being downloaded.
  *
  *  @see mx.styles.StyleManager
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class StyleEvent extends ProgressEvent
 {
@@ -53,6 +58,11 @@
      *

      *
      *  @eventType styleComplete
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public static const COMPLETE:String = "complete";

@@ -80,6 +90,11 @@
      *

      *
      *  @eventType styleError
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public static const ERROR:String = "error";

@@ -107,6 +122,11 @@
      *

      *
      *  @eventType styleProgress
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public static const PROGRESS:String = "progress";

@@ -141,6 +161,11 @@
 	 *  when type is StyleEvent.ERROR.
      *
      *  @tiptext Constructor for StyleEvent objects.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function StyleEvent(type:String, bubbles:Boolean = false,
                                cancelable:Boolean = false,
@@ -165,6 +190,11 @@
     /**
      *  The error message if the type is ERROR;
 	 *  otherwise, it is null.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public var errorText:String;


Transferred from the Adobe Open Source Subversion Repository

Revision: 19722
Author:   egeorgie@adobe.com
Date:     2011-01-12T00:53:24.336848Z

Log Message:
-----------
Fix popups/tooltips and scaling bugs:
Slider tooltip renders far above under 2.0 scaling - http://bugs.adobe.com/jira/browse/SDK-28833
Mobile HSliderSkin dataTip sometimes stops following the thumb all the way to the right edge - http://bugs.adobe.com/jira/browse/SDK-28762
When the app is scaled, DropDownList shows the list at wrong place - http://bugs.adobe.com/jira/browse/SDK-28818

In this change:
- update popup/tooltip positioning code to work with scaling.

QE notes:  make another test pass on tooltips/pop-ups
Doc notes:
Bugs: SDK-28833, SDK-28762, SDK-28818
Reviewer: Alex
Tests run: full mustella cyclone
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/treeClasses/TreeItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/VSlider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ISystemManager.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/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/utils/BitmapUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/DataGridEditor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/HSlider.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/PopUpUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/MatrixUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/mx/controls/dataGridClasses/FTEDataGridItemRenderer.as</path>

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

--- frameworks/projects/spark/src/spark/components/HSlider.as
+++ frameworks/projects/spark/src/spark/components/HSlider.as
@@ -15,11 +15,13 @@
 import flash.display.DisplayObject;
 import flash.geom.Point;
 import flash.geom.Rectangle;
+import flash.sampler.NewObjectSample;

 import mx.core.IDataRenderer;
 import mx.core.IVisualElement;
 import mx.core.LayoutDirection;
 import mx.core.mx_internal;
+import mx.utils.PopUpUtil;

 import spark.components.supportClasses.SliderBase;

@@ -163,32 +165,28 @@

         if (tipAsDisplayObject && thumb)
         {
+            // If this component's coordinate system is RTL (x increases to the right), then
+            // getLayoutBoundsX() returns the right edge, not the left.
+            // We are working in thumb.parent coordinates and we assume that there's no scale factor
+            // between the tooltip and the thumb.parent.
             const tipWidth:Number = tipAsDisplayObject.width;
             var relX:Number = thumb.getLayoutBoundsX() - (tipWidth - thumb.getLayoutBoundsWidth()) / 2;
-
-            // If this component's coordinate system is RTL (x increases to the right), then
-            // getLayoutBoundsX() returns the right edge, not the left.
             if (layoutDirection == LayoutDirection.RTL)
                 relX += tipAsDisplayObject.width;

-            var o:Point = new Point(relX, initialPosition.y);
-            var r:Point = thumb.parent.localToGlobal(o);
-
-            // Get the screen bounds
-            var screenBounds:Rectangle = systemManager.getVisibleApplicationRect(null, true);
             // Get the tips bounds. We only care about the dimensions.
             var tipBounds:Rectangle = tipAsDisplayObject.getBounds(tipAsDisplayObject.parent);
-
-                // Make sure the tip doesn't exceed the bounds of the screen
-                r.x = Math.floor( Math.max(screenBounds.left,
-                                    Math.min(screenBounds.right - tipBounds.width, r.x)));
-                r.y = Math.floor( Math.max(screenBounds.top,
-                                    Math.min(screenBounds.bottom - tipBounds.height, r.y)));
-
-            r = tipAsDisplayObject.parent.globalToLocal(r);
-
-            tipAsDisplayObject.x = r.x;
-            tipAsDisplayObject.y = r.y;
+
+            // Ensure that we don't overlap the screen
+            var pt:Point = PopUpUtil.positionOverComponent(thumb.parent,
+                                                           systemManager,
+                                                           tipBounds.width,
+                                                           tipBounds.height,
+                                                           NaN,
+                                                           null,
+                                                           new Point(relX, initialPosition.y));
+            tipAsDisplayObject.x = Math.floor(pt.x);
+            tipAsDisplayObject.y = Math.floor(pt.y);
         }
     }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 6464
Author:   hmuller@adobe.com
Date:     2009-05-01T19:25:47.821633Z

Log Message:
-----------
Fixed LayoutBase::getScrollPositionDeltaToElement() for useVirtualLayout=true.  Added LayoutBase::getElementBounds() and added a "get" prefix to the four existing LayoutBase::elementBoundsBelowScrollRect() per the PARB.

QE Notes: The four protected LayoutBase method renames shouldn't break any tests ...
Doc Notes:
Bugs: sdk-20891
Reviewer: Evtim

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalLayout.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/TileLayout.as
+++ frameworks/projects/spark/src/spark/layouts/TileLayout.as
@@ -675,6 +675,7 @@
             return;

         _orientation = value;
+        _tileWidthCached = _tileHeightCached = NaN;
         invalidateTargetSizeAndDisplayList();
     }

@@ -1542,7 +1543,24 @@
     /**
      *  @private
      */
-    override protected function elementBoundsLeftOfScrollRect(scrollRect:Rectangle):Rectangle
+    override protected function getElementBounds(index:int):Rectangle
+    {
+        if (!useVirtualLayout)
+            return super.getElementBounds(index);
+
+        var g:GroupBase = GroupBase(target);
+        if (!g || (index < 0) || (index >= g.numElements))
+            return null;
+
+        var col:int = index % _columnCount;
+        var row:int = index / Math.max(1, _columnCount);
+        return new Rectangle(leftEdge(col), topEdge(row), _columnWidth, _rowHeight);
+    }
+
+    /**
+     *  @private
+     */
+    override protected function getElementBoundsLeftOfScrollRect(scrollRect:Rectangle):Rectangle
     {
         var bounds:Rectangle = new Rectangle();
         // Find the column that spans or is to the left of the scrollRect left edge.
@@ -1555,7 +1573,7 @@
     /**
      *  @private
      */
-    override protected function elementBoundsRightOfScrollRect(scrollRect:Rectangle):Rectangle
+    override protected function getElementBoundsRightOfScrollRect(scrollRect:Rectangle):Rectangle
     {
         var bounds:Rectangle = new Rectangle();
         // Find the column that spans or is to the right of the scrollRect right edge.
@@ -1568,7 +1586,7 @@
     /**
      *  @private
      */
-    override protected function elementBoundsAboveScrollRect(scrollRect:Rectangle):Rectangle
+    override protected function getElementBoundsAboveScrollRect(scrollRect:Rectangle):Rectangle
     {
         var bounds:Rectangle = new Rectangle();
         // Find the row that spans or is above the scrollRect top edge
@@ -1581,7 +1599,7 @@
     /**
      *  @private
      */
-    override protected function elementBoundsBelowScrollRect(scrollRect:Rectangle):Rectangle
+    override protected function getElementBoundsBelowScrollRect(scrollRect:Rectangle):Rectangle
     {
         var bounds:Rectangle = new Rectangle();
         // Find the row that spans or is below the scrollRect bottom edge


Transferred from the Adobe Open Source Subversion Repository

Revision: 11675
Author:   hmuller@adobe.com
Date:     2009-11-12T00:25:39.300334Z

Log Message:
-----------
Added minValue,maxValue,etc Style/Inspectable metadata tags for tools.

QE notes:
Doc notes:
Bugs: sdk-24100
Reviewer: Glenn
Tests run:
Is noteworthy for integration: yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/styles/metadata/BasicInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Fade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AddAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/GradientStroke.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/VerticalLayout.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/spark/src/spark/primitives/VideoElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/SolidColorStroke.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/Rect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/styles/metadata/BasicNonInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/SolidColor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/GradientEntry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Keyframe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/styles/metadata/AdvancedInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Range.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/TileLayout.as
+++ frameworks/projects/spark/src/spark/layouts/TileLayout.as
@@ -233,7 +233,7 @@
      */
     private var _requestedColumnCount:int = -1;

-    [Inspectable(category="General")]
+    [Inspectable(category="General", minValue="-1")]

     /**
      *  Number of columns to be displayed.
@@ -313,7 +313,7 @@
      */
     private var _requestedRowCount:int = -1;

-    [Inspectable(category="General")]
+    [Inspectable(category="General", minValue="-1")]

     /**
      *  Number of rows to be displayed.
@@ -361,7 +361,7 @@
     private var _columnWidth:Number = NaN;

     [Bindable("propertyChange")]
-    [Inspectable(category="General")]
+    [Inspectable(category="General", minValue="0.0")]

     /**
      *  Contain the actual column width.
@@ -408,7 +408,7 @@
     private var _rowHeight:Number = NaN;

     [Bindable("propertyChange")]
-    [Inspectable(category="General")]
+    [Inspectable(category="General", minValue="0.0")]

     /**
      *  The row height.


Transferred from the Adobe Open Source Subversion Repository

Revision: 3243
Author:   rfrishbe@adobe.com
Date:     2008-09-17T16:14:14.399661Z

Log Message:
-----------
DataGroup/Group split work.  DataGroup is for holding data items that may require item rendering. Group only holds visual items now.  The Group APIs stay the same (numItems, addItem, etc...).  DataGroup uses the IList APIs through its dataProvider.  So the equivalent methods are now dataProvider.length, dataProvider, addItem, etc...  This is just the initial split work as there's more to come to get the files up to spec.  We will also have to visit how we deal with graphic elements in DataGroup vs. Group.  For now the implementations are roughly the same.

QE: Yes - tests may break.  please update them.
Doc: Yes
Bugs: -
Reviewer: Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/BasicLayout.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/DataComponent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/DataComponentSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/PanelSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/Flex4Classes.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/events/FlexEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/ItemsComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/gumbo-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Graphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/ListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/DataGroup.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/Selector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/SelectorSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/intf/ILayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/flex4test.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/ComplexPanelSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/primitives/Graphic.as
+++ frameworks/projects/spark/src/spark/primitives/Graphic.as
@@ -161,14 +161,5 @@
 		if (!isNaN(viewHeight))
 			measuredMinHeight = measuredHeight = viewHeight;
 	}
-
-    /**
-     *  @private
-     *  Dispatch a propertyChange event.
-     */
-    private function dispatchPropertyChangeEvent(prop:String, oldValue:*, value:*):void
-    {
-        dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, prop, oldValue, value));
-    }
 }
 }


Emit 'error' event from Flash adapter when a video doesn't load

--- lib/FlashFallback/com/visual/VisualVideo.as
+++ lib/FlashFallback/com/visual/VisualVideo.as
@@ -105,6 +105,7 @@
             matchVideoSize();

             if(!this.attachedEvents) {
+                this.video.addEventListener('mediaError', function():void{callback('error');});
                 this.video.addEventListener('durationChange', function():void{_duration=video.duration;});
                 this.video.addEventListener('bytesLoadedChange', function():void{callback('progress');});
                 this.video.addEventListener('complete', function():void{


Added reference to the context to base TestCase class for Flex/Flash apps.

--- flash/org/windmill/TestCase.as
+++ flash/org/windmill/TestCase.as
@@ -26,6 +26,9 @@
     public var asserts:* = WMAssert;
     public var waits:* = WMWait;
     public var controller:* = ASTest.wrappedControllerMethods;
+    // Reference to either an Application (Flex)
+    // or the Stage (Flash)
+    public var context:* = Windmill.getContext();
     // Get a reference to the Stage in the base class
     // before the tests actually load so tests can all
     // reference it


164 DisplayTreeDumper no longer shows flash.* superclass if base class is also in flash.*

--- raw/src/org/yellcorp/debug/debugutil/DisplayTreeDumper.as
+++ raw/src/org/yellcorp/debug/debugutil/DisplayTreeDumper.as
@@ -25,7 +25,7 @@
     {
         maxDepthMessage = new Template("{index}[[Reached maximum depth of {maxDepth}]]\n");
         propertyMessage = new Template("{indent}{index} name:\"{name}\" " +
-                "class:{class}({nativeClass}) " +
+                "class:{class}{nativeClass} " +
                 "pos:({x}, {y}) " +
                 "scale:({scaleX}, {scaleY}) " +
                 "rect:{rect}\n");
@@ -49,6 +49,7 @@
         var len:int = container.numChildren;
         var current:DisplayObject;
         var numPad:int = len.toString().length;
+        var nativeClass:String;

         var formatValues:Object = {};

@@ -71,7 +72,18 @@
                 formatValues.name = current.name;

                 formatValues['class'] = getQualifiedClassName(current);
-                formatValues.nativeClass = searchTypeChain(current, "flash.");
+
+                nativeClass = searchTypeChain(current, "flash.");
+
+                if (nativeClass.length > 0)
+                {
+                    formatValues.nativeClass = "(" + nativeClass + ")";
+                }
+                else
+                {
+                    formatValues.nativeClass = "";
+                }
+

                 formatValues.x = current.x;
                 formatValues.y = current.y;
@@ -93,7 +105,14 @@

     private static function searchTypeChain(query:Object, prefix:String):String
     {
-        var supers:XMLList = describeType(query).extendsClass.(
+        var type:XML = describeType(query);
+
+        if (StringUtil.startsWith(type.@name, prefix))
+        {
+            return "";
+        }
+
+        var supers:XMLList = type.extendsClass.(
                 StringUtil.startsWith(@type, prefix));

         if (supers.length == 0)


Added display of time limit per gen mem in dmem

--- src/Displays/DMemory.as
+++ src/Displays/DMemory.as
@@ -1,6 +1,7 @@
 package Displays {
 	import org.flixel.*;
 	import Controls.ControlSet;
+	import Testing.Goals.GeneratedGoal;
 	import UI.MenuButton;
 	import Values.FixedValue;
 	import Values.Value;
@@ -65,6 +66,13 @@
 					skip = true;
 				}
 			}
+
+			var timeString:String = "Allowed cycles total: " + U.state.level.goal.timeLimit;
+			if (U.state.level.goal is GeneratedGoal)
+				timeString += " (over " + (U.state.level.goal.timeLimit / (U.state.level.goal as GeneratedGoal).allowedTimePerInstr) + " expected instruction executions)";
+			timeString += ".";
+			var timeText:FlxText = U.BODY_FONT.configureFlxText(new FlxText(bg.x, bg.y + bg.height + 2, bg.width, timeString), 0xffffff, 'center', 0x1);
+			add(timeText);
 		}

 	}


Fixed a big in OverlayManager if the overlay layer was resent

--- src/org/openPyro/managers/OverlayManager.as
+++ src/org/openPyro/managers/OverlayManager.as
@@ -16,10 +16,25 @@
 		protected var _overlayDisplayObject:DisplayObjectContainer

 		/**
-		 * The overlay layer on which the popups are
-		 * rendered
+		 * The overlay layer on which the popups are rendered. If a new layer
+		 * is set as the overlayContainer, the old one is removed from the
+		 * stage, so please set displayobjects for this value to be dedicated
+		 * to just displaying overlays.
 		 */
 		public function set overlayContainer(dp:DisplayObjectContainer):void{
+			/*
+			If there already was an overlay created, remove
+			it and all its children
+			*/
+			if(_overlayDisplayObject){
+				while(_overlayDisplayObject.numChildren > 0){
+					_overlayDisplayObject.removeChildAt(0)
+				}
+				bgSprite = null;
+				if(_overlayDisplayObject.parent){
+					_overlayDisplayObject.parent.removeChild(_overlayDisplayObject);
+				}
+			}
 			_overlayDisplayObject = dp;
 		}

@@ -43,7 +58,9 @@
 			if(!_overlayDisplayObject){
 				throw new Error("No overlay displayObject defined on which to draw")
 			}
+
 			if(modal){
+
 				if(!bgSprite){
 					bgSprite = new Sprite()
 					bgSprite.graphics.beginFill(0x00000, .5)


#FEC-181 #time 30m #comment fix issues after playing bumper entry

--- plugins/wvPlugin/src/WvMediator.as
+++ plugins/wvPlugin/src/WvMediator.as
@@ -61,6 +61,7 @@

 		private var _bufferLength:Number = 0;
 		private var _mediaProxy:MediaProxy;
+		private var _sequenceProxy:SequenceProxy;

 		private var _endOfStreamTimer:Timer;
 		private var _shouldSetFlavors:Boolean = false;
@@ -76,6 +77,7 @@
 		override public function onRegister():void
 		{
 			_mediaProxy = facade.retrieveProxy(MediaProxy.NAME) as MediaProxy;
+			_sequenceProxy = facade.retrieveProxy(SequenceProxy.NAME) as SequenceProxy;
 			super.onRegister();
 		}

@@ -112,7 +114,7 @@

 				case NotificationType.MEDIA_ELEMENT_READY:
 					//get flavor asset ID
-					if (!(facade.retrieveProxy(SequenceProxy.NAME) as SequenceProxy).vo.isInSequence && _mediaProxy.vo.deliveryType==StreamerType.HTTP)
+					if (!_sequenceProxy.vo.isInSequence && _mediaProxy.vo.deliveryType==StreamerType.HTTP)
 					{
 						var flavors:Array = _mediaProxy.vo.kalturaMediaFlavorArray;
 						if (flavors && flavors.length)
@@ -154,7 +156,7 @@

 				case NotificationType.PLAYER_UPDATE_PLAYHEAD:
 					//in case we switch flavors we want to save last position
-					if (_isWv && !(facade.retrieveProxy(SequenceProxy.NAME) as SequenceProxy).vo.isInSequence)
+					if (_isWv && !_sequenceProxy.vo.isInSequence)
 						_lastPlayhead = note.getBody() as Number;
 					break;

@@ -176,7 +178,7 @@
 					break;

 				case NotificationType.PLAYER_PLAYED:
-					if (_isWv && !(facade.retrieveProxy(SequenceProxy.NAME) as SequenceProxy).vo.isInSequence)
+					if (_isWv && !_sequenceProxy.vo.isInSequence)
 					{
 						var playerMediator:KMediaPlayerMediator = facade.retrieveMediator(KMediaPlayerMediator.NAME) as KMediaPlayerMediator;
 						//workaround for wv bug, netstream reports end before actual end
@@ -258,7 +260,8 @@
 							_shouldSetFlavors = false;
 						}
 					}
-					else
+					//bumper entry
+					else if (!_sequenceProxy.vo.isInSequence)
 					{
 						_isWv = false;
 						_mediaProxy.vo.forceDynamicStream = false;
@@ -384,7 +387,7 @@
 							}
 							_mediaProxy.vo.autoSwitchFlavors = true;
 							//save main media in case we have ads
-							(facade.retrieveProxy(SequenceProxy.NAME) as SequenceProxy).saveMainMedia();
+							_sequenceProxy.saveMainMedia();
 							_shouldSetFlavors = false;
 						}


update GeometrySanitizer methods to use ByteArray.readUnsignerShort() to read indices

--- src/aerys/minko/render/geometry/GeometrySanitizer.as
+++ src/aerys/minko/render/geometry/GeometrySanitizer.as
@@ -28,7 +28,7 @@
 			var numVertices		: uint 	= vertexData.bytesAvailable / bytesPerVertex;

 			for (var indexId : uint = 0; indexId < numIndices; ++indexId)
-				if (indexData.readShort() >= numVertices)
+				if (indexData.readUnsignedShort() >= numVertices)
 					break;

 			indexData.position = startPosition;
@@ -74,8 +74,8 @@
 				var partialIndexData	: ByteArray			= new ByteArray();

 				// local variables
-				var oldVertexIds		: Vector.<int>		= new Vector.<uint>(3, true);
-				var newVertexIds		: Vector.<int>		= new Vector.<uint>(3, true);
+				var oldVertexIds		: Vector.<uint>		= new Vector.<uint>(3, true);
+				var newVertexIds		: Vector.<uint>		= new Vector.<uint>(3, true);
 				var newVertexNeeded		: Vector.<Boolean>	= new Vector.<Boolean>(3, true);

 				var usedVerticesDic		: Dictionary		= new Dictionary();	// this dictionary maps old and new indices
@@ -104,7 +104,7 @@
 					for (localVertexId = 0; localVertexId < 3; ++localVertexId)
 					{
 						inIndices.position = (usedIndicesCount + localVertexId) << 2;
-						oldVertexIds[localVertexId]	= inIndices.readShort();
+						oldVertexIds[localVertexId]	= inIndices.readUnsignedShort();

 						var tmp : Object = usedVerticesDic[oldVertexIds[localVertexId]];

@@ -221,7 +221,7 @@

 			for (var indexId : int = 0; indexId < numIndices; ++indexId)
 			{
-				index = indexData.readShort();
+				index = indexData.readUnsignedShort();
 				indexData.position -= 2;
 				indexData.writeShort(oldVertexIdToNewVertexId[index]);
 			}
@@ -253,7 +253,7 @@
 			// flag unused vertices by scanning the index buffer
 			var oldVertexIdToUsage : Vector.<Boolean> = new Vector.<Boolean>(oldNumVertices, true);
 			for (indexId = 0; indexId < numIndices; ++indexId)
-				oldVertexIdToUsage[indexData.readShort()] = true;
+				oldVertexIdToUsage[indexData.readUnsignedShort()] = true;

 			// scan the flags, fix vertex buffer, and store old to new vertex id mapping
 			var oldVertexIdToNewVertexId : Vector.<uint> = new Vector.<uint>(oldNumVertices, true);
@@ -280,7 +280,7 @@
 			indexData.position = indexDataStartPosition;
 			for (indexId = 0; indexId < numIndices; ++indexId)
 			{
-				var index : uint = indexData.readShort();
+				var index : uint = indexData.readUnsignedShort();

 				indexData.position -= 4;
 				indexData.writeShort(oldVertexIdToNewVertexId[index]);


fixing documentation

fixing documentation

Change-Id: I27c515c6524af24188c5686daa54f52a7f177cfd

--- WeaveData/src/weave/data/hierarchy/ColumnTreeNode.as
+++ WeaveData/src/weave/data/hierarchy/ColumnTreeNode.as
@@ -28,7 +28,7 @@

 	/**
 	 * The following properties are used for equality comparison:

-	 * source, data, columnMetadata, idFields

+	 * source, data, idFields, columnMetadata

 	 * The following properties are used by ColumnTreeNode but not for equality comparison:

 	 * label, children, isBranch, hasChildBranches

 	 */
@@ -36,7 +36,7 @@
 	{
 		/**
 		 * The following properties are used for equality comparison:

-		 * source, data, columnMetadata, idFields

+		 * source, data, idFields, columnMetadata

 		 * The following properties are used by ColumnTreeNode but not for equality comparison:

 		 * label, children, isBranch, hasChildBranches

 		 */
@@ -83,7 +83,7 @@

 		/**
 		 * Set this to true if this node is a branch, or false if it is not.
-		 * Otherwise, hasChildBranches() will check getChildren() and isBranch() on each child.
+		 * Otherwise, hasChildBranches() will check isBranch() on each child returned by getChildren().
 		 */
 		public var _hasChildBranches:* = null;

@@ -126,7 +126,7 @@
 		}

 		/**
-		 * Compares source, isColumn, data, and columnMetadata.
+		 * Compares source, data, idFields, and columnMetadata.
 		 * @inheritDoc
 		 */
 		public function equals(other:IWeaveTreeNode):Boolean


fix null pointer error

fix null pointer error

--- WeaveUI/src/weave/ui/CustomTree.as
+++ WeaveUI/src/weave/ui/CustomTree.as
@@ -183,11 +183,11 @@
 			var rda:Boolean = runningDataEffect;

 			runningDataEffect = true;
-			actualCollection = ac || collection; // avoids null pointer error
+			actualCollection = ac || collection;
 			actualIterator = ai || iterator;

 			// This is not a perfect scrolling solution.  It looks ok when there is a partial row showing at the bottom.
-			var mvsp:int = Math.max(0, collection.length - listItems.length + 1);
+			var mvsp:int = actualCollection ? Math.max(0, actualCollection.length - listItems.length + 1) : 0;
 			if (verticalScrollPosition > mvsp)
 				verticalScrollPosition = mvsp;


Change default language to ENGLISH

Change default language to ENGLISH

--- Arguments/src/classes/Language.as
+++ Arguments/src/classes/Language.as
@@ -39,7 +39,7 @@
 		public static const GERMAN:String = "GER";
 		public static const ENGLISH:String = "EN-US";
 		public static const RUSSIAN:String = "RUS";
-		public static var language:String = GERMAN;
+		public static var language:String = ENGLISH;

 		public static var xml:XML;
 		private static var ready:Boolean=false;


Change the way custom easing is detected.

--- exporter/src/main/as/flump/xfl/XflKeyframe.as
+++ exporter/src/main/as/flump/xfl/XflKeyframe.as
@@ -40,7 +40,7 @@

         if (symbolXml == null) return kf; // Purely labelled frame

-        if (XmlUtil.hasChild(xml, "tweens")) {
+        if (XmlUtil.getBooleanAttr(xml, "hasCustomEase", false)) {
             lib.addError(kf, ParseError.WARN, "Custom easing is not supported");
         }


Empty frames in flipbooks cause flump to crash

I'm just sticking in an error about this right now. We really should
support empty flipbook frames, but I don't have time to implement at the
moment.

--- exporter/src/main/as/flump/xfl/XflKeyframe.as
+++ exporter/src/main/as/flump/xfl/XflKeyframe.as
@@ -24,7 +24,13 @@
         kf.label = XmlUtil.getStringAttr(xml, "name", null);
         kf.ease = XmlUtil.getNumberAttr(xml, "acceleration", 0) / 100;

-        if (flipbook) return kf;
+        if (flipbook) {
+            if (xml.elements.elements().length() == 0) {
+                lib.addError(location, ParseError.CRIT, "Empty frames are not allowed in flipbooks");
+            }
+            return kf;
+        }
+
         var symbolXml :XML;
         for each (var frameEl :XML in xml.elements.elements()) {
             if (frameEl.name().localName == "DOMSymbolInstance") {


Updated FastMath to handle Alchemy memory.

--- as3/Apparat.Library.AS3/src/apparat/math/FastMath.as
+++ as3/Apparat.Library.AS3/src/apparat/math/FastMath.as
@@ -175,6 +175,64 @@
   		}

 		/**
+		 * Computes and returns the square root of the specified number.
+		 *
+		 * The address parameter should be a pointer to a char[4] in
+		 * the Alchemy memory buffer.
+		 *
+		 * @param value A number or expression greater than or equal to 0.
+		 * @param address The address in the Alchemy memory buffer.
+		 * @return If the parameter val is greater than or equal to zero, a number; otherwise NaN (not a number).
+		 * @throws TypeError If no ApplicationDomain.domainMemory has been set.
+		 */
+		public static function sqrt2(value: Number, address: int): Number {
+			if(value == 0.0) {
+				return 0.0
+			} else if(value < 0.0) {
+				return Number.NaN
+			}
+
+			var originalValue: Number = value
+			var halfValue: Number = value * 0.5
+
+			Memory.writeFloat(value, address)
+			var i: int = 0x5f3759df - (Memory.readInt(address) >> 1)
+			Memory.writeInt(i, address)
+			value = Memory.readFloat(address)
+
+			return originalValue * value * (1.5 - halfValue * value * value)
+		}
+
+		/**
+		 * Computes and returns the reciprocal of the square root for the specified number.
+		 *
+		 * The address parameter should be a pointer to a char[4] in
+		 * the Alchemy memory buffer.
+		 *
+		 * @param value A number or expression greater than or equal to 0.
+		 * @param address The address in the Alchemy memory buffer.
+		 * @return If the parameter val is greater than or equal to zero, a number; otherwise NaN (not a number).
+		 * @see initMemory
+		 * @throws TypeError If no ApplicationDomain.domainMemory has been set.
+		 */
+		public static function rsqrt(value: Number, address: int): Number {
+			if(value == 0.0) {
+				return 0.0
+			} else if(value < 0.0) {
+				return Number.NaN
+			}
+
+			var halfValue: Number = value * 0.5
+
+			Memory.writeFloat(value, address)
+			var i: int = 0x5f3759df - (Memory.readInt(address) >> 1)
+			Memory.writeInt(i, address)
+			value = Memory.readFloat(address)
+
+			return value * (1.5 - halfValue * value * value)
+  		}
+
+		/**
 		 * Integer cast with respect to its sign.
 		 *
 		 * @param value A number.


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

--- frameworks/projects/rpc/src/mx/rpc/soap/mxml/WebService.as
+++ frameworks/projects/rpc/src/mx/rpc/soap/mxml/WebService.as
@@ -81,6 +81,11 @@
  *
  *  @includeExample examples/WebServiceExample.mxml -noswf
  *
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public dynamic class WebService extends mx.rpc.soap.WebService implements IMXMLSupport, IMXMLObject
 {
@@ -96,6 +101,11 @@
      * @param destination The destination of the WebService, which should
      * match a destination name in the services-config.xml file. If
      * unspecified, the WebService component uses the DefaultHTTP destination.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function WebService(destination:String = null)
     {
@@ -138,6 +148,11 @@
      * This may simplify event handling in the client application, but care should be taken to only use
      * this mode when results or faults for requests may be safely ignored.

      *

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get concurrency():String
     {
@@ -155,6 +170,11 @@
     /**
      * Deprecated, use the appropriate destination instead, or if using a url, use DefaultHTTP or DefaultHTTPS.
      * The deprecated behavior will simply update the destination if the default is being used.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     [Deprecated("Property protocol is deprecated. Please use an appropriate channel from your services configuration file (DefaultHTTP or DefaultHTTPS for instance); when useProxy is false set your URL to use the right protocol")]
     public function set protocol(protocol:String):void
@@ -194,6 +214,11 @@
     /**
     * If true, a busy cursor is displayed while a service is executing. The default
     * value is false.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
     */
     public function get showBusyCursor():Boolean
     {
@@ -279,6 +304,11 @@
      * Operation instead.
      * @param name Name of the Operation.
      * @return Operation that executes for this name.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     override public function getOperation(name:String):AbstractOperation
     {
@@ -301,6 +331,11 @@
      *
      * @param document the MXML document on which this WebService lives
      * @param id the id of this WebService within the document
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function initialized(document:Object, id:String):void
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 18624
Author:   hmuller@adobe.com
Date:     2010-11-16T19:43:24.335484Z

Log Message:
-----------
Added support for requestedMaxRowCount, default=10.  Changed requestedRowCount's default value to -1.

QE notes: Three failing tests have been excluded
Doc notes:
Bugs: SDK-27531
Reviewer: Darrell
Tests run: checkin, mustella
Is noteworthy for integration: yes

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

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

--- frameworks/projects/spark/src/spark/components/DataGrid.as
+++ frameworks/projects/spark/src/spark/components/DataGrid.as
@@ -702,15 +702,16 @@
         itemRenderer: uint(1 << 2),
         requestedRowCount: uint(1 << 3),
         requestedColumnCount: uint(1 << 4),
-        requestedMinRowCount: uint(1 << 5),
-        requestedMinColumnCount: uint(1 << 6),
-        rowHeight: uint(1 << 7),
-        showDataTips: uint(1 << 8),
-        typicalItem: uint(1 << 9),
-        variableRowHeight: uint(1 << 10),
-        dataTipField: uint(1 << 11),
-        dataTipFunction: uint(1 << 12),
-        resizableColumns: uint(1 << 13)
+        requestedMaxRowCount: uint(1 << 5),
+        requestedMinRowCount: uint(1 << 6),
+        requestedMinColumnCount: uint(1 << 7),
+        rowHeight: uint(1 << 8),
+        showDataTips: uint(1 << 9),
+        typicalItem: uint(1 << 10),
+        variableRowHeight: uint(1 << 11),
+        dataTipField: uint(1 << 12),
+        dataTipFunction: uint(1 << 13),
+        resizableColumns: uint(1 << 14)
     };

     /**
@@ -736,9 +737,10 @@
         dataProvider: null,
         itemRenderer: null,
         resizableColumns: true,
-        requestedRowCount: int(10),
+        requestedRowCount: int(-1),
+        requestedMaxRowCount: int(10),
+        requestedMinRowCount: int(-1),
         requestedColumnCount: int(-1),
-        requestedMinRowCount: int(-1),
         requestedMinColumnCount: int(-1),
         rowHeight: NaN,
         showDataTips: false,
@@ -1413,6 +1415,31 @@
     {
         setGridProperty("requestedColumnCount", value);
     }
+
+    //----------------------------------
+    //  requestedMaxRowCount (delegates to grid.requestedMaxRowCount)
+    //----------------------------------
+
+    /**
+     *  @copy spark.components.Grid#requestedMaxRowCount
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.0
+     *  @productversion Flex 4.5
+     */
+    public function get requestedMaxRowCount():int
+    {
+        return getGridProperty("requestedMaxRowCount");
+    }
+
+    /**
+     *  @private
+     */
+    public function set requestedMaxRowCount(value:int):void
+    {
+        setGridProperty("requestedMaxRowCount", value);
+    }

     //----------------------------------
     //  requestedMinRowCount (delegates to grid.requestedMinRowCount)


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

--- frameworks/projects/spark/src/spark/core/IContentLoader.as
+++ frameworks/projects/spark/src/spark/core/IContentLoader.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2010 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.core
 {


refactor imports

refactor imports

--- src/aerys/minko/render/shader/Shader.as
+++ src/aerys/minko/render/shader/Shader.as
@@ -3,6 +3,7 @@
 	import aerys.minko.ns.minko_render;
 	import aerys.minko.ns.minko_shader;
 	import aerys.minko.render.RenderTarget;
+	import aerys.minko.render.ShaderDataBindingsProxy;
 	import aerys.minko.render.resource.Context3DResource;
 	import aerys.minko.render.resource.Program3DResource;
 	import aerys.minko.render.shader.compiler.graph.ShaderGraph;
@@ -10,10 +11,9 @@
 	import aerys.minko.render.shader.part.ShaderPart;
 	import aerys.minko.type.Signal;
 	import aerys.minko.type.binding.DataBindings;
+	import aerys.minko.type.binding.Signature;

 	import flash.utils.getQualifiedClassName;
-	import aerys.minko.type.binding.Signature;
-	import aerys.minko.render.ShaderDataBindingsProxy;

 	use namespace minko_shader;


Remove unused imports

Remove unused imports

--- src/aerys/minko/type/math/Quaternion.as
+++ src/aerys/minko/type/math/Quaternion.as
@@ -1,8 +1,5 @@
 package aerys.minko.type.math
 {
-	import mx.charts.chartClasses.NumericAxis;
-	import mx.effects.easing.Quartic;
-
 	public class Quaternion
 	{
 		private static const TMP_QUATERNION : Quaternion = new Quaternion();


Update M2TSFileHandler.as

Update M2TSFileHandler.as

--- HLSPlugin/src/com/kaltura/hls/m2ts/M2TSFileHandler.as
+++ HLSPlugin/src/com/kaltura/hls/m2ts/M2TSFileHandler.as
@@ -445,7 +445,7 @@
 		{
 			if (key)
 			{
-			// If we are working with encrypted data, don't try to unpad because we haven't finished the segment
+				// If we are working with encrypted data, don't try to unpad because we haven't finished the segment
 				key.usePadding = false;
 			}
 			return basicProcessFileSegment(input, false);


Accept an optional Random for shuffle().

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@4903 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/util/ArrayUtil.as
+++ src/as/com/threerings/util/ArrayUtil.as
@@ -43,14 +43,20 @@

     /**
      * Randomly shuffle the elements in the specified array.
+     *
+     * @param rando a random number generator to use, or null if you don't care.
      */
-    public static function shuffle (arr :Array) :void
+    public static function shuffle (arr :Array, rando :Random = null) :void
     {
+        var randFunc :Function = (rando != null) ? rando.nextInt :
+            function (n :int) :int {
+                return int(Math.random() * n);
+            };
         // starting from the end of the list, repeatedly swap the element in
         // question with a random element previous to it up to and including
         // itself
         for (var ii :int = arr.length - 1; ii > 0; ii--) {
-            var idx :int = int(Math.random() * (ii + 1));
+            var idx :int = randFunc(ii + 1);
             var tmp :Object = arr[idx];
             arr[idx] = arr[ii];
             arr[ii] = tmp;


[Mangui.DemuxHelper] Make probe Level parameter optional

Selection logic ensures proper Demuxer is used anyway

--- src/org/mangui/hls/demux/DemuxHelper.as
+++ src/org/mangui/hls/demux/DemuxHelper.as
@@ -34,17 +34,17 @@
              * if mp3_match && codec_mp3 => MP3 demuxer
              * if no codec info in Manifest, use fallback order : AAC/MP3/TS
              */
-            if (ts_match && level.codec_h264) {
+            if (ts_match && level && level.codec_h264) {
                 CONFIG::LOGGING {
                     Log.debug("TS match + H264 signaled in Manifest, use TS demuxer");
                 }
                 return new TSDemuxer(audioselect, progress, complete, error, videometadata, audioOnly);
-            } else if (aac_match && level.codec_aac) {
+            } else if (aac_match && level && level.codec_aac) {
                 CONFIG::LOGGING {
                     Log.debug("AAC match + AAC signaled in Manifest, use AAC demuxer");
                 }
                 return new AACDemuxer(audioselect, progress, complete, error, id3tagfound);
-            } else if (mp3_match && level.codec_mp3) {
+            } else if (mp3_match && level && level.codec_mp3) {
                 CONFIG::LOGGING {
                     Log.debug("MP3 match + MP3 signaled in Manifest, use MP3 demuxer");
                 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 19786
Author:   clucier@adobe.com
Date:     2011-01-17T21:50:08.259241Z

Log Message:
-----------
AnimateTransform based effects now overlay properly in parallel effects.

QE notes: None
Doc notes: None
Bugs: SDK-29032
Reviewer: Jason S.
Tests run: Cyclone Server
Is noteworthy for integration: None

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/effects/Move3D.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/effects/Scale3D.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/effects/Rotate3D.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/effects/Move.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/effects/Scale.as</path>

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

--- frameworks/projects/spark/src/spark/effects/Scale.as
+++ frameworks/projects/spark/src/spark/effects/Scale.as
@@ -259,16 +259,15 @@
      */
     override protected function initInstance(instance:IEffectInstance):void
     {
-        if (!applyChangesPostLayout)
-        {
-            addMotionPath("scaleX", scaleXFrom, scaleXTo, scaleXBy);
-            addMotionPath("scaleY", scaleYFrom, scaleYTo, scaleYBy);
-        }
-        else
-        {
-            addMotionPath("postLayoutScaleX", scaleXFrom, scaleXTo, scaleXBy);
-            addMotionPath("postLayoutScaleY", scaleYFrom, scaleYTo, scaleYBy);
-        }
+        var xProp:String = applyChangesPostLayout ? "postLayoutScaleX" : "scaleX";
+        var yProp:String = applyChangesPostLayout ? "postLayoutScaleY" : "scaleY";
+
+        if (!(isNaN(scaleXFrom) && isNaN(scaleXTo) && isNaN(scaleXBy)))
+            addMotionPath(xProp, scaleXFrom, scaleXTo, scaleXBy);
+
+        if (!(isNaN(scaleYFrom) && isNaN(scaleYTo) && isNaN(scaleYBy)))
+            addMotionPath(yProp, scaleYFrom, scaleYTo, scaleYBy);
+
         super.initInstance(instance);
     }
 }


snake head logic

snake head logic

--- 6502/easy6502/snake-ex.as
+++ 6502/easy6502/snake-ex.as
@@ -14,10 +14,10 @@
 define snakeLength    $03 ; snake length, in bytes

 ; Directions (each using a separate bit)
-define movingUp      1
-define movingRight   2
-define movingDown    4
-define movingLeft    8
+define movingUp      $01
+define movingRight   $02
+define movingDown    $04
+define movingLeft    $08

 ; ASCII values of keys controlling the snake
 define ASCII_w      $77
@@ -30,18 +30,44 @@
 define sysLastKey   $ff

 jsr init
-jsr loop
+jsr test
+brk

 init:
 jsr initSnake
-jsr generateApplePosition
 rts

-loop:
-  jsr readKeys
-  jsr checkCollision
-  jsr updateSnake
-  jsr drawApple
-  jsr drawSnake
-  jsr spinWheels
-  jmp loop
+initSnake:
+  lda #movingRight  ;start direction
+  sta snakeDirection
+
+  lda #$04  ;start length (2 segments)
+  sta snakeLength
+
+  lda #$11
+  sta snakeHeadL
+
+  lda #$10
+  sta snakeBodyStart
+
+  lda #$0f
+  sta $14 ; body segment 1
+
+  lda #$04
+  sta snakeHeadH
+  sta $13 ; body segment 1
+  sta $15 ; body segment 2
+  rts
+
+test:
+  lda #$01 ;white
+  ldx #$00
+  sta (snakeHeadL,X)
+  ldx snakeLength
+body:
+  dex
+  dex
+  sta (snakeBodyStart,X)
+  cpx #$00
+  bne body
+  rts


fixed bug in browser backwards compatibility code

--- WeaveAPI/src/JavaScript.as
+++ WeaveAPI/src/JavaScript.as
@@ -579,6 +579,7 @@

 			const CODE_PARAM:String = '__code_from_flash__';
 			const ARGS_PARAM:String = '__arguments_from_flash__';
+			const RESULT_VAR:String = '__result_for_flash__';

 			// if the code references "this", we need to use Function.apply() to make the symbol work as expected
 			var appliedCode:String;
@@ -592,23 +593,21 @@
 			ExternalInterface.marshallExceptions = !!marshallExceptions;
 			try
 			{
-				// stringify results
-				if (json)
-					appliedCode = 'JSON.stringify(' + appliedCode + ', ' + JS_this + '.' + JSON_REPLACER + ')';
-				else
-					appliedCode = JS_this + '.' + JSON_REPLACER + '("", ' + appliedCode + ')';
+				// we need to use eval() in order to receive syntax errors
+				const TRY_CODE:String = json
+					? 'return JSON.stringify(window.eval(' + CODE_PARAM + '), ' + JS_this + '.' + JSON_REPLACER + ');'
+					: 'var ' + RESULT_VAR + ' = eval(' + CODE_PARAM + '); return ' + JS_this + '.' + JSON_REPLACER + '("", ' + RESULT_VAR + ');';
+
+				const CATCH_CODE:String = marshallExceptions
+					? 'if (e.toString() == "[object Error]") e.toString = function(){ return this.name + ": " + this.message; }; throw e;'
+					: 'e.message += "\\n" + code; if (typeof console != "undefined") console.error(e);';
+
+				var evalFunc:String = 'function(' + CODE_PARAM + ', ' + ARGS_PARAM + '){ try {\n' + TRY_CODE + '\n} catch (e) {\n' + CATCH_CODE + '\n} }';

 				// work around unescaped backslash bug
 				if (backslashNeedsEscaping && appliedCode.indexOf('\\') >= 0)
 					appliedCode = appliedCode.split('\\').join('\\\\');

-				// we need to use eval() in order to receive syntax errors
-				const TRY_CODE:String = 'return ' + (json ? 'window.eval' : 'eval') + '(' + CODE_PARAM + ');';
-				const CATCH_CODE:String = marshallExceptions
-					? 'if (e.toString() == "[object Error]") e.toString = function(){ return this.name + ": " + this.message; }; throw e;'
-					: 'e.message += "\\n" + code; if (typeof console != "undefined") console.error(e);';
-
-				var evalFunc:String = 'function(' + CODE_PARAM + ', ' + ARGS_PARAM + '){ try {\n' + TRY_CODE + '\n} catch (e) {\n' + CATCH_CODE + '\n} }';
 				result = ExternalInterface.call(evalFunc, appliedCode, pValues);

 				// parse stringified results


fixed missing async task removal

fixed missing async task removal

--- WeaveData/src/weave/services/URLRequestUtils.as
+++ WeaveData/src/weave/services/URLRequestUtils.as
@@ -371,6 +371,7 @@

 	override public function close():void
 	{
+		WeaveAPI.ProgressIndicator.removeTask(_asyncToken);
 		if (URLRequestUtils.debug)
 			trace(debugId(this), 'cancel', _urlRequest.url);
 		_isClosed = true;
@@ -429,7 +430,7 @@
 				if (obj is CustomAsyncResponder)
 					return;
 			// no more CustomAsyncResponders found, so cancel
-			close();
+			close();
 		}
 	}

@@ -605,7 +606,7 @@
 		if (loader)
 			loader.addResponder(this);

-		WeaveAPI.ProgressIndicator.addTask(loader ? loader.asyncToken : this, relevantContext as ILinkableObject);
+		WeaveAPI.ProgressIndicator.addTask(this, relevantContext as ILinkableObject);
 	}

 	private static function noOp(..._):void {} // does nothing


Change StringColumn to use Map instead of Object

--- WeaveJS/src/weavejs/data/column/StringColumn.as
+++ WeaveJS/src/weavejs/data/column/StringColumn.as
@@ -57,7 +57,7 @@
 		/**
 		 * String -> index in sorted _uniqueStrings
 		 */
-		private var _uniqueStringLookup:Object;
+		private var _uniqueStringLookup:Object = new JS.Map();

 		public function setRecords(keys:Array, stringData:Array):void
 		{
@@ -65,7 +65,7 @@
 			_asyncSort.abort();

 			_uniqueStrings.length = 0;
-			_uniqueStringLookup = {};
+			_uniqueStringLookup.clear();
 			_stringToNumberFunction = null;
 			_numberToStringFunction = null;

@@ -121,11 +121,11 @@
 				return false;

 			// keep track of unique strings
-			if (_uniqueStringLookup[value] === undefined)
+			if (!_uniqueStringLookup.has(value))
 			{
 				_uniqueStrings.push(value);
 				// initialize mapping
-				_uniqueStringLookup[value] = -1;
+				_uniqueStringLookup.set(value, -1);
 			}

 			return true;
@@ -162,7 +162,7 @@
 					return _i / _uniqueStrings.length;

 				var string:String = _uniqueStrings[_i];
-				_uniqueStringLookup[string] = _i;
+				_uniqueStringLookup.set(string, _i);

 				if (_stringToNumberFunction != null)
 				{
@@ -213,7 +213,7 @@
 				if (_stringToNumberFunction != null)
 					return Number(_stringToNumber[string]);

-				return Number(_uniqueStringLookup[string]);
+				return Number(_uniqueStringLookup.get(string));
 			}

 			if (dataType === IQualifiedKey)