Refactored Injector so that getProvider and getDefaultProvider are no longer chained, so that types aren't unnecessarily being recreated from fqcns, and to allow earlier exit for bad named requests.

--- src/org/swiftsuspenders/Injector.as
+++ src/org/swiftsuspenders/Injector.as
@@ -180,6 +180,9 @@
 		private var _defaultProviders : Dictionary;
 		private var _managedObjects : Dictionary;
 		private var _reflector : Reflector;
+
+		private static const _baseTypes:Array = [Array, Boolean, Class, Function, int, Number, Object, String, uint];
+

 		//----------------------            Internal Properties             ----------------------//
@@ -273,7 +276,15 @@
 		 */
 		public function satisfies(type : Class, name : String = '') : Boolean
 		{
-			return getProvider(getQualifiedClassName(type) + '|' + name) != null;
+			if(getProvider(getQualifiedClassName(type) + '|' + name) != null)
+			{
+				return true;
+			}
+			if(name.length > 0)
+			{
+				return false;
+			}
+			return getDefaultProvider(type, true) != null;
 		}

 		/**
@@ -293,7 +304,7 @@
 			{
 				return true;
 			}
-			return (getDefaultProvider(getQualifiedClassName(type) + '|' + name, false) != null);
+			return (getDefaultProvider(type, false) != null);
 		}

 		/**
@@ -358,10 +369,10 @@
 		public function getInstance(type : Class, name : String = '', targetType : Class = null) : *
 		{
 			const mappingId : String = getQualifiedClassName(type) + '|' + name;
-			var provider : DependencyProvider = getProvider(mappingId, false);
-			if (!provider)
-			{
-				provider = getDefaultProvider(mappingId);
+			var provider : DependencyProvider = getProvider(mappingId);
+			if (!provider && (name.length == 0))
+			{
+				provider = getDefaultProvider(type);
 			}
 			if(provider)
 			{
@@ -565,7 +576,7 @@

 		public function hasMapping(type : Class, name : String = ''):Boolean
 		{
-			return getProvider(getQualifiedClassName(type) + '|' + name, false) != null;
+			return getProvider(getQualifiedClassName(type) + '|' + name) != null;
 		}

 		public function hasDirectMapping(type : Class, name : String = ''):Boolean
@@ -600,8 +611,7 @@
 			return description.ctor != null;
 		}

-		SsInternal function getProvider(
-			mappingId : String, fallbackToDefault : Boolean = true) : DependencyProvider
+		SsInternal function getProvider(mappingId : String) : DependencyProvider
 		{
 			var softProvider : DependencyProvider;
 			var injector : Injector = this;
@@ -630,10 +640,10 @@
 			{
 				return softProvider;
 			}
-			return fallbackToDefault ? getDefaultProvider(mappingId) : null;
-		}
-
-		SsInternal function getDefaultProvider(mappingId : String, consultParents : Boolean = true) : DependencyProvider
+			return null;
+		}
+
+		SsInternal function getDefaultProvider(type : Class, consultParents : Boolean = true) : DependencyProvider
 		{
 			if((!_fallbackProvider) && (_blockParentFallbackProvider || (!(consultParents && _parentInjector))))
 			{
@@ -641,39 +651,10 @@
 			}

 			//No meaningful way to automatically create base types without names
-			const baseTypes:Array = ["Array|", "Boolean|", "Class|", "Function|", "int|", "Number|", "Object|", "String|", "uint|"];
-			if(baseTypes.indexOf(mappingId) > -1)
+			if(_baseTypes.indexOf(type) > -1)
 			{
 				return null;
 			}
-
-			const parts : Array = mappingId.split('|');
-			const name : String = parts.pop();
-
-			// No names around here partner (as keeping 'satisfies' and actual responses consistent would
-			// mean you'd have to be updating strings in multiple places, which is the road to madness)
-			if(name.length > 0)
-			{
-				return null;
-			}
-
-			const typeName : String = parts.pop();
-
-			try
-			{
-				const definition : Object = _applicationDomain.hasDefinition(typeName)
-					? _applicationDomain.getDefinition(typeName)
-					: getDefinitionByName(typeName);
-			}
-			catch (e : Error)
-			{
-				return null;
-			}
-			if (!definition || !(definition is Class))
-			{
-				return null;
-			}
-			const type : Class = Class(definition);

 			return getNearestDefaultProviderForType(type, consultParents);
 		}


fix missing reset of Matrix4x4._invalidComponents flag in setRawData(), setColumn() and setRow()

--- src/aerys/minko/type/math/Matrix4x4.as
+++ src/aerys/minko/type/math/Matrix4x4.as
@@ -498,6 +498,7 @@
 			_matrix.copyRawDataFrom(input, offset, transposed);

 			_hasChanged = true;
+            _invalidComponents |= COMPONENT_ALL;
 			if (!_locked)
 				_changed.execute(this);

@@ -522,6 +523,7 @@
 			_matrix.copyColumnFrom(column, value._vector);

 			_hasChanged = true;
+            _invalidComponents |= COMPONENT_ALL;
 			if (!_locked)
 				_changed.execute(this);

@@ -546,6 +548,7 @@
 			_matrix.copyRowFrom(row, value._vector);

 			_hasChanged = true;
+            _invalidComponents |= COMPONENT_ALL;
 			if (!_locked)
 				_changed.execute(this);


add Matrix4x4.world() method to init. matrix from translation, rotation and scale vectors

--- src/aerys/minko/type/math/Matrix4x4.as
+++ src/aerys/minko/type/math/Matrix4x4.as
@@ -799,6 +799,18 @@
 			return invert();
 		}

+		public function world(translation	: Vector4,
+							  rotation		: Vector4,
+							  scale			: Vector4) : Matrix4x4
+		{
+			_matrix.recompose(new <Vector3D>[translation._vector, rotation._vector, scale._vector]);
+
+			if (!_locked)
+				_changed.execute(this);
+
+			return this;
+		}
+
 		/**
 		 * Builds a (left-handed) view transform.
 		 *


Removed refs to Playable from ConstrainedSprite

--- src/flash/display/ConstrainedSprite.as
+++ src/flash/display/ConstrainedSprite.as
@@ -1,5 +1,4 @@
 package flash.display {
-	import episodic.core.Playable;

 	import flash.events.Event;
 	import flash.geom.Rectangle;
@@ -68,7 +67,7 @@
 				//  number of frames. SO  - the Stream object now
 				// collects those values from metaData and holds onto them
 				if(child.hasOwnProperty('stream')) {
-					var stream:Playable = child['stream'] as Playable;
+					var stream:* = child['stream'];
 					if(stream.videoWidth > 0 && stream.videoHeight > 0) {
 						childWidth = stream.videoWidth;
 						childHeight = stream.videoHeight;


- checks on stop() method.

- checks on stop() method.

--- src/flash/htmlelements/AudioElement.as
+++ src/flash/htmlelements/AudioElement.as
@@ -190,6 +190,19 @@
 			sendEvent(HtmlMediaEvent.PAUSE);
 		}

+
+		public function stop():void {
+			if (_timer != null) {
+				_timer.stop();
+			}
+			if (_soundChannel != null) {
+				_soundChannel.stop();
+				_sound.close();
+			}
+			unload();
+			sendEvent(HtmlMediaEvent.STOP);
+		}
+
 		public function setCurrentTime(pos:Number):void {
 			_timer.stop();
 			_currentTime = pos;
@@ -209,13 +222,6 @@
 			sendEvent(HtmlMediaEvent.PLAYING);
 		}

-		public function stop():void {
-			_timer.stop();
-			_soundChannel.stop();
-			_sound.close();
-			unload();
-			sendEvent(HtmlMediaEvent.STOP);
-		}

 		public function setVolume(volume:Number):void {


Filename separator (between base & number) added.

--- src/swf2png.as
+++ src/swf2png.as
@@ -32,6 +32,7 @@
 		private var inputFileName:String;
 		private var inputFilePath:String;
 		private var prefix:String;
+		private var separator:String = "_";
 		private var outfield:TextField;
 		private var outputDirPath:String;
 		private var offsetMatrix:Matrix;
@@ -139,8 +140,9 @@
 			var bitmapData:BitmapData = new BitmapData(outputWidth, outputHeight, true, 0x0);
 			bitmapData.draw(loader.content, offsetMatrix);
 			var bytearr:ByteArray = PNGEncoder.encode(bitmapData);
-			var outfileName:String = outputDirPath + File.separator + prefix + counter + ".png"
+			var outfileName:String = outputDirPath + File.separator + prefix + separator + counter + ".png"
 			var file:File = new File(outfileName);
+
 			outfield.appendText("\nPrefix: " + prefix);
 			outfield.appendText("\nWriting: " + outfileName);
 			var stream:FileStream = new FileStream();


Fixed Carousel XML String support

Fixed Carousel XML String support

git-svn-id: 02605e11d3a461bc7e12f3f3880edf4b0c8dcfd0@4518 3e7533ad-8678-4d30-8e38-00a379d3f0d0

--- src/laml/display/Carousel.as
+++ src/laml/display/Carousel.as
@@ -1,6 +1,4 @@
 package laml.display {
-	import episodic.events.EpisodicEvent;
-
 	import flash.events.MouseEvent;
 	import flash.text.TextFormat;

@@ -50,8 +48,6 @@
 		}

 		public function set itemRenderer(itemRenderer:*):void {
-			trace(">> set itemRenderer :: " + itemRenderer);
-
 			if(itemRenderer is String) {
 				model.itemRendererString = itemRenderer;
 			}
@@ -102,22 +98,19 @@
 				itemView.data = data;
 			}
 			else if(model.itemRendererString) {
-				var itemXml:XML = new XML(itemRenderer);
+				var itemXml:XML = new XML(model.itemRendererString);
 				itemView = parser.parseLayoutable(itemXml, data);
 			}
 			else {
 				trace(">> WARNING itemRenderer set with unknown type");
 			}

-			itemView.addEventListener(EpisodicEvent.CHANGE, changeHandler, false, 0, true);
+			itemView.addEventListener(PayloadEvent.CHANGED, itemChangedHandler, false, 0, true);
 			contentContainer.addChild(itemView);
 		}

-		protected function changeHandler(event:EpisodicEvent):void {
-			event.stopPropagation();
-			var episodicEvent:EpisodicEvent = new EpisodicEvent(EpisodicEvent.CHANGE);
-			episodicEvent.payload = event.payload;
-			dispatchEvent(episodicEvent);
+		protected function itemChangedHandler(event:PayloadEvent):void {
+			dispatchEvent(event);
 		}

 		override protected function createChildren():void {


Change 20081027-hqm-I by hqm@badtzmaru.home on 2008-10-27 11:42:56 EDT
    in /Users/hqm/openlaszlo/trunk4
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: fix mouseclick bug in swf9

New Features:

Bugs Fixed: LPP-7250

Technical Reviewer: max (pending)
QA Reviewer: pbr
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details:

Tests:

For swf9, calendar month buttons (next month, prev month) and day/week/month buttons should work again.

For amazon, album icons in the recommendations list should appear, and mousing over should bring up the frame
around them, and dragging should work with no flicker

For examples/components/component_sampler.lzx, buttons should work, menus should work in windows
examples/components/window_example.lzx, alerts and modal dialogs should appear and be dismissable with
button clicks

git-svn-id: d62bde4b5aa582fdf07c8d403e53e0399a7ed285@11606 fa20e4f9-1d0a-0410-b5f3-dc9c16b8b17c

--- WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
@@ -399,13 +399,12 @@
                   // avoid security exceptions
                   if (info.parentAllowsChild) {
                       if (info.content is AVM1Movie) {
-                          if ($debug) {
+                        if ($debug) {
                               Debug.warn("Playback control will not work for the resource.  Please update or recompile the resource for Flash 9.", this.resource);
                           }
                       } else if (info.content is MovieClip) {
                           // store a reference for playback control
                           this.loaderMC = MovieClip(info.content);
-
                           this.totalframes = this.loaderMC.totalFrames;
                           this.loaderMC.addEventListener(Event.ENTER_FRAME, updateFrames);
                           this.owner.resourceevent('play', null, true);
@@ -703,10 +702,10 @@
           this.buttonMode = c;
           this.tabEnabled = false;
           this.mouseEnabled = c || this.isroot;// @devnote: see LPP-6980
-          attachMouseEvents(this);
           var cb:SimpleButton = this.clickbutton;
           //trace('sprite setClickable' , c, 'cb',cb);
           if (this.clickable) {
+              attachMouseEvents(this);
               // TODO [hqm 2008-01] The Flash Sprite docs
               // explain how to add a sprite to the tab order using tabEnabled property.
               if (cb == null) {
@@ -730,11 +729,10 @@
           } else {
               removeMouseEvents(this);
               if (cb) {
+                  removeChild(cb);
                   removeMouseEvents(cb);
-                  removeChild(cb);
                   this.clickbutton = null;
               }
-
           }
       }

@@ -1000,6 +998,10 @@
                   if (this.resourceContainer != null) {
                       this.removeChild(this.resourceContainer);
                   }
+
+                  if (asset is InteractiveObject) InteractiveObject(asset).mouseEnabled = false;
+                  if (asset is DisplayObjectContainer) DisplayObjectContainer(asset).mouseChildren = false;
+
                   this.resourceContainer = asset;
                   this.addChildAt(asset,IMGDEPTH);


Change 20091201-hqm-H by hqm@badtzmaru.home on 2009-12-01 19:32:16 EST
    in /Users/hqm/openlaszlo/trunk/WEB-INF/lps/lfc
    for http://svn.openlaszlo.org/openlaszlo/trunk/WEB-INF/lps/lfc

Summary: fix for Smokecheck issuing undecipherable warnings in swf10

New Features:

Bugs Fixed: LPP-8640 Smokecheck issuing undecipherable warnings in swf10

Technical Reviewer: ptw
QA Reviewer: max
Doc Reviewer: (pending)

Documentation:

Release Notes:

Overview:

Details:

+ The arm of the conditional in LzSprite.loaderEventHandler which handles ProgressEvent.PROGRESS
was accessing an uninitialized variable ,"info".

+ update some debug.warn messages to format the actual error objects instead of the string representation

Tests:

smokecheck and amazon don't print these warnings now:
WARNING: progress TypeError: Error #1009: Cannot access a property or method of a null object reference.

git-svn-id: d62bde4b5aa582fdf07c8d403e53e0399a7ed285@15255 fa20e4f9-1d0a-0410-b5f3-dc9c16b8b17c

--- WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
@@ -349,7 +349,7 @@
             // send events, but skip onload
             this.sendResourceLoad(true);
         } else if ($debug) {
-            Debug.warn('Unhandled asset: ', LzAsset.getAssetType(r) + " " + r);
+            Debug.warn('Unhandled asset in setResource %w: %w', LzAsset.getAssetType(r), r);
         }
     }

@@ -533,6 +533,7 @@
                 // look for frame properties
                 try {
                     // accessing LoaderInfo.content may throw security exceptions
+                    var info:LoaderInfo = event.target as LoaderInfo;
                     var content:DisplayObject = info.content;
                     if (content is MovieClip) {
                         var loaderMC = MovieClip(content);
@@ -553,7 +554,7 @@
             } else if (event.type == Event.UNLOAD) {
             }
         } catch (error:Error) {
-            if ($debug) Debug.warn(event.type + " " + error);
+            if ($debug) Debug.warn("loaderEventHandler(%w): %w", event, error);
         }
     }

@@ -705,7 +706,7 @@
                 this.owner.resourceloaderror( (event as IOErrorEvent).text );
             }
         } catch (error:Error) {
-            if ($debug) Debug.warn(event.type + " " + error);
+            if ($debug) Debug.warn("soundLoadHandler(%w): %w", event.type, error);
         }
     }


don't allow seeking out of bounds

don't allow seeking out of bounds

restrict range to [0,duration-1]
related to https://github.com/mangui/flashls/issues/413

--- src/org/mangui/hls/stream/StreamBuffer.as
+++ src/org/mangui/hls/stream/StreamBuffer.as
@@ -120,8 +120,10 @@
          */
         public function seek(position : Number) : void {
             // compute _seekPositionRequested based on position and playlist type
+            var loadLevel : Level = _hls.levels[_hls.loadLevel];
+            // set max position as being end of playlist - 1 second
+            var maxPosition : Number = loadLevel.duration-1;
             if (_hls.type == HLSTypes.LIVE) {
-                var loadLevel : Level = _hls.levels[_hls.loadLevel];
                 if (position == -1) {
                     /*  If start position not specified, follow HLS spec :
                         If the EXT-X-ENDLIST tag is not present
@@ -132,10 +134,10 @@
                     _seekPositionRequested = Math.max(0, loadLevel.duration - 3 * loadLevel.averageduration);
                 } else {
                     // If start position is specified, trust it, just avoid seeking out of bound ...
-                    _seekPositionRequested = Math.min(position, loadLevel.duration);
-                }
-            } else {
-                _seekPositionRequested = Math.max(position, 0);
+                    _seekPositionRequested = Math.min(position, maxPosition);
+                }
+            } else {
+                _seekPositionRequested = Math.min(Math.max(position, 0), maxPosition);
             }
             CONFIG::LOGGING {
                 Log.debug("seek : requested position:" + position.toFixed(2) + ",seek position:" + _seekPositionRequested.toFixed(2) + ",min/max buffer position:" + min_pos.toFixed(2) + "/" + max_pos.toFixed(2));


Default params modified

Default params modified

--- extension/src/starling/shaders/FastGaussianBlurShader.as
+++ extension/src/starling/shaders/FastGaussianBlurShader.as
@@ -18,7 +18,7 @@
     public static const VERTICAL:String     = "vertical";

     private static const DEFAULT_FIRST_PASS_STRENGTH:Number                 = 1.25;
-    private static const DEFAULT_STRENGTH_INCREASE_PER_PASS_RATIO:Number    = 3.0;
+    private static const DEFAULT_STRENGTH_INCREASE_PER_PASS_RATIO:Number    = 2.5;

     private static var _verticalOffsets:Vector.<Number>     = new <Number>[0.0, 1.3846153846, 0.0, 3.2307692308];
     private static var _horizontalOffsets:Vector.<Number>   = new <Number>[1.3846153846, 0.0, 3.2307692308, 0.0];


Transferred from the Adobe Open Source Subversion Repository

Revision: 17425
Author:   rfrishbe@adobe.com
Date:     2010-08-20T17:29:56.448841Z

Log Message:
-----------
Pretty basic refactoring for PARB (though it is a lot of files).  Renamed GestureCaptureEvent/GestureCaptureReason (these were previously TouchScrollEvent) to TouchInteractionEvent/TouchInteractionReason.  inputMode has been renamed to interactionMode and has a new enumeration class, mx.core.InteractionMode.

There's on non-PARB change that was made was in List and mobiletheme/defaults.css. I found a bug in that the item renderer wasn't highlighting on mousedown anymore. There were two issues at play. Firstly the touchDelay was set to 100 ms in the Scroller only, so I added it to List and added a FIXME comment to myself figuring out if the code in List should use scroller.getStyle("touchDelay") or itemRenderer.getStyle("touchDelay") instead of getStyle("touchDelay"). Also, I found out that the code doesn't deal with touchDelay=0 very well. Since we're planning on working on this code anyways (and possibly moving it in to ItemRenderer itself with a new downstate), I just put in a hack with a FIXME to handle this case for now.

QE notes: None
Doc notes: None
Bugs: -
Reviewer: Jason SJ, Chiedo
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/GestureCaptureEvent.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/InteractionMode.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/GestureCaptureReason.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/GestureCaptureEvent.as" copyfrom-rev="17393" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/TouchInteractionEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/GestureCaptureReason.as" copyfrom-rev="17393" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/TouchInteractionReason.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -696,91 +696,91 @@
 [Event(name="exitState", type="mx.events.FlexEvent")]

 //--------------------------------------
-//  GestureCapture events
+//  TouchInteraction events
 //--------------------------------------

 /**
  *  A cancellable event, dispatched by a component in an attempt to
- *  respond to a user gesture.
+ *  respond to a touch interaction user gesture.
  *
  *
The event is a bubbling event dispatched on the
- *  DisplayObject that the user gesture
+ *  DisplayObject that the touch interaction
  *  started (where the mouseDown/touchBegin occurred).

  *
- *
Components responding to user gestures should listen for
- *  gesture capture events to coordinate with other components around
- *  what type of gesture the user intended to make and which component
- *  is responding to that gesture.

+ *
Components responding to touch interactions should listen for
+ *  touch interaction events to coordinate with other components around
+ *  what type of touch interaction the user intended to make and which component
+ *  is responding to that touch interaction.

  *
- *
A Scroller component will dispatch a gestureCaptureStarting event
- *  to alert other components that may be responding to the same user
- *  gesture that it would like to take control of this user gesture.
+ *
A Scroller component will dispatch a touchInteractionStarting event
+ *  to alert other components that may be responding to the same user's
+ *  touch interaction that it would like to take control of this touch interaction.
  *  This is an opportunity for other components to cancel the Scroller's
- *  action and to maintain control over this user gesture.

+ *  action and to maintain control over this touch interaction.

  *
- *  @eventType mx.events.GestureCaptureEvent.GESTURE_CAPTURE_STARTING
+ *  @eventType mx.events.TouchInteractionEvent.TOUCH_INTERACTION_STARTING
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Event(name="gestureCaptureStarting", type="mx.events.GestureCaptureEvent")]
+[Event(name="touchInteractionStarting", type="mx.events.TouchInteractionEvent")]

 /**
  *  A non-cancellable event, dispatched by a component when it starts
- *  responding to a user gesture.
+ *  responding to a touch interaction user gesture.
  *
  *
The event is a bubbling event dispatched on the
- *  DisplayObject that the user gesture
+ *  DisplayObject that the touch interaction
  *  started (where the mouseDown/touchBegin occurred).

  *
- *
Components responding to user gestures should listen for
- *  gesture capture events to coordinate with other components around
- *  what type of gesture the user intended to make and which component
- *  is responding to that gesture.

+ *
Components responding to touch interactions should listen for
+ *  touch interaction events to coordinate with other components around
+ *  what type of touch interaction the user intended to make and which component
+ *  is responding to that touch interaction.

  *
- *
A Scroller component will dispatch a gestureCaptureStart event
- *  to alert other components that may be responding to the same user
- *  gesture that it is taking control of this user gesture.
+ *
A Scroller component will dispatch a touchInteractionStart event
+ *  to alert other components that may be responding to the same user's
+ *  touch interaction that it is taking control of this touch interaction.
  *  When they see this event, other components should stop responding
- *  to the user gesture, remove any visual indications that it is
- *  responding to the user gesture, and perform other clean up.

+ *  to the touch interaction, remove any visual indications that it is
+ *  responding to the touch interaction, and perform other clean up.

  *
- *  @eventType mx.events.GestureCaptureEvent.GESTURE_CAPTURE_START
+ *  @eventType mx.events.TouchInteractionEvent.TOUCH_INTERACTION_START
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Event(name="gestureCaptureStart", type="mx.events.GestureCaptureEvent")]
+[Event(name="touchInteractionStart", type="mx.events.TouchInteractionEvent")]

 /**
- *  A non-cancellable event, dispatched by a component when it starts
- *  responding to a user gesture.
+ *  A non-cancellable event, dispatched by a component when it is done
+ *  responding to a touch interaction user gesture.
  *
  *
The event is a bubbling event dispatched on the
- *  DisplayObject that the user gesture
+ *  DisplayObject that the touch interaction
  *  started (where the mouseDown/touchBegin occurred).

  *
- *
Components responding to user gestures should listen for
- *  gesture capture events to coordinate with other components around
- *  what type of gesture the user intended to make and which component
- *  is responding to that gesture.

+ *
Components responding to touch interactions should listen for
+ *  touch interaction events to coordinate with other components around
+ *  what type of touch interaction the user intended to make and which component
+ *  is responding to that touch interaction.

  *
- *
A Scroller component will dispatch a gestureCaptureEnd event
- *  to alert other components that it is done responding to the user
- *  gesture.

+ *
A Scroller component will dispatch a touchInteractionEnd event
+ *  to alert other components that it is done responding to the user's
+ *  touch interaction.

  *
- *  @eventType mx.events.GestureCaptureEvent.GESTURE_CAPTURE_END
+ *  @eventType mx.events.TouchInteractionEvent.TOUCH_INTERACTION_END
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Event(name="gestureCaptureEnd", type="mx.events.GestureCaptureEvent")]
+[Event(name="touchInteractionEnd", type="mx.events.TouchInteractionEvent")]

 //--------------------------------------
 //  Tooltip events
@@ -946,19 +946,22 @@
 [Style(name="errorColor", type="uint", format="Color", inherit="yes")]

 /**
- *  The primary input mode for this component.  The acceptable values are:
+ *  The primary interaction mode for this component.  The acceptable values are:
  *  mouse and touch.
  *
  *  The default value for the Halo theme is mouse.
  *  The default value for the Spark theme is mouse.
  *  The default value for the Mobile theme is touch.
+ *
+ *  @see mx.core.InteractionMode.MOUSE
+ *  @see mx.core.InteractionMode.TOUCH
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Style(name="inputMode", type="String", enumeration="mouse,touch", inherit="yes")]
+[Style(name="interactionMode", type="String", enumeration="mouse,touch", inherit="yes")]

 /**
  *  Blend mode used by the focus rectangle.


Transferred from the Adobe Open Source Subversion Repository

Revision: 5363
Author:   gruehle@adobe.com
Date:     2009-03-17T21:48:26.221849Z

Log Message:
-----------
More skinning/styling bug fixes.

SDK-19698 - Halo List with Gumbo skin is inconsistent with Gumbo FxList skin when setting baseColor style
SDK-19602 - focusColor is not supported by halo components
SDK-19595 - Various halo components do not look correct when in a disabled state.

QA/Doc Notes: The following changes are controlled by the compatibility-version flag:
* focusColor:
 old behavior: focus drawing was done with themeColor or errorColor, depending on the error state of the component
 new behavior: focus drawing is done with focusColor or errorColor, depending on the error state of the component
* Disabled DateChooser drawing:
 old behavior: border/bottom of header was same color regardless of enable setting
 new behavior: when disabled, border/bottom of header are dimmed 50%
* ComboBase border:
 old behavior: we always created a border object, but it was obscured by the other parts of the component
 new behavior: don't create the border object

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/StepperIncrButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/StepperDecrButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/BorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ScrollBarUpButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/halo/defaults.css</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/sparkskins/src/mx/skins/spark/ScrollBarDownButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ScrollBarTrackSkin.mxml</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -8709,8 +8709,10 @@
             var rectCol:Number;
             if (errorString && errorString != "")
                 rectCol = getStyle("errorColor");
+            else if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_0)
+                rectCol = getStyle("themeColor");
             else
-                rectCol = getStyle("themeColor");
+            	rectCol = getStyle("focusColor");

             var thickness:Number = getStyle("focusThickness");


Transferred from the Adobe Open Source Subversion Repository

Revision: 12280
Author:   smgilson@adobe.com
Date:     2009-11-30T17:45:36.448234Z

Log Message:
-----------
ASDoc updates in preperation for localization

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/effects/Move3D.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/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Wipe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/WipeDirection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/CrossFade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/IAnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Animate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransitionShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/SetAction.as</path>

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

--- frameworks/projects/spark/src/spark/effects/CrossFade.as
+++ frameworks/projects/spark/src/spark/effects/CrossFade.as
@@ -34,6 +34,8 @@
  *
  * @see spark.effects.AnimateTransitionShader
  * @see spark.effects.AnimateTransitionShader#shaderByteCode
+ *
+ *  @includeExample examples/CrossFadeExample.mxml
  *
  *  @langversion 3.0
  *  @playerversion Flash 10


Улучшения

Улучшения

--- src/main/org/shypl/common/sound/SoundFlow.as
+++ src/main/org/shypl/common/sound/SoundFlow.as
@@ -30,16 +30,20 @@

 			const transform:SoundTransform = new SoundTransform(realVolume);

-			if (_loop) {
-				if (start == 0 && _end == 0) {
-					_channel = _sound.play(0, int.MAX_VALUE, transform);
+			try {
+				if (_loop) {
+					if (start == 0 && _end == 0) {
+						_channel = _sound.play(0, int.MAX_VALUE, transform);
+					}
+					else {
+						_channel = _sound.play(start, 1, transform);
+					}
 				}
 				else {
 					_channel = _sound.play(start, 1, transform);
 				}
 			}
-			else {
-				_channel = _sound.play(start, 1, transform);
+			catch (ignored:Error) {
 			}

 			if (_channel === null) {


fixed bug in traverseAndSetState()

fixed bug in traverseAndSetState()

--- WeaveJS/src/weavejs/core/SessionManager.as
+++ WeaveJS/src/weavejs/core/SessionManager.as
@@ -361,7 +361,7 @@
 			else if (mapping is Array)
 			{
 				for each (var item:* in mapping)
-					traverseAndSetState(value, item, removeMissingDynamicObjects);
+					traverseAndSetState(state, item, removeMissingDynamicObjects);
 			}
 			else if (state && typeof state === 'object' && typeof mapping === 'object')
 			{


NativeSignal addOnce() now creates a delegate closure that removes the listener. This got rid of using the lowest listener priority and simplified the code.


Robustness improvements for terrain editor brush loading. Closes #2011.

--- bin/Data/Scripts/Editor/EditorTerrain.as
+++ bin/Data/Scripts/Editor/EditorTerrain.as
@@ -359,6 +359,9 @@

         // We use this when editing the terrain
         Image@ image = cache.GetResource("Image", fileLocation);
+        if (image is null)
+            return null;
+
         image.name = parts[0];
         brushes.Push(image);

@@ -385,21 +388,28 @@
     private void LoadBrushes()
     {
         ListView@ terrainBrushes = window.GetChild("BrushesContainer", true);
+        String brushPath = "Textures/Editor/TerrainBrushes/";

         Array<String>@ resourceDirs = cache.resourceDirs;
         String brushesFileLocation;
+
         for (uint i = 0; i < resourceDirs.length; ++i)
         {
-            brushesFileLocation = resourceDirs[i] + "Textures/Editor/TerrainBrushes";
+            brushesFileLocation = resourceDirs[i] + brushPath;
             if (fileSystem.DirExists(brushesFileLocation))
                 break;
         }

+        if (brushesFileLocation.empty)
+            return;
+
         Array<String> files = fileSystem.ScanDir(brushesFileLocation, "*.*", SCAN_FILES, false);

         for (uint i = 0; i < files.length; ++i)
         {
-            terrainBrushes.AddItem(LoadBrush(brushesFileLocation + "/" + files[i]));
+            UIElement@ brush = LoadBrush(brushPath + files[i]);
+            if (brush !is null)
+                terrainBrushes.AddItem(brush);
         }
     }


Made it so Entity's don't have to be active for their graphics to call update().

--- net/flashpunk/World.as
+++ net/flashpunk/World.as
@@ -54,8 +54,8 @@
 				{
 					if (e._tween) e.updateTweens();
 					e.update();
-					if (e._graphic && e._graphic.active) e._graphic.update();
-				}
+				}
+				if (e._graphic && e._graphic.active) e._graphic.update();
 				e = e._updateNext;
 			}
 		}


slight performance improvement - eliminating redundant busy status check

--- WeaveCore/src/weave/utils/WeavePromise.as
+++ WeaveCore/src/weave/utils/WeavePromise.as
@@ -75,6 +75,18 @@
 			super.handle_(handler);
 		}

+		protected function handle_without_busy_check_(handler:Handler):void
+		{
+			if (handlers_.indexOf(handler) < 0)
+				handlers_.push(handler);
+
+			if (state_ === PromiseState.PENDING)
+				return;
+
+			//TODO - super.handle_() does not follow spec - should be async
+			super.handle_(handler);
+		}
+
 		/**
 		 * Changed for Weave so handlers can be called more than once.
 		 */
@@ -98,7 +110,7 @@
 				return;

 			for each (var handler:Handler in handlers_)
-				handle_(handler);
+				handle_without_busy_check_(handler);
 		}

 		public function depend(...linkableObjects):WeavePromise


improved probe text indentation

improved probe text indentation

--- WeaveUI/src/weave/utils/ProbeTextUtils.as
+++ WeaveUI/src/weave/utils/ProbeTextUtils.as
@@ -104,7 +104,10 @@
 					if (value == '' || value == 'NaN')
 						continue;
 					var title:String = ColumnUtils.getTitle(column);
-					var line:String = StandardLib.lpad(value, 8);
+					var line:String = value; //StandardLib.lpad(value, 8);
+					if (line.length < 8)
+						line = StandardLib.lpad('', (8 - line.length) * 2) + line; // twice as many spaces for padding, so numbers line up better
+
 					if (StringUtil.trim(title)) // hack to allow column with no title
 						line += ' (' + title + ')';
 					line += '\n';


now hiding selections and subsets menus by default

--- WeaveUISpark/src/weave/WeaveProperties.as
+++ WeaveUISpark/src/weave/WeaveProperties.as
@@ -303,7 +303,7 @@
 		public const enableCascadeAllWindows:LinkableBoolean = new LinkableBoolean(true); // enable/disable Cascade All Windows
 		public const enableTileAllWindows:LinkableBoolean = new LinkableBoolean(true); // enable/disable Tile All Windows

-		public const enableSelectionsMenu:LinkableBoolean = new LinkableBoolean(true);// enable/disable Selections Menu
+		public const enableSelectionsMenu:LinkableBoolean = new LinkableBoolean(false);// enable/disable Selections Menu
 		public const enableSaveCurrentSelection:LinkableBoolean = new LinkableBoolean(true);// enable/disable Save Current Selection option
 		public const enableClearCurrentSelection:LinkableBoolean = new LinkableBoolean(true);// enable/disable Clear Current Selection option
 		public const enableManageSavedSelections:LinkableBoolean = new LinkableBoolean(true);// enable/disable Manage Saved Selections option
@@ -312,7 +312,7 @@

 		private function verifySelectionMode(value:String):Boolean { return InteractionController.enumSelectionMode().indexOf(value) >= 0; }

-		public const enableSubsetsMenu:LinkableBoolean = new LinkableBoolean(true);// enable/disable Subsets Menu
+		public const enableSubsetsMenu:LinkableBoolean = new LinkableBoolean(false);// enable/disable Subsets Menu
 		public const enableCreateSubsets:LinkableBoolean = new LinkableBoolean(true);// enable/disable Create subset from selected records option
 		public const enableRemoveSubsets:LinkableBoolean = new LinkableBoolean(true);// enable/disable Remove selected records from subset option
 		public const enableShowAllRecords:LinkableBoolean = new LinkableBoolean(true);// enable/disable Show All Records option


removed non-working, unused code

removed non-working, unused code

Change-Id: Id772e9508432df963e6d6f2fa78654abf71b51c1

--- WeaveUISpark/src/weave/utils/PointGraphics.as
+++ WeaveUISpark/src/weave/utils/PointGraphics.as
@@ -1,224 +0,0 @@
-/*
-    Weave (Web-based Analysis and Visualization Environment)
-    Copyright (C) 2008-2011 University of Massachusetts Lowell
-
-    This file is a part of Weave.
-
-    Weave is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License, Version 3,
-    as published by the Free Software Foundation.
-
-    Weave is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Weave.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-package weave.utils
-{
-	import flash.geom.Point;
-
-	import weave.api.primitives.IBounds2D;
-
-	/**
-	 *
-	 * @author adufilie
-	 */
-	public class PointGraphics
-	{
-		public function PointGraphics(screenBounds:IBounds2D, dataBounds:IBounds2D)
-		{
-			_screenBounds = screenBounds;
-			_dataBounds = dataBounds;
-		}
-
-		private var _dataBounds:IBounds2D;
-		private var _screenBounds:IBounds2D;
-
-		private var _x:Number = 0;
-		private var _y:Number = 0;
-		private var _isData:Boolean = true;
-
-		private var _angle:Number = 0;
-		private var _isDegrees:Boolean = true;
-
-		private var _point:Point = new Point();
-
-		public function getX():Number
-		{
-			return _x;
-		}
-		public function getY():Number
-		{
-			return _y;
-		}
-		public function getPoint(output:Point = null):Point
-		{
-			if (output == null)
-				output = _point;
-			output.x = _x;
-			output.y = _y;
-			return output;
-		}
-		public function getScreenPoint(output:Point = null):Point
-		{
-			if (output == null)
-				output = _point;
-			output.x = _x;
-			output.y = _y;
-			if (_isData)
-				_dataBounds.projectPointTo(output, _screenBounds);
-			return output;
-		}
-		public function getDataPoint(output:Point = null):Point
-		{
-			if (output == null)
-				output = _point;
-			output.x = _x;
-			output.y = _y;
-			if (!_isData)
-				_screenBounds.projectPointTo(output, _dataBounds);
-			return output;
-		}
-		public function getScreenBounds():IBounds2D
-		{
-			return _screenBounds;
-		}
-		public function getDataBounds():IBounds2D
-		{
-			return _screenBounds;
-		}
-
-		public function screenBounds(b:IBounds2D):PointGraphics
-		{
-			_screenBounds = b;
-			return this;
-		}
-		public function dataBounds(b:IBounds2D):PointGraphics
-		{
-			_screenBounds = b;
-			return this;
-		}
-		public function data(x:Number = NaN, y:Number = NaN):PointGraphics
-		{
-			if (!_isData)
-			{
-				_point.x = _x;
-				_point.y = _y;
-				_screenBounds.projectPointTo(_point, _dataBounds);
-				_x = _point.x;
-				_y = _point.y;
-			}
-			if (isFinite(x))
-				x = _x;
-			if (isFinite(y))
-				y = _y;
-			_isData = true;
-			return this;
-		}
-		public function screen(x:Number = NaN, y:Number = NaN):PointGraphics
-		{
-			if (_isData)
-			{
-				_point.x = _x;
-				_point.y = _y;
-				_dataBounds.projectPointTo(_point, _screenBounds);
-				_x = _point.x;
-				_y = _point.y;
-			}
-			if (isFinite(x))
-				x = _x;
-			if (isFinite(y))
-				y = _y;
-			_isData = false;
-			return this;
-		}
-		public function point(input:Point):PointGraphics
-		{
-			_x = input.x;
-			_y = input.y;
-			return this;
-		}
-
-		public function x(value:Number):PointGraphics
-		{
-			_x = value;
-			return this;
-		}
-		public function y(value:Number):PointGraphics
-		{
-			_y = value;
-			return this;
-		}
-		public function move(deltaX:Number, deltaY:Number):PointGraphics
-		{
-			if (isFinite(deltaX))
-				_x += deltaX;
-			if (isFinite(deltaY))
-				_y += deltaY;
-			return this;
-		}
-		public function moveTo(x:Number, y:Number):PointGraphics
-		{
-			if (isFinite(x))
-				_x = x;
-			if (isFinite(y))
-				_y = y;
-			return this;
-		}
-		public function moveToPoint(point:Point):PointGraphics
-		{
-			_x = point.x;
-			_y = point.y;
-			return this;
-		}
-
-		public function angle(a:Number):PointGraphics
-		{
-			_angle = a;
-			return this;
-		}
-		public function radians(angle:Number = NaN):PointGraphics
-		{
-			if (isFinite(angle))
-				_angle = angle;
-			else if (_isDegrees)
-				_angle = _angle * 180 / Math.PI;
-			_isDegrees = false;
-			return this;
-		}
-		public function degrees(angle:Number = NaN):PointGraphics
-		{
-			if (isFinite(angle))
-				_angle = angle;
-			else if (!_isDegrees)
-				_angle = _angle * Math.PI / 180;
-			_isDegrees = true;
-			return this;
-		}
-		public function rotate(angle:Number):PointGraphics
-		{
-			_angle += angle;
-			return this;
-		}
-		public function polarMove(distance:Number, angle:Number = NaN):PointGraphics
-		{
-			if (isFinite(angle))
-				_angle = angle;
-			_x += distance * Math.cos(_angle);
-			_y += distance * Math.sin(_angle);
-			return this;
-		}
-		public function polarMoveTo(radius:Number, angle:Number = NaN):PointGraphics
-		{
-			if (isFinite(angle))
-				_angle = angle;
-			_x = radius * Math.cos(_angle);
-			_y = radius * Math.sin(_angle);
-			return this;
-		}
-	}
-}


remove useless assignement

remove useless assignement

--- src/org/mangui/hls/stream/HLSNetStream.as
+++ src/org/mangui/hls/stream/HLSNetStream.as
@@ -84,13 +84,10 @@

         // function is called by SCRIPT in FLV
         public function onID3Data(data : ByteArray) : void {
-            var dump : String = "unset";
-
             // we dump the content as hex to get it to the Javascript in the browser.
             // from lots of searching, we could use base64, but even then, the decode would
             // not be native, so hex actually seems more efficient
-            dump = Hex.fromArray(data);
-
+            var dump : String = Hex.fromArray(data);
             CONFIG::LOGGING {
                 Log.debug("id3:" + dump);
             }


rename getnexttag into shiftnexttag for sake of clarity

--- src/org/mangui/hls/stream/StreamBuffer.as
+++ src/org/mangui/hls/stream/StreamBuffer.as
@@ -146,6 +146,7 @@
 //                CONFIG::LOGGING {
 //                    Log.debug2('append type/dts/pts:' + tag.typeString + '/' + tag.dts + '/' + tag.pts);
 //                }
+
                 var pos : Number = start_position + (tag.pts - min_pts) / 1000;
                 var tagData : FLVData = new FLVData(tag, pos, _time_sliding, continuity);
                 switch(tag.type) {
@@ -606,12 +607,12 @@
         }

         /*
-         * retrieve queue containing next tag to be injected, using the following priority :
+         * retrieve next tag and update pointer, using the following priority :
          * smallest continuity
          * then smallest dts
          * then header  then video then audio then metadata tags
          */
-        private function getnexttag() : FLVData {
+        private function shiftnexttag() : FLVData {
             var mtag : FLVData ,vtag : FLVData,atag : FLVData, htag : FLVData;

             var continuity : int = int.MAX_VALUE;
@@ -663,7 +664,7 @@

         private function shiftmultipletags(max_duration : Number) : Vector.<FLVData> {
             var tags : Vector.<FLVData>=  new Vector.<FLVData>();
-            var tag : FLVData = getnexttag();
+            var tag : FLVData = shiftnexttag();
             if (tag) {
                 var min_offset : Number = tag.position_absolute;
                 do {
@@ -672,7 +673,7 @@
                     if (tag_offset - min_offset > max_duration) {
                         break;
                     }
-                } while ((tag = getnexttag()) != null);
+                } while ((tag = shiftnexttag()) != null);
             }
             return tags;
         }


now using weave.outerHTML for external refresh instead of
weave.parentNode.innerHTML

Change-Id: If43adee5d91829603f6e9480ab6f63ecec2ca1fd

--- WeaveUISpark/src/weave/Weave.as
+++ WeaveUISpark/src/weave/Weave.as
@@ -495,9 +495,8 @@
 				if (ExternalInterface.objectID)
 					WeaveAPI.executeJavaScript(
 						{reloadID: uid},
-						"var p = weave.parentNode;",
-						"p.weaveReloadID = reloadID;",
-						"p.innerHTML = p.innerHTML;"
+						"weave.parentNode.weaveReloadID = reloadID;",
+						"weave.outerHTML = weave.outerHTML;"
 					);
 				else
 					ExternalInterface.call("function(){ location.reload(false); }");


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

--- frameworks/projects/framework/src/mx/graphics/Stroke.as
+++ frameworks/projects/framework/src/mx/graphics/Stroke.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2004-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.graphics
 {


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

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

 package mx.utils
 {


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

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

 package mx.utils
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.effects.easing
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 20013
Author:   harishs@adobe.com
Date:     2011-01-31T15:32:09.255609Z

Log Message:
-----------
QE notes: Globalization changes. Full cyclone run has been done. Default locale changes and sort bug fixes since Dec 14 2010
Doc notes: ASDOC comments for all classes have been updated.
Bugs: SDK-29132 SDK-29127 SDK-28163  SDK-29075 SDK-28600 SDK-28492 SDK-28856

Reviewer: Gordon Smith, Xie Fang, Zhigang Qi
Tests run: cyclone and checkintests
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/AdvancedStyleClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/collections/SortField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses/NumberValidatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/collections/ISort.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses/GlobalizationValidatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/CollatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/NumberFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/collections/ISortField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/CurrencyFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/collections/Sort.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/NumberValidator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/DateTimeFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/CurrencyValidator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/collections/SortField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/GlobalizationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses/GlobalizationUtils.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/SortingCollator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/StringTools.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/LastOperationStatus.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/collections/Sort.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/supportClasses/NumberFormatterBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/MatchingCollator.as</path>

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

--- frameworks/projects/spark/src/spark/collections/Sort.as
+++ frameworks/projects/spark/src/spark/collections/Sort.as
@@ -19,6 +19,7 @@
 import mx.collections.ISort;
 import mx.collections.ISortField;
 import mx.collections.errors.SortError;
+import mx.core.FlexGlobals;
 import mx.core.UIComponent;
 import mx.managers.ISystemManager;
 import mx.managers.SystemManager;
@@ -52,10 +53,10 @@

 /**
  *  Provides the sorting information required to establish a sort on an
- *  existing view (ICollectionView interface or class that implements the
- *  interface). After you assign a Sort instance to the view's
+ *  existing view (ICollectionView interface or class that
+ *  implements the interface). After you assign a Sort instance to the view's
  *  sort property, you must call the view's
- * refresh() method to apply the sort criteria.
+ *  refresh() method to apply the sort criteria.
  *
  *
Typically the sort is defined for collections of complex items, that is
  *  collections in which the sort is performed on one or more properties of
@@ -106,13 +107,13 @@
  *

  *

  *
- *
The Flex implementations of the ICollectionView interface retrieve
- *  all items from a remote location before executing a sort.
+ *
The Flex implementations of the ICollectionView interface
+ *  retrieve all items from a remote location before executing a sort.
  *  If you use paging with a sorted list, apply the sort to the remote
  *  collection before you retrieve the data.
  *

  *
- *
The default comparison provided by the SortField class
+ *
The default comparison provided by the SortField class
  *  provides correct language specific
  *  sorting for strings. The language is selected by the setting the locale
  *  style on an instance of the class in one of the following ways:
@@ -123,23 +124,23 @@
  *  locale from the document that contains the declaration.
  *

  *  Example:
- *  <listing version="3.0" >
+ *

  *  <fx:Declarations>

  *         <s:SortField id="sf" />

  *  </fx:Declarations>
- *  </listing>
+ *

  *

  *  By using an MXML declaration and specifying the locale value
  *  in the list of assignments.
  *

  *  Example:
- *  <listing version="3.0" >
+ *

  *  <fx:Declarations>

  *      <s:SortField id="sf_SimplifiedChinese" locale="zh-Hans-CN" />

  *  </fx:Declarations>
- *  </listing>
+ *

  *

- *  Calling the setStyle method,
+ *  Calling the setStyle method,
  *  e.g. sf.setStyle("locale", "zh-Hans-CN")
  *

  *

@@ -162,7 +163,10 @@
  *  />
  *

  *
-
+ *
In case items have inconsistent data types or items have complex data types, use of default
+ *  built-in compare functions is not desired. Inconsistent sort result may occur in such cases.
+ *  To avoid such problem, provide custom compare function and/or make item types consistent.

+ *
  *  @includeExample examples/SortExample1.mxml
  *  @includeExample examples/SortExample2.mxml
  *
@@ -396,6 +400,47 @@
     //  Overridden Methods
     //
     //--------------------------------------------------------------------------
+
+    /**
+    *  @private
+    */
+    override public function getStyle(styleProp:String):*
+    {
+        if (styleProp != "locale")
+            return super.getStyle(styleProp);
+
+        if ((localeStyle !== undefined) && (localeStyle !== null))
+            return localeStyle;
+
+        if (styleParent)
+            return styleParent.getStyle(styleProp);
+
+        if (FlexGlobals.topLevelApplication)
+            return FlexGlobals.topLevelApplication.getStyle(styleProp);
+
+        return undefined;
+    }
+
+    /**
+     *  @private
+     *  Intercept style change for "locale".
+     *
+     *  In the case that there is no associated UI component or the
+     *  module factory of the UIComponent has not yet been intialized
+     *  style changes are only recorded but the styleChanged method
+     *  is not called.  Overriding the setStyle method allows
+     *  the class to be updated immediately when the locale style is
+     *  set directly on this class instance.
+     */
+    override public function setStyle(styleProp:String, newValue:*):void
+    {
+        super.setStyle(styleProp, newValue);
+
+        if (styleProp != "locale")
+            return;
+
+        localeChanged();
+    }

     /**
      *  @private
@@ -778,6 +823,32 @@

     /**
      *  @private
+     *  Ensure some style source exists for this instance of a globalization
+     *  object.
+     *
+     *  A style source is considered exist if (A) styleParent value is non-null,
+     *  or (B) localeStyle value has some useable value.
+     *  If neither is the case, this style client will be added to the
+     *  FlexGlobals.topLevelApplication as a child if possible.
+     *
+     *  As a side effect this will call the styleChanged method and if the
+     *  locale has changed will cause the createWorkingInstance method
+     *  to be called.
+     */
+    private function ensureStyleSource():void
+    {
+        if (!styleParent &&
+            ((localeStyle === undefined) || (localeStyle === null)))
+        {
+            if (FlexGlobals.topLevelApplication)
+            {
+                FlexGlobals.topLevelApplication.addStyleClient(this);
+            }
+        }
+    }
+
+    /**
+     *  @private
      *  Make sure all SortFields are ready to execute their comparators.
      */
     private function initSortFields(item:Object, buildArraySortArgs:Boolean = false):Object
@@ -858,11 +929,13 @@
     {
         if (!defaultEmptyField)
         {
+            ensureStyleSource();
+
             defaultEmptyField = new SortField();
-            const locale:String = getStyle("locale");
-            if (!locale)
-                throw new IllegalOperationError("Undefined locale");
-            defaultEmptyField.setStyle("locale", locale);
+            const locale:* = getStyle("locale");
+            if (locale !== undefined)
+                defaultEmptyField.setStyle("locale", locale);
+
             try
             {
                 defaultEmptyField.initializeDefaultCompareFunction(a);
@@ -899,12 +972,14 @@
      */
     private function localeChanged():void
     {
-        const newlocaleStyle:* = getStyle("locale");
+        const newlocaleStyle:* = super.getStyle("locale");

         if (localeStyle === newlocaleStyle)
             return;

         localeStyle = newlocaleStyle;
+        if (defaultEmptyField)
+            defaultEmptyField.setStyle("locale", localeStyle);

         dispatchEvent(new Event(Event.CHANGE));
     }


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

--- frameworks/projects/spark/src/spark/components/Group.as
+++ frameworks/projects/spark/src/spark/components/Group.as
@@ -134,6 +134,14 @@
  *  3D properties
  *  bounds outside the extent of the Group
  *

+ *
+ *
The Group 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: 6284
Author:   gosmith@adobe.com
Date:     2009-04-27T17:37:28.069105Z

Log Message:
-----------
SimpleText and RichText now have a static mx_internal backgroundColor:Object property for debugging, like RichEditableText has had. It defaults to null, meaning no background. If you set it to a uint, the components will draw an opaque background so that you can see their bounds.

QE Notes: This property may be useful for testing as well as debugging.
Doc Notes: None
Bugs: None
Reviewer: Carol will review

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/SimpleText.as</path>

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

--- frameworks/projects/spark/src/spark/components/Label.as
+++ frameworks/projects/spark/src/spark/components/Label.as
@@ -15,6 +15,7 @@
 import flash.display.DisplayObjectContainer;
 import flash.display.Graphics;
 import flash.display.Shape;
+import flash.display.Sprite;
 import flash.geom.Rectangle;
 import flash.text.TextFormat;
 import flash.text.engine.EastAsianJustifier;
@@ -159,6 +160,20 @@
      */
     private static var recreateTextLine:Function;

+    /**
+     *  @private
+     *  Used for debugging.
+     *  Set this to an RGB uint to draw an opaque background
+     *  so that you can see the bounds of the component.
+     */
+    mx_internal static var backgroundColor:Object = null;
+
+	//--------------------------------------------------------------------------
+    //
+    //  Class properties
+    //
+    //--------------------------------------------------------------------------
+
     //----------------------------------
     //  embeddedFontRegistry
     //----------------------------------
@@ -284,6 +299,33 @@
         _fontContext = value;
     }

+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: UIComponent
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function updateDisplayList(unscaledWidth:Number,
+    											  unscaledHeight:Number):void
+    {
+    	super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+    	// Draw an optional background for debugging.
+    	var bc:Object = mx_internal::backgroundColor;
+    	if (bc != null)
+    	{
+	    	var g:Graphics = Sprite(drawnDisplayObject).graphics;
+	    	g.clear();
+	        g.lineStyle();
+	        g.beginFill(uint(bc));
+	       	g.drawRect(0, 0, unscaledWidth, unscaledHeight);
+	        g.endFill();
+	    }
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Methods


Transferred from the Adobe Open Source Subversion Repository

Revision: 3711
Author:   mhorn@adobe.com
Date:     2008-10-17T17:55:26.712310Z

Log Message:
-----------
asdoc updates; fix examples; add new examples

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/graphics/examples/LineExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/graphics/examples/ArrowExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/graphics/examples/BitmapGraphicExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/graphics/examples/EllipseExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/graphics/examples/RectExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/graphics/examples/TextBoxExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/graphics/examples/CircleExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/graphics/examples/TextGraphicExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>

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

--- frameworks/projects/spark/src/spark/components/Label.as
+++ frameworks/projects/spark/src/spark/components/Label.as
@@ -33,7 +33,20 @@

 /**
  *  A box, specified in the parent Group element's coordinate space, that contains text.
- *  Defined by a TextGraphic element.
+ *
+ *
The TextBox class is similar to the mx.controls.Label control, although it can display
+ *  multiple lines.

+ *
+ *
TextBox does not support drawing a background or border; it only renders text. It supports only the basic formatting styles.
+ *  If you want to use more advanced formatting styles, use the TextGraphic or TextView control.

+ *
+ *
The specified text is wrapped at the right edge of the component's bounds. If it extends below the bottom, it is clipped.
+ *  The display cannot be scrolled.

+ *
+ *  @see mx.components.TextView
+ *  @see mx.graphics.TextGraphic
+ *
+ *  @includeExample examples/TextBoxExample.mxml
  */
 public class TextBox extends TextGraphicElement
 {


def: 5462 when changeMedia, reset entry cuepoints map

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

--- kdp3Lib/src/com/kaltura/kdpfl/view/CuePointsMediator.as
+++ kdp3Lib/src/com/kaltura/kdpfl/view/CuePointsMediator.as
@@ -35,6 +35,7 @@
 	public class CuePointsMediator extends Mediator
 	{
 		public static const NAME : String = "cuePointsMediator";
+
 		/**
 		 * The instance of the KDP's OSMF MediaPlayer.
 		 */
@@ -50,11 +51,11 @@
 		 * */
 		private var _entryDurationInMS:Number;
 		/**
-		 * The map of the current cue-points.
+		 * The map of the current entry's cue-points.
 		 */
 		private var _cuePointsMap : Object = new Object();
 		/**
-		 * The map of the current cue-points per this play session
+		 * The map of the current entry's cue-points per this play session
 		 */
 		private var _sessionCuePointsMap : Object = new Object();
 		/**
@@ -106,16 +107,16 @@

 				case NotificationType.ENTRY_READY:
 					_entryDurationInMS = (facade.retrieveProxy( MediaProxy.NAME ) as MediaProxy).vo.entry.msDuration;
-
-					break;
+					break;
+
 				case NotificationType.CUE_POINTS_RECEIVED:
 					//don't change the notification.body, copy the object
 					ObjectUtil.copyObject(notification.getBody(), _cuePointsMap);
 					findPrePostSequence();
 					ObjectUtil.copyObject(_cuePointsMap, _sessionCuePointsMap);
 					break;
+
 				case NotificationType.MEDIA_LOADED:
-
 					_media = (facade.retrieveProxy( MediaProxy.NAME ) as MediaProxy).vo.media;
 					_reachedMediaEnd = false;
 					initTimelineMarkers ();
@@ -137,6 +138,9 @@
 				case NotificationType.CHANGE_MEDIA:
 					if (_timelineMetadata)
 						_timelineMetadata.removeEventListener( TimelineMetadataEvent.MARKER_TIME_REACHED, onCuePointReached );
+					// reset entry's cuepoints map, so we won't accumulate cuepoints
+					// (i.e., between entries in playlist)
+					_cuePointsMap = new Object();
 					break;
 			}
 		}


#FEC-179 #time 1h #comment save widevine mbr flavors on mainMediaVo

--- plugins/wvPlugin/src/WvMediator.as
+++ plugins/wvPlugin/src/WvMediator.as
@@ -383,6 +383,8 @@
 								_mediaProxy.vo.kalturaMediaFlavorArray = flvArray;
 							}
 							_mediaProxy.vo.autoSwitchFlavors = true;
+							//save main media in case we have ads
+							(facade.retrieveProxy(SequenceProxy.NAME) as SequenceProxy).saveMainMedia();
 							_shouldSetFlavors = false;
 						}


StreamBuffer : fix intermittent macroblocks or freezed frames when keyframe seeking is used

ensure that first injected AVC HEADER DTS is smaller than following AVC NALU DTS
we were previously assuming that PTS=DTS for AVC HEADER. that is not always the case ...
this was leading to injection of sequence like this, resulting in macroblocks

INFO:inject type/dts/pts:AVC_HEADER/24760/24760
INFO:inject type/dts/pts:AVC_NALU/24680/24760

instead of

INFO:inject type/dts/pts:AVC_HEADER/24680/24760
INFO:inject type/dts/pts:AVC_NALU/24680/24760

--- src/org/mangui/hls/stream/StreamBuffer.as
+++ src/org/mangui/hls/stream/StreamBuffer.as
@@ -654,16 +654,19 @@
                 keyIdx = lastIdx;
             }

-            var first_pts : Number;
+            var firstIdx : int;
             if (HLSSettings.seekMode == HLSSeekMode.ACCURATE_SEEK) {
                 // start injecting from last tag before start position
-                first_pts = tags[lastIdx].tag.pts;
-                _seekPositionReal = tags[lastIdx].positionAbsolute;
+                firstIdx = lastIdx;
             } else {
                 // start injecting from keyframe tag
-                first_pts = tags[keyIdx].tag.pts;
-                _seekPositionReal = tags[keyIdx].positionAbsolute;
-            }
+                firstIdx = keyIdx;
+            }
+
+            var firstPTS : Number = tags[firstIdx].tag.pts;
+            var firstDTS : Number = tags[firstIdx].tag.dts;
+            _seekPositionReal = tags[firstIdx].positionAbsolute;
+
             // inject discontinuity/metadata/AVC header/AAC header if available
             if (disIdx != -1)  idx2Clone.push(disIdx);
             if (metIdxMain != -1)  idx2Clone.push(metIdxMain);
@@ -674,7 +677,15 @@
             for each (i in idx2Clone) {
                 data = tags[i];
                 var tagclone : FLVTag = data.tag.clone();
-                tagclone.pts = tagclone.dts = first_pts;
+                // use keyframe DTS as reference timestamp
+                tagclone.dts = firstDTS;
+                if(tagclone.type == FLVTag.AVC_HEADER) {
+                    // for video, PTS could be different than PTS, use correct PTS value
+                    tagclone.pts = firstPTS;
+                } else {
+                    // for other tags, force PTS = DTS
+                    tagclone.pts = firstDTS;
+                }
                 var dataclone : FLVData = new FLVData(tagclone, _seekPositionReal, 0, data.continuity, data.loaderType, data.fragIdx, data.fragLevel, data.fragSN);
                 filteredTags.push(dataclone);
             }
@@ -687,7 +698,7 @@
                     // only push NALU to be able to reconstruct frame at seek position
                     if (data.tag.type == FLVTag.AVC_NALU) {
                         tagclone = data.tag.clone();
-                        tagclone.pts = tagclone.dts = first_pts;
+                        tagclone.pts = tagclone.dts = firstPTS;
                         dataclone = new FLVData(tagclone, _seekPositionReal, 0, data.continuity, data.loaderType, data.fragIdx, data.fragLevel, data.fragSN);
                         filteredTags.push(dataclone);
                     }


Fixed MeshController geometry setter when geometry is null

--- src/aerys/minko/scene/controller/mesh/MeshController.as
+++ src/aerys/minko/scene/controller/mesh/MeshController.as
@@ -36,7 +36,7 @@

 			_geometry = value;

-			if (_mesh)
+			if (_mesh && _geometry)
 				_mesh.bindings.addProvider(_geometry.geometryDataProvider);

 			if (_data)


Create dialog fix

Create dialog fix

--- src/com/merlinds/miracle_tool/views/alerts/AlertView.as
+++ src/com/merlinds/miracle_tool/views/alerts/AlertView.as
@@ -40,8 +40,9 @@
 					var child:DisplayObject = _dialogs.getChildAt(i);
 					child.x = this.width - child.width >> 1;
 					child.y = this.height - child.height >> 1;
+					_modalBlocker.visible = (child as DialogWindow).modal;
 				}
-				_dialogs.visible =  true;
+				this.visible =  true;
 			}
 		}


Removed unused import.

Removed unused import.

--- as3_lib/src/recastnavigation/detour/navmesh/DTNavMesh.as
+++ as3_lib/src/recastnavigation/detour/navmesh/DTNavMesh.as
@@ -3,7 +3,6 @@
 	import recastnavigation.core.RNBase;
 	import recastnavigation.core.rn_internal;
 	import recastnavigation.core.utils.mallocInt8Vector;
-	import recastnavigation.internal_api.CModule;
 	import recastnavigation.internal_api.internal_dtAllocNavMesh;
 	import recastnavigation.internal_api.internal_dtFreeNavMesh;
 	import recastnavigation.internal_api.internal_dtNavMesh_getTileAt;


Transferred from the Adobe Open Source Subversion Repository

Revision: 10872
Author:   cframpto@adobe.com
Date:     2009-10-05T19:39:47.041984Z

Log Message:
-----------
Most changes already approved by PARB and a few are pending.  Given the two reviewers are at MAX and then there is a shutdown week we decided to take a chance that these changes will actually stick.

TLFText.css -> MXFTEText.css
TLFTextField -> FTETextField
UITLFTextField -> UIFTETextField
TLFDataGridItemRenderer -> FTEDataGridItemRenderer
TLFTextInput -> MXFTETextInput

UITextFormat.useTLF -> UITextFormat.useFTE

QE notes:
Doc notes:
Bugs: SDK-22909
Reviewer: Gordon
Tests run: checkintests
Is noteworthy for integration: yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/TextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/TLFTextInput.as" copyfrom-rev="10865" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/MXFTETextInput.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UITLFTextField.as" copyfrom-rev="10865" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UIFTETextField.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/TLFTextInput.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/TLFTextField.as" copyfrom-rev="10865" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/FTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UITLFTextField.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/dataGridClasses/TLFDataGridItemRenderer.as" copyfrom-rev="10865" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/dataGridClasses/FTEDataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/TextFieldFactory.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/TLFTextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/CSSTextLayoutFormat.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/dataGridClasses/TLFDataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<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/spark/src/spark/components/Label.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/spark/TLFText.css" copyfrom-rev="10865" action="A">/flex/sdk/trunk/frameworks/projects/spark/MXFTEText.css</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/TLFText.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -10172,11 +10172,11 @@
             textFormat.sharpness = _inheritingStyles.fontSharpness;
             textFormat.thickness = _inheritingStyles.fontThickness;

-            textFormat.useTLF =
-                getTextFieldClassName() == "mx.core::UITLFTextField" ||
-                getTextInputClassName() == "mx.controls::TLFTextInput";
-
-            if (textFormat.useTLF)
+            textFormat.useFTE =
+                getTextFieldClassName() == "mx.core::UIFTETextField" ||
+                getTextInputClassName() == "mx.controls::MXFTETextInput";
+
+            if (textFormat.useFTE)
             {
                 textFormat.direction = _inheritingStyles.direction;
                 textFormat.locale = _inheritingStyles.locale;
@@ -11415,7 +11415,7 @@
         if (className == "mx.core::UITextField")
         {
             className = getTextFieldClassName();
-            if (className == "mx.core::UITLFTextField")
+            if (className == "mx.core::UIFTETextField")
                 classObj = Class(ApplicationDomain.currentDomain.
                                                     getDefinition(className));
         }
@@ -11428,7 +11428,7 @@

         // If we just created a UITLFTextField, set its textLineCreator property
         // so that it knows what module to use for creating its TextLines.
-        if (className == "mx.core::UITLFTextField")
+        if (className == "mx.core::UIFTETextField")
             obj.textLineCreator = moduleContext;

         return obj;
@@ -11436,7 +11436,7 @@

     /**
      *  @private
-     *  Returns either "mx.core::UITextField" or "mx.core::UITLFTextField",
+     *  Returns either "mx.core::UITextField" or "mx.core::UIFTETextField",
      *  based on the version number and the textFieldClass style.
      */
     private function getTextFieldClassName():String
@@ -11451,7 +11451,7 @@

     /**
      *  @private
-     *  Returns either "mx.core::TextInput" or "mx.core::TLFTextInput",
+     *  Returns either "mx.core::TextInput" or "mx.core::MXFTETextInput",
      *  based on the version number and the textInputClass style.
      */
     private function getTextInputClassName():String


Transferred from the Adobe Open Source Subversion Repository

Revision: 12052
Author:   clucier@adobe.com
Date:     2009-11-20T18:38:19.094091Z

Log Message:
-----------
We now issue runtime warnings for incompatible embedded fonts as we detect their use.

QE notes: You might want to create a couple tests around this.
Doc notes: None.
Bugs: SDK-23920.
Reviewer: Alex, Darrell
Tests run: Checkin
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/bundles/en_US/core.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UIFTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/utils/TextUtil.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/spark/src/spark/components/Label.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/components/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IEmbeddedFontRegistry.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -14,14 +14,14 @@

 import flash.accessibility.Accessibility;
 import flash.accessibility.AccessibilityProperties;
-import flash.display.BlendMode;
+import flash.display.BlendMode;
 import flash.display.DisplayObject;
 import flash.display.DisplayObjectContainer;
 import flash.display.GradientType;
 import flash.display.Graphics;
 import flash.display.InteractiveObject;
 import flash.display.Loader;
-import flash.display.Shader;
+import flash.display.Shader;
 import flash.display.Sprite;
 import flash.display.Stage;
 import flash.events.Event;
@@ -9528,11 +9528,11 @@
         moveEvent.oldX = oldX;
         moveEvent.oldY = oldY;
         dispatchEvent(moveEvent);
-
+
         oldX = x;
         oldY = y;
     }
-
+
     /**
      *  @private
      */
@@ -9542,7 +9542,7 @@
         resizeEvent.oldWidth = oldWidth;
         resizeEvent.oldHeight = oldHeight;
         dispatchEvent(resizeEvent);
-
+
         oldWidth = width;
         oldHeight = height;
     }
@@ -11689,7 +11689,7 @@
      *  where an object wanting to  use the font should be created.
      */
     mx_internal function getFontContext(fontName:String, bold:Boolean,
-                                        italic:Boolean):IFlexModuleFactory
+                                        italic:Boolean, embeddedCff:*=undefined):IFlexModuleFactory
     {
         if (noEmbeddedFonts)
             return null;
@@ -11697,7 +11697,8 @@
         var registry:IEmbeddedFontRegistry = embeddedFontRegistry;

         return registry ? registry.getAssociatedModuleFactory(
-            fontName, bold, italic, this, moduleFactory) : null;
+            fontName, bold, italic, this, moduleFactory, systemManager,
+            embeddedCff) : null;
     }

     /**
@@ -11739,15 +11740,8 @@
         var bold:Boolean = (fontWeight == "bold");
         var italic:Boolean = (fontStyle == "italic");

-        // Save for hasFontContextChanged().
-        oldEmbeddedFontContext = getFontContext(fontName, bold, italic);
+        var className:String = getQualifiedClassName(classObj);

-        var moduleContext:IFlexModuleFactory = oldEmbeddedFontContext ?
-                                               oldEmbeddedFontContext :
-                                               moduleFactory;
-
-        var className:String = getQualifiedClassName(classObj);
-
         // If the caller requests a UITextField,
         // we may actually return a UITLFTextField,
         // depending on the version number
@@ -11757,9 +11751,17 @@
             className = getTextFieldClassName();
             if (className == "mx.core::UIFTETextField")
                 classObj = Class(ApplicationDomain.currentDomain.
-                                                    getDefinition(className));
-        }
-
+                    getDefinition(className));
+        }
+
+        // Save for hasFontContextChanged().
+        oldEmbeddedFontContext = getFontContext(fontName, bold, italic,
+            className == "mx.core::UIFTETextField");
+
+        var moduleContext:IFlexModuleFactory = oldEmbeddedFontContext ?
+                                               oldEmbeddedFontContext :
+                                               moduleFactory;
+
         // Not in font registry, so create in this font context.
         var obj:Object = createInModuleContext(moduleContext, className);

@@ -11770,10 +11772,10 @@
         // so that it knows what module to use for creating its TextLines.
         if (className == "mx.core::UIFTETextField")
             obj.fontContext = moduleContext;
-
+
         return obj;
     }
-
+
     /**
      *  @private
      *  Returns either "mx.core::UITextField" or "mx.core::UIFTETextField",
@@ -11856,7 +11858,8 @@
         var italic:Boolean = fontStyle == "italic";
         var fontContext:IFlexModuleFactory = noEmbeddedFonts ? null :
             embeddedFontRegistry.getAssociatedModuleFactory(
-                fontName, bold, italic, this, moduleFactory);
+                fontName, bold, italic, this, moduleFactory,
+                systemManager);
         return fontContext != oldEmbeddedFontContext;
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 14421
Author:   cframpto@adobe.com
Date:     2010-02-25T17:58:57.809794Z

Log Message:
-----------
Merge from 4.x mirroring PARB changes 14331, 14337, 14338.
Merge 14401 to fix clipping issue for right-aligned RichEditableText which had x < 0.
Merge 14402 to fix textAlignment issues for text with direction="rtl" for UIFTETextField and UITextField.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UIFTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/RichEditableTextContainerManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/FTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/framework/src/mx/core/UITextField.as
+++ frameworks/projects/framework/src/mx/core/UITextField.as
@@ -2242,9 +2242,12 @@
         var textAlign:String = getStyle("textAlign");
         // Map new Spark values that might be set in a selector
         // affecting both Halo and Spark components.
-        if (textAlign == "start")
-            textAlign = TextFormatAlign.LEFT;
+        var direction:String = getStyle("direction");
+        if (textAlign == "start")
+            textAlign = direction == "ltr" ? TextFormatAlign.LEFT : TextFormatAlign.RIGHT;
         else if (textAlign == "end")
+            textAlign = direction == "ltr" ? TextFormatAlign.RIGHT : TextFormatAlign.LEFT;
+        else if (textAlign == "justify" && direction == "rtl")
             textAlign = TextFormatAlign.RIGHT;
         textFormat.align = textAlign;
         textFormat.bold = getStyle("fontWeight") == "bold";


fixed bug handling ILinkableObjectWithNewProperties

--- WeaveCore/src/weave/core/SessionManager.as
+++ WeaveCore/src/weave/core/SessionManager.as
@@ -444,7 +444,7 @@

 			// handle properties appearing in session state that do not appear in the linkableObject
 			if (linkableObject is ILinkableObjectWithNewProperties)
-				for each (name in newState)
+				for (name in newState)
 					if (!deprecatedLookup.hasOwnProperty(name))
 						(linkableObject as ILinkableObjectWithNewProperties).handleMissingSessionStateProperty(newState, name);


Mirrored today's Signal tweaks to NativeSignal.

--- src/org/osflash/signals/NativeSignal.as
+++ src/org/osflash/signals/NativeSignal.as
@@ -45,11 +45,8 @@
 		//TODO: @throws
 		public function add(listener:Function, priority:int = 0):void
 		{
-			if (listener.length != 1)
-				throw new ArgumentError('Listener for native event must declare exactly 1 argument.');
-
-			if (onetimeListenerRelationshipExists(listener))
-				throw new AmbiguousRelationshipError('You cannot add a listener then addOnce the same listener without removing the relationship first.');
+			if (onceListeners[listener])
+				throw new AmbiguousRelationshipError('You cannot addOnce() then add() the same listener without removing the relationship first.');

 			createListenerRelationship(listener, priority);
 		}
@@ -57,12 +54,8 @@
 		/** @inheritDoc */
 		public function addOnce(listener:Function, priority:int = 0):void
 		{
-			// function.length is the number of arguments.
-			if (!listener.length)
-				throw new ArgumentError('Listener must declare at least 1 argument when eventClass is specified.');
-
-			if (permanentListenerRelationshipExists(listener))
-				throw new AmbiguousRelationshipError('You cannot addOnce a listener then adds the same listener without removing the relationship first.');
+			if (listeners.indexOf(listener) >= 0 && !onceListeners[listener])
+				throw new AmbiguousRelationshipError('You cannot add() then addOnce() the same listener without removing the relationship first.');

 			createListenerRelationship(listener, priority);
 			onceListeners[listener] = true;
@@ -107,8 +100,12 @@
 		}

-		private function createListenerRelationship(listener:Function, priority:int):void
+		protected function createListenerRelationship(listener:Function, priority:int):void
 		{
+			// function.length is the number of arguments.
+			if (listener.length != 1)
+				throw new ArgumentError('Listener for native event must declare exactly 1 argument.');
+
 			// Don't add same listener twice.
 			if (listeners.indexOf(listener) >= 0)
 				return;
@@ -125,22 +122,5 @@
 				remove(onceListener as Function);
 			}
 		}
-
-		private function permanentListenerRelationshipExists(listener:Function):Boolean
-		{
-			if (listeners.indexOf(listener) == -1)
-				return false;
-
-			return !onceListeners[listener];
-		}
-
-
-		private function onetimeListenerRelationshipExists(listener:Function):Boolean
-		{
-			if (listeners.indexOf(listener) == -1)
-				return false;
-
-			return onceListeners[listener];
-		}
 	}
 }