Nothing is supposed to go wrong here, but sometimes it does.

--- tamarin-central/thane/as3src/Thane.as
+++ tamarin-central/thane/as3src/Thane.as
@@ -69,6 +69,7 @@
                     httpClientFactory);

         } catch (e :Error) {
+            trace("Domain initialization error: " + e.getStackTrace());
             unspawnDomain(dom);
             return null;


Prevent resize if metadata hasn't changed

--- src/Player.as
+++ src/Player.as
@@ -377,8 +377,11 @@
     }

     public function onMetaData(item:Object):void {
+      if (this.meta.width !== item.width || this.meta.height !== item.height) {
+        this.videoResize();
+      }
+
       this.meta = item;
-      this.videoResize();
     }

     public function onXMPDataHandler(xmpData:Object):void {


Small refactor and tidy up. Added black background to stage.

--- src/Player.as
+++ src/Player.as
@@ -5,32 +5,43 @@
   import flash.display.StageAlign;
   import flash.display.StageScaleMode;
   import flash.events.Event;
+  import flash.events.NetStatusEvent;
   import flash.media.Video;
-  import flash.text.TextField;
   import flash.net.NetConnection;
   import flash.net.NetStream;
   import flash.net.URLRequest;
-  import flash.events.NetStatusEvent;

   public class Player extends Sprite {

-    private var position: uint = 0;
+    private var posterUrl: String;
+    private var videoUrl: String;

-    private var posterContainer: Sprite;
     private var poster: Loader;
     private var video: Video;
+    private var posterContainer: Sprite;

     private var connection: NetConnection;
+    private var stream: NetStream;

     public function Player() {
       stage.align = StageAlign.TOP_LEFT;
       stage.scaleMode = StageScaleMode.NO_SCALE;

-      loadPoster(loaderInfo.parameters.poster);
-      loadVideo(loaderInfo.parameters.video);
+      posterUrl = loaderInfo.parameters.poster;
+      videoUrl = loaderInfo.parameters.video;
+
+      setBackgroundColor();
+      loadPoster();
+      loadVideo();
     }

-    private function loadPoster(url: String): void {
+    private function setBackgroundColor(): void {
+      graphics.beginFill(0x000000, 1);
+      graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
+      graphics.endFill();
+    }
+
+    private function loadPoster(): void {
       posterContainer = new Sprite();
       addChild(posterContainer);

@@ -38,10 +49,11 @@
       poster.contentLoaderInfo.addEventListener(Event.COMPLETE, function(): void {
         posterContainer.addChild(poster);
       });
-      poster.load(new URLRequest(url));
+
+      poster.load(new URLRequest(posterUrl));
     }

-    private function loadVideo(url: String): void {
+    private function loadVideo(): void {
       connection = new NetConnection();
       connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
       connection.connect(null);
@@ -60,11 +72,11 @@

       posterContainer.visible = false;

-      var stream: NetStream = new NetStream(connection);
+      stream = new NetStream(connection);
       stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
       video.attachNetStream(stream);

-      stream.play(loaderInfo.parameters.video);
+      stream.play(videoUrl);
     }

   }


FragmentLoader : reset _levelNext on seek() so that level switching happens faster

--- src/com/pivotshare/hls/loader/FragmentLoader.as
+++ src/com/pivotshare/hls/loader/FragmentLoader.as
@@ -401,7 +401,10 @@
                  * loading to determine if we should stay at current bitrate.
                  */
                 case LOADING_IN_PROGRESS:
-                     if(_hls.autoLevel && _fragCurrent.level) {
+                    /* only monitor fragment loading rate if in auto mode, AND
+                       we are not loading the first segment AND
+                       current level is not the lowest level */
+                    if(_hls.autoLevel && !_manifestJustLoaded && _fragCurrent.level) {

                         // monitor fragment load progress after half of expected fragment duration,to stabilize bitrate
                         var requestDelay : int = getTimer() - _metrics.loading_request_time;


bugfix in background renderer

bugfix in background renderer

git-svn-id: e38e7cdd6ace00d8230583a2d3b43e9a55f5c011@154 bc4816be-ef27-423a-9c4d-fc420be121a2

--- src/reprise/ui/renderers/DefaultBackgroundRenderer.as
+++ src/reprise/ui/renderers/DefaultBackgroundRenderer.as
@@ -560,7 +560,7 @@

 			var scale9Rect : Rectangle = new Rectangle();
 			scale9Rect.top = m_styles.backgroundScale9RectTop;
-			scale9Rect.left = m_styles.backgroundScale9RectRight;
+			scale9Rect.left = m_styles.backgroundScale9RectLeft;
 			scale9Rect.width = imgWidth - m_styles.backgroundScale9RectRight -
 				m_styles.backgroundScale9RectLeft;
 			scale9Rect.height = imgHeight - m_styles.backgroundScale9RectTop -


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/framework/src/mx/validators/RegExpValidationResult.as
+++ frameworks/projects/framework/src/mx/validators/RegExpValidationResult.as
@@ -28,6 +28,11 @@
  *  used with regular expressions.

  *
  *  @see mx.events.ValidationResultEvent
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class RegExpValidationResult extends ValidationResult
 {
@@ -55,6 +60,11 @@
      *  @param matchedIndex Index of the matching String.
      *
      *  @param matchedSubstrings Array of substring matches.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function RegExpValidationResult(isError:Boolean,
 										   subField:String = "",
@@ -84,6 +94,11 @@
 	/**
 	 *  An integer that contains the starting index
 	 *  in the input String of the match.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var matchedIndex:int;

@@ -94,6 +109,11 @@
 	/**
 	 *  A String that contains the substring of the input String
 	 *  that matches the regular expression.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var matchedString:String;

@@ -107,6 +127,11 @@
 	 *	If no substring matches are found, this Array is of length 0.
 	 *	Use matchedSubStrings[0] to access
 	 *  the first substring match.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var matchedSubstrings:Array;
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 21557
Author:   jasonsj@adobe.com
Date:     2011-07-12T22:11:43.595367Z

Log Message:
-----------
Initial checkin for Callout/CalloutButton and mobile check-in tests. (Attempt #2 to address dependency checker issue from 21536)

* Refactored pop up transformations from PopUpAnchor.applyPopUpTransform() to mx.utils.PopUpUtil.applyPopUpTransform()
* CalloutPosition.AUTO not yet implemented
* Visuals are not the final XD design.

QE notes:
Doc notes:
Bugs:
Reviewer: chiedozi, jszeto
Tests run: checkintests, checkintests-mobile
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/.flexLibProperties</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutPosition.as" copyfrom-rev="21541" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutPosition.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ArrowDirection.as" copyfrom-rev="21541" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ArrowDirection.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/4.y/frameworks/tests/airMobileBasicTests/src/mobile/views/TestCalloutButton.mxml" copyfrom-rev="21541" action="A">/private/flex/sdk/branches/4.y/frameworks/tests/airMobileBasicTests/src/mobile/views/TestCalloutButton.mxml</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as" copyfrom-rev="21541" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/.actionScriptProperties</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/.flexLibProperties</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/utils/PopUpUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/.actionScriptProperties</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as" copyfrom-rev="21541" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/tests/airMobileBasicTests/src/airMobileBasicTests-config.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/manifest.xml</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutButtonSkin.as" copyfrom-rev="21541" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutButtonSkin.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/4.y/frameworks/tests/airMobileBasicTests/src/mobile/scripts/CalloutButtonTestScript.mxml" copyfrom-rev="21541" action="A">/private/flex/sdk/branches/4.y/frameworks/tests/airMobileBasicTests/src/mobile/scripts/CalloutButtonTestScript.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/.actionScriptProperties</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as" copyfrom-rev="21541" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/.flexLibProperties</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/tests/airMobileBasicTests/src/airMobileBasicTests-app.xml</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as
@@ -273,6 +273,8 @@

             // This will create the skin and attach it
             PopUpManager.addPopUp(this, owner, modal);
+
+            positionPopUp();
         }

         // Change state *after* we pop up, as the skin needs to go be in the initial "closed"
@@ -283,6 +285,20 @@
             skin.addEventListener(FlexEvent.STATE_CHANGE_COMPLETE, stateChangeComplete_handler);
         else
             stateChangeComplete_handler(null); // Call directly
+    }
+
+    /**
+     *  Positions the popUp after the popUp is added to PopUpManager but before any
+     *  state transitions occur.
+     *
+     *  @langversion 3.0
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    protected function positionPopUp():void
+    {
+        // subclasses will implement custom positioning
+        // e.g. PopUpManager.centerPopUp()
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 10601
Author:   gosmith@adobe.com
Date:     2009-09-25T21:12:48.276084Z

Log Message:
-----------
TextBase no longer overrides validateBaselinePosition(). It was the only UIComponent to do so. Since the override didn't have the same logic as in UIComponent for the case where the component's actual width or height has not yet been calculated, it caused the baselinePosition of a Spark Label or RichText to be reported as 0 if you access it early.

QE notes: None
Doc notes: None
Bugs: SDK-23411
Reviewer: Hans, Evtim
Tests run: ant checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
@@ -902,33 +902,6 @@
         }
     }

-    /**
-     *  @private
-     *  Used to ensure baselinePosition will reflect something
-     *  reasonable.
-     */
-    override mx_internal function validateBaselinePosition():Boolean
-    {
-        if (!parent)
-            return false;
-
-        // Ensure we're validated and that we have something to
-        // compute our baseline from.
-        var isEmpty:Boolean = (text == "");
-        text = isEmpty ? "Wj" : text;
-
-        if (invalidatePropertiesFlag ||
-        	invalidateSizeFlag ||
-            invalidateDisplayListFlag ||
-            isEmpty)
-        {
-            validateNow();
-            text = isEmpty ? "" : text;
-        }
-
-        return true;
-    }
-
     //--------------------------------------------------------------------------
     //
     //  Event handlers


Transferred from the Adobe Open Source Subversion Repository

Revision: 19635
Author:   aharui@adobe.com
Date:     2011-01-07T00:25:18.039632Z

Log Message:
-----------
revert the layout changes from svn 18635.  Management feels that there isn't enough time to thoroughly test the changes.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/layoutClasses/PriorityQueue.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Application.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/SkinnableContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/BitmapImage.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.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/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LinearLayoutVector.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/IContainerInvalidating.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="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ILayoutManagerContainerClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/IStyleManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Container.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
@@ -23,10 +23,8 @@

 import flashx.textLayout.compose.TextLineRecycler;

-import mx.core.FlexVersion;
 import mx.core.IFlexModuleFactory;
 import mx.core.UIComponent;
-import mx.core.UIComponentGlobals;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
 import mx.resources.IResourceManager;
@@ -159,9 +157,8 @@
                 "core", "truncationIndicator");
         }

-        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
-            addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
-
+        addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
+
         // Register as a weak listener for "change" events from ResourceManager.
         // If TextBases registered as a strong listener,
         // they wouldn't get garbage collected.
@@ -225,6 +222,13 @@
      *  The value of bounds.height, before the compose was done.
      */
     mx_internal var _composeHeight:Number;
+
+    /**
+     *  @private
+     *  Cache the width constraint as set by the layout in setLayoutBoundsSize()
+     *  so that text reflow can be calculated during a subsequent measure pass.
+     */
+    private var _widthConstraint:Number = NaN;

     /**
      *  @private
@@ -519,7 +523,7 @@
         // _widthConstraint trumps even explicitWidth as some layouts may choose
         // to specify width different from the explicit.
         var constrainedWidth:Number =
-            !isNaN(this.estimatedWidth) ? this.estimatedWidth : explicitWidth;
+            !isNaN(_widthConstraint) ? _widthConstraint : explicitWidth;

         // for measurement, try not to collapse so small we don't measure
         // anything
@@ -535,20 +539,17 @@
         // x and/or y may not be 0.
         var newMeasuredHeight:Number = Math.ceil(bounds.bottom);

-        // If the measured height is not affected, then set constrained
-        // width measurement and exit early
-        if (!isNaN(constrainedWidth) && measuredHeight == newMeasuredHeight)
-        {
-            measuredWidth = Math.ceil(bounds.width);
+        // If the measured height is not affected, then constrained
+        // width measurement is not neccessary.
+        if (!isNaN(_widthConstraint) && measuredHeight == newMeasuredHeight)
             return;
-        }

         // Call super.measure() here insted of in the beginning of the method,
         // as it zeroes the measuredWidth, measuredHeight and these values will
         // still be valid if we decided to do an early return above.
         super.measure();

-        measuredWidth = Math.ceil(bounds.width);
+        measuredWidth = Math.ceil(bounds.right);
         measuredHeight = newMeasuredHeight;

         // Remember the number of text lines during measure. We can use this to
@@ -560,37 +561,6 @@
     }

     /**
-     *  @inheritDoc
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10.2
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-	override public function setEstimatedSize(estimatedWidth:Number = NaN,
-												estimatedHeight:Number = NaN,
-												invalidateSizeAllowed:Boolean = true):void
-    {
-        var oldcw:Number = this.estimatedWidth;
-        var oldch:Number = this.estimatedHeight;
-        super.setEstimatedSize(estimatedWidth, estimatedHeight, invalidateSizeAllowed);
-        if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_5)
-        {
-			var sameWidth:Boolean = isNaN(estimatedWidth) && isNaN(oldcw) || estimatedWidth == oldcw;
-			var sameHeight:Boolean = isNaN(estimatedHeight) && isNaN(oldch) || estimatedHeight == oldch;
-			if (!(sameHeight && sameWidth))
-            {
-                if (!isNaN(explicitWidth) &&
-                    !isNaN(explicitHeight))
-                    return;
-
-				if (invalidateSizeAllowed)
-                	invalidateSize();
-            }
-        }
-    }
-
-    /**
      *  @private
      *  We override the setLayoutBoundsSize to determine whether to perform
      *  text reflow. This is a convenient place, as the layout passes NaN
@@ -600,97 +570,57 @@
                                                  height:Number,
                                                  postLayoutTransform:Boolean = true):void
     {
-		if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_5)
-		{
-			var newEstimates:Boolean = false;
-			var cw:Number = estimatedWidth;
-			var ch:Number = estimatedHeight;
-			var oldcw:Number = cw;
-			var oldch:Number = ch;
-			// we got lied to, probably the constraints weren't accurate or
-			// couldn't be computed
-			if (!isNaN(width))
-			{
-				if (isNaN(estimatedWidth) || width != estimatedWidth)
-				{
-					cw = width;
-					newEstimates = true;
-				}
-			}
-			// we got lied to, probably the constraints weren't accurate or
-			// couldn't be computed
-			if (!isNaN(height))
-			{
-				if (isNaN(estimatedHeight) || height != estimatedHeight)
-				{
-					ch = height;
-					newEstimates = true;
-				}
-			}
-			if (newEstimates)
-			{
-				setEstimatedSize(cw, ch);
-
-				// re-measure with the new estimated size
-				UIComponentGlobals.layoutManager.validateClient(this, true);
-
-				// set estimated size back to what it was
-				setEstimatedSize(oldcw, oldch, false);
-			}
-		}
         super.setLayoutBoundsSize(width, height, postLayoutTransform);
-
-        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
-        {
-            // TODO (egeorgie): possible optimization - if we reflow the text
-            // immediately, we'll be able to detect whether the estimated
-            // width causes the measured height to change.
-            // Also certain layouts like vertical/horizontal will
-            // be able to get the better performance as subsequent elements
-            // will not go through updateDisplayList twice. This also has the
-            // potential of avoiding text compositing during measure.
+
+        // TODO (egeorgie): possible optimization - if we reflow the text
+        // immediately, we'll be able to detect whether the constrained
+        // width causes the measured height to change.
+        // Also certain layouts like vertical/horizontal will
+        // be able to get the better performance as subsequent elements
+        // will not go through updateDisplayList twice. This also has the
+        // potential of avoiding text compositing during measure.
+
+        // Did we already constrain the width?
+        if (_widthConstraint == width)
+            return;
+
+        // No reflow for explicit lineBreak
+        if (getStyle("lineBreak") == "explicit")
+            return;
+
+        // If we don't measure
+        if (canSkipMeasurement())
+            return;
+
+        if (!isNaN(explicitHeight))
+            return;
+
+        // We support reflow only in the case of constrained width and
+        // unconstrained height. Note that we compare with measuredWidth,
+        // as for example the TextBase can be
+        // constrained by the layout with "left" and "right", but the
+        // container width itself may not be constrained and it would depend
+        // on the element's measuredWidth.
+        var constrainedWidth:Boolean = !isNaN(width) && (width != measuredWidth) && (width != 0);
+        if (!constrainedWidth)
+            return;

-            // Did we already constrain the width?
-            if (estimatedWidth == width)
-                return;
-
-            // No reflow for explicit lineBreak
-            if (getStyle("lineBreak") == "explicit")
-                return;
-
-            // If we don't measure
-            if (canSkipMeasurement())
-                return;
-
-            if (!isNaN(explicitHeight))
-                return;
-
-            // We support reflow only in the case of constrained width and
-            // constrained height. Note that we compare with measuredWidth,
-            // as for example the TextBase can be
-            // constrained by the layout with "left" and "right", but the
-            // container width itself may not be constrained and it would depend
-            // on the element's measuredWidth.
-            var widthConstrained:Boolean = !isNaN(width) && (width != measuredWidth) && (width != 0);
-            if (!widthConstrained)
-                return;
-
-            // Special case - if we have a single line, then having a constraint larger
-            // than the measuredWidth will not result in measuredHeight change, as we
-            // will still have only a single line
-            if (_measuredOneTextLine && width > measuredWidth)
-                return;
-
-            // We support reflow only when we don't have a transform.
-            // We could add support for scale, but not skew or rotation.
-            if (postLayoutTransform && hasComplexLayoutMatrix)
-                return;
-
-            setEstimatedSize(width, estimatedHeight);
-            invalidateSize();
-        }
-    }
-
+        // Special case - if we have a single line, then having a constraint larger
+        // than the measuredWidth will not result in measuredHeight change, as we
+        // will still have only a single line
+        if (_measuredOneTextLine && width > measuredWidth)
+            return;
+
+        // We support reflow only when we don't have a transform.
+        // We could add support for scale, but not skew or rotation.
+        if (postLayoutTransform && hasComplexLayoutMatrix)
+			return;
+
+        _widthConstraint = width;
+        invalidateSize();
+
+    }
+
     /**
      *  @private
      */
@@ -781,7 +711,6 @@
         g.beginFill(uint(backgroundColor), backgroundAlpha);
         g.drawRect(0, 0, unscaledWidth, unscaledHeight);
         g.endFill();
-
     }

     //--------------------------------------------------------------------------
@@ -1147,9 +1076,8 @@
     {
         // Make sure that if we did a double pass, next time around we'll
         // measure normally
-        setEstimatedSize(NaN, estimatedHeight);
-    }
-
+        _widthConstraint = NaN;
+    }
 }

 }


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

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


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

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

 package mx.collections.errors
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 22579
Author:   smgilson@adobe.com
Date:     2011-09-15T19:08:04.587501Z

Log Message:
-----------
Add images for mobile components without running examples

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/BusyIndicator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ViewMenu.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
@@ -307,6 +307,13 @@
  *         of the action area.

  *

  *
+ *
The following images shows the ActionBar with a home button in the navigation area,
+ *  a text input control in the title area, and a search button in the action area:

+ *
+ *

+ *
+ *

+ *
  *
For a mobile application with a single section, meaning a single
  *  ViewNavigator container, all views share the same action bar.
  *  For a mobile application with multiple sections, meaning one with multiple


Transferred from the Adobe Open Source Subversion Repository

Revision: 13756
Author:   hmuller@adobe.com
Date:     2010-01-25T19:42:14.082913Z

Log Message:
-----------
Mirroring changes, fixes.

- Removed ILayout interface, added mirroring API to IVisualElement.
- Moved layoutDirection="ltr" initialization from TextBase to defaults.css.   Removed similar initialization from DefaultItemRenderer (it wasn't needed).
- The 'get layoutDirection()' method for UIMovieClip, GraphicElement, and SpriteVisualElement now queries the parent if the local value is "inherit".
- Use @inheritDoc instead of explicitly @copying interface methods' ASDoc.   Don't call invalidateLayoutDirection() if FlexVersion.compatibilityVersion is < 4.0.
- Don't call invalidateLayout() for a child unless either its layoutDirection has changed, or its parent's layoutDirection has changed.

QE notes: These changes were cycloned.
Doc notes:
Bugs: sdk-25204, sdk-25209
Reviewer: Evtim
Tests run:
Is noteworthy for integration: no

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="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutDirection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.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/spark/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/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as
+++ frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as
@@ -155,7 +155,6 @@
     public function DefaultItemRenderer()
     {
         super();
-        layoutDirection = "ltr";
         addHandlers();
     }


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

--- frameworks/projects/sparkskins/src/mx/skins/spark/DataGridSortArrow.as
+++ frameworks/projects/sparkskins/src/mx/skins/spark/DataGridSortArrow.as
@@ -1,4 +1,14 @@

+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.skins.spark
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/framework/src/mx/collections/ListCollectionView.as
+++ frameworks/projects/framework/src/mx/collections/ListCollectionView.as
@@ -39,6 +39,11 @@
  *  Dispatched when the ICollectionView has been updated in some way.
  *
  *  @eventType mx.events.CollectionEvent.COLLECTION_CHANGE
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Event(name="collectionChange", type="mx.events.CollectionEvent")]

@@ -71,6 +76,11 @@
  *  collectionChange="No default"
  *  />
  *

+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class ListCollectionView extends Proxy
        implements ICollectionView, IList, IMXMLObject
@@ -141,6 +151,11 @@
      *  The localIndex property should never contain anything
      *  that is not in the source, but may not have everything in the source.
      *  This property is null when there is no sort.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     protected var localIndex:Array;

@@ -154,6 +169,11 @@
      *  The ListCollectionView constructor.
      *
      *  @param list the IList this ListCollectionView is meant to wrap.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function ListCollectionView(list:IList = null)
     {
@@ -173,6 +193,11 @@
       *  @param document The MXML document containing this ListCollectionView.
       *
       *  @param id Ignored.
+      *
+      *  @langversion 3.0
+      *  @playerversion Flash 9
+      *  @playerversion AIR 1.1
+      *  @productversion Flex 3
       */
     public function initialized(document:Object, id:String):void
     {
@@ -193,6 +218,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get length():int
     {
@@ -225,6 +255,11 @@

     /**
      *  The IList that this collection view wraps.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get list():IList
     {
@@ -280,6 +315,11 @@
      *  @inheritDoc
      *
      *  @see #refresh()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get filterFunction():Function
     {
@@ -312,6 +352,11 @@
      *  @inheritDoc
      *
      *  @see #refresh()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get sort():Sort
     {
@@ -338,6 +383,11 @@
      *
      *  @see #enableAutoUpdate()
      *  @see mx.events.CollectionEvent
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function contains(item:Object):Boolean
     {
@@ -349,6 +399,11 @@
      *
      *  @see mx.collections.ICollectionView#enableAutoUpdate()
      *  @see mx.events.CollectionEvent
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function disableAutoUpdate():void
     {
@@ -359,6 +414,11 @@
      *  @inheritDoc
      *
      *  @see mx.collections.ICollectionView#disableAutoUpdate()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function enableAutoUpdate():void
     {
@@ -374,6 +434,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function createCursor():IViewCursor
     {
@@ -386,6 +451,11 @@
      *  @see mx.events.CollectionEvent
      *  @see mx.core.IPropertyChangeNotifier
      *  @see mx.events.PropertyChangeEvent
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function itemUpdated(item:Object, property:Object = null,
                                 oldValue:Object = null,
@@ -396,6 +466,11 @@

     /**
      * @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function refresh():Boolean
     {
@@ -412,6 +487,11 @@

     /**
      * @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function getItemAt(index:int, prefetch:int = 0):Object
     {
@@ -436,6 +516,11 @@

     /**
      * @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function setItemAt(item:Object, index:int):Object
     {
@@ -464,6 +549,11 @@

     /**
      * @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function addItem(item:Object):void
     {
@@ -472,6 +562,11 @@

     /**
      * @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function addItemAt(item:Object, index:int):void
     {
@@ -506,6 +601,11 @@
      *  the list in the order they are passed.
      *
      *  @param IList The list of items to add to the current list
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function addAll(addList:IList):void
     {
@@ -520,6 +620,11 @@
      *  @param IList The list of items to add to the current list
      *  @param index The location of the current list to place the new items.
      *  @throws RangeError if index is less than 0 or greater than the length of the list.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function addAllAt(addList:IList, index:int):void
     {
@@ -532,6 +637,11 @@

     /**
      * @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function getItemIndex(item:Object):int
     {
@@ -611,6 +721,11 @@

     /**
      * @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function removeItemAt(index:int):Object
     {
@@ -632,6 +747,11 @@

     /**
      * Remove all items from the list.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function removeAll():void
     {
@@ -654,6 +774,11 @@

     /**
      * @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function toArray():Array
     {
@@ -673,6 +798,11 @@
      *  Prints the contents of this view to a string and returns it.
      *
      *  @return The contents of this view, in string form.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function toString():String
     {
@@ -833,6 +963,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function addEventListener(type:String,
                                      listener:Function,
@@ -846,6 +981,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function removeEventListener(type:String,
                                         listener:Function,
@@ -856,6 +996,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function dispatchEvent(event:Event):Boolean
     {
@@ -864,6 +1009,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function hasEventListener(type:String):Boolean
     {
@@ -872,6 +1022,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function willTrigger(type:String):Boolean
     {
@@ -895,6 +1050,11 @@
      *         that needs to be preserved.
      *  @param dispatch true if the view should dispatch a corresponding
      *                 CollectionEvent with kind ADD (default is true)
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function addItemsToView(items:Array, sourceLocation:int,
                                       dispatch:Boolean = true):int
@@ -971,6 +1131,11 @@
      *  @param mode the mode to pass to Sort.findItem (see Sort)
      *  @param insertIndex true if it should find the insertion point
      *  @return the index where the item is located, -1 if not found
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     mx_internal function findItem(values:Object, mode:String, insertIndex:Boolean = false):int
     {
@@ -994,6 +1159,11 @@
      *  @param index the index to bookmark
      *  @return a new bookmark instance
      *  @throws a CollectionViewError if the index is out of bounds
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     mx_internal function getBookmark(index:int):ListCollectionViewBookmark
     {
@@ -1031,6 +1201,11 @@
      *  @param bookmark the bookmark to locate
      *  @return the new location of the bookmark, -1 if not in the view anymore
      *  @throws CollectionViewError if the bookmark is invalid
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     mx_internal function getBookmarkIndex(bookmark:CursorBookmark):int
     {
@@ -1061,6 +1236,11 @@

     /**
      * The view is a listener of CollectionEvents on its underlying IList
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function listChangeHandler(event:CollectionEvent):void
     {
@@ -1105,6 +1285,11 @@
     /**
      * Given a set of PropertyChangeEvents go through and update the view.
      * This is currently not optimized.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function handlePropertyChangeEvents(events:Array):void
     {
@@ -1229,6 +1414,11 @@
      * When enableAutoUpdates pushes autoUpdateCounter back down to 0
      * this method will execute to consolidate the pending update
      * events or turn it into a massive refresh().
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function handlePendingUpdates():void
     {
@@ -1332,6 +1522,11 @@

     /**
      * Remove the old value from the view and replace it with the value
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function moveItemInView(item:Object,
                                       dispatch:Boolean = true, updateEventItems:Array = null):void
@@ -1399,6 +1594,11 @@

     /**
      * Copy all of the data from the source list into the local index.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function populateLocalIndex():void
     {
@@ -1421,6 +1621,11 @@
      *  @param sourceLocation the location within the list where the item was removed
      *  @param dispatch true if the view should dispatch a corresponding
      *                 CollectionEvent with kind REMOVE (default is true)
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function removeItemsFromView(items:Array, sourceLocation:int, dispatch:Boolean = true):void
     {
@@ -1457,6 +1662,11 @@
      * Items is an array of PropertyChangeEvents so replace the oldValues with the new
      * newValues.  Start at the location specified and move forward, it's unlikely
      * that the length of items is > 1.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function replaceItemsInView(items:Array,
                                           location:int,
@@ -1525,6 +1735,11 @@
  *  Dispatched whenever the cursor position is updated.
  *
  *  @eventType mx.events.FlexEvent.CURSOR_UPDATE
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Event(name="cursorUpdate", type="mx.events.FlexEvent")]

@@ -1562,6 +1777,11 @@
      *  Constructor.
      *
      *
Creates the cursor for the view.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function ListCollectionViewCursor(view:ListCollectionView)
     {
@@ -1626,6 +1846,11 @@
     /**
      *  Get a reference to the view that this cursor is associated with.
      *  @return the associated ICollectionView
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get view():ICollectionView
     {
@@ -1645,6 +1870,11 @@
      *  @see mx.collections.IViewCursor#seek
      *  @see mx.collections.IViewCursor#beforeFirst
      *  @see mx.collections.IViewCursor#afterLast
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get current():Object
     {
@@ -1664,6 +1894,11 @@
      *
      *  @see mx.collections.IViewCursor#current
      *  @see mx.collections.IViewCursor#seek
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get bookmark():CursorBookmark
     {
@@ -1681,6 +1916,11 @@
      * true if the current is sitting before the first item in the view.
      * If the ICollectionView is empty (length == 0) this will always
      * be true.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get beforeFirst():Boolean
     {
@@ -1694,6 +1934,11 @@
      * true if the cursor is sitting after the last item in the view.
      * If the ICollectionView is empty (length == 0) this will always
      * be true.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get afterLast():Boolean
     {
@@ -1732,6 +1977,11 @@
      *  @see mx.collections.IViewCursor#findFirst
      *  @see mx.collections.IViewCursor#findLast
      *  @see mx.collections.errors.ItemPendingError
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function findAny(values:Object):Boolean
     {
@@ -1783,6 +2033,11 @@
      *  @see mx.collections.IViewCursor#findAny
      *  @see mx.collections.IViewCursor#findLast
      *  @see mx.collections.errors.ItemPendingError
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
      public function findFirst(values:Object):Boolean
     {
@@ -1835,6 +2090,11 @@
      *  @see mx.collections.IViewCursor#findAny
      *  @see mx.collections.IViewCursor#findFirst
      *  @see mx.collections.errors.ItemPendingError
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function findLast(values:Object):Boolean
     {
@@ -1864,6 +2124,11 @@
      * If the cursor is afterLast the insertion
      * will happen at the end of the View.  If the cursor is
      * beforeFirst on a non-empty view an error will be thrown.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function insert(item:Object):void
     {
@@ -1917,6 +2182,11 @@
      *       cursor.moveNext();
      *     }
      *

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function moveNext():Boolean
     {
@@ -1966,6 +2236,11 @@
      *        cursor.movePrevious();
      *      }
      *

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */

     public function movePrevious():Boolean
@@ -1994,6 +2269,11 @@
      * Remove the current item and return it.  If the cursor is
      * beforeFirst or afterLast throw a
      * CursorError.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function remove():Object
     {
@@ -2066,6 +2346,11 @@
      *           If the iteration direction is known at the time of the request
      *           the appropriate amount of data can be returned ahead of the
      *           request to iterate it.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function seek(bookmark:CursorBookmark, offset:int = 0, prefetch:int = 0):void
     {
@@ -2277,6 +2562,11 @@
      * ItemPendingError.  If the item is not in the current view -1 will be
      * returned.  This method may also return -1 if index-based location is not
      * possible.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     override public function getViewIndex():int
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 20251
Author:   klin@adobe.com
Date:     2011-02-09T21:45:28.416368Z

Log Message:
-----------
Fix our distribution algorithm for distributing space among flexible children. Before, we would remove any unused space if the sum of the percentages was less than 100. However, this didn't take into account min and max sizes. Now, we take into account the min and max sizes while also recalculating the unused space for each iteration. This space is also added to the final excess space that's returned.

Also, fix bugs in ConstraintColumn/Row where min/max sizes were not defaulting to 0/10000.

QE notes: No
Doc notes: No
Bugs: SDK-29415, SDK-29424
Reviewer: Evtim
Tests run: cyclone server, checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/containers/utilityClasses/ConstraintColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/containers/utilityClasses/ConstraintRow.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/containers/utilityClasses/Flex.as</path>

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

--- frameworks/projects/framework/src/mx/containers/utilityClasses/Flex.as
+++ frameworks/projects/framework/src/mx/containers/utilityClasses/Flex.as
@@ -339,15 +339,7 @@
 		var numChildren:int = childInfoArray.length;
 		var flexConsumed:Number; // space consumed by flexible compontents
 		var done:Boolean;
-
-		// We now do something a little tricky so that we can
-		// support partial filling of the space. If our total
-		// percent < 100% then we can trim off some space.
-		var unused:Number = spaceToDistribute -
-							(spaceForChildren * totalPercent / 100);
-		if (unused > 0)
-			spaceToDistribute -= unused;
-
+
 		// Continue as long as there are some remaining flexible children.
 		// The "done" flag isn't strictly necessary, except that it catches
 		// cases where round-off error causes totalPercent to not exactly
@@ -357,6 +349,17 @@
 			flexConsumed = 0; // space consumed by flexible compontents
 			done = true; // we are optimistic

+            // We now do something a little tricky so that we can
+            // support partial filling of the space. If our total
+            // percent < 100% then we can trim off some space.
+            // This unused space can be used to fulfill mins and maxes.
+            var unused:Number = spaceToDistribute -
+                                (spaceForChildren * totalPercent / 100);
+            if (unused > 0)
+                spaceToDistribute -= unused;
+            else
+                unused = 0;
+
 			// Space for flexible children is the total amount of space
 			// available minus the amount of space consumed by non-flexible
 			// components.Divide that space in proportion to the percent
@@ -391,7 +394,16 @@
 					childInfoArray[numChildren] = childInfo;

 					totalPercent -= childInfo.percent;
-					spaceToDistribute -= min;
+                    // Use unused space first before reducing flexible space.
+                    if (unused >= min)
+                    {
+                        unused -= min;
+                    }
+                    else
+                    {
+                        spaceToDistribute -= min - unused;
+                        unused = 0;
+                    }
 					done = false;
 					break;
 				}
@@ -404,7 +416,16 @@
 					childInfoArray[numChildren] = childInfo;

 					totalPercent -= childInfo.percent;
-					spaceToDistribute -= max;
+                    // Use unused space first before reducing flexible space.
+                    if (unused >= max)
+                    {
+                        unused -= max;
+                    }
+                    else
+                    {
+                        spaceToDistribute -= max - unused;
+                        unused = 0;
+                    }
 					done = false;
 					break;
 				}
@@ -418,7 +439,7 @@
 		}
 		while (!done);

-		return Math.max(0, Math.floor(spaceToDistribute - flexConsumed))
+		return Math.max(0, Math.floor((spaceToDistribute + unused) - flexConsumed))
 	}

 	/**


Transferred from the Adobe Open Source Subversion Repository

Revision: 16602
Author:   jasonsj@adobe.com
Date:     2010-06-21T18:38:18.429731Z

Log Message:
-----------
ActionBar and SlideViewTransition prototypes

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/manifest.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/ViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/SlideViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
@@ -1,117 +1,581 @@
 package spark.components
 {
-    import spark.components.supportClasses.SkinnableComponent;
-    import spark.events.ViewNavigatorEvent;
-
-    public class ActionBar extends SkinnableComponent
-    {
-        public function ActionBar()
-        {
-            super();
-
-            title = "Title";
-        }
-
-
-        [SkinPart(required="false")]
-        public var titleField:Label;
-
-        [SkinPart(required="false")]
-        public var contentGroup:Group;
-
-        private var _titleChanged:Boolean = false;
-
-        // dataProvider
-        private var _dataProvider:ViewNavigator;
-        public function get dataProvider():ViewNavigator
-        {
-            return _dataProvider;
-        }
-        public function set dataProvider(value:ViewNavigator):void
-        {
-            if (_dataProvider)
+import flash.events.Event;
+import flash.events.MouseEvent;
+
+import mx.core.IVisualElement;
+import mx.core.mx_internal;
+import mx.utils.BitFlagUtil;
+
+import spark.components.Button;
+import spark.components.Group;
+import spark.components.Label;
+import spark.components.supportClasses.ButtonBase;
+import spark.components.supportClasses.INavigationBar;
+import spark.components.supportClasses.SkinnableComponent;
+import spark.components.supportClasses.TextBase;
+import spark.events.ViewNavigatorEvent;
+import spark.layouts.supportClasses.LayoutBase;
+
+use namespace mx_internal;
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+/**
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+[Style(name="backgroundAlpha", type="Number", inherit="no")]
+
+/**
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+public class ActionBar extends SkinnableComponent
+{
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    mx_internal static const CONTENT_PROPERTY_FLAG:uint = 1 << 0;
+
+    /**
+     *  @private
+     */
+    mx_internal static const LAYOUT_PROPERTY_FLAG:uint = 1 << 1;
+
+    /**
+     *  @private
+     */
+    mx_internal static const NAVIGATION_GROUP_PROPERTIES_INDEX:uint = 0;
+
+    /**
+     *  @private
+     */
+    mx_internal static const TITLE_GROUP_PROPERTIES_INDEX:uint = 1;
+
+    /**
+     *  @private
+     */
+    mx_internal static const ACTION_GROUP_PROPERTIES_INDEX:uint = 2
+
+    /**
+     *  @private
+     */
+    mx_internal var contentGroupProperties:Array = [{}, {}, {}];
+
+    /**
+     * Cache original skin layouts
+     * @private
+     */
+    mx_internal var contentGroupLayouts:Array = [null, null, null];
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function ActionBar()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    private var _dataProvider:ViewNavigator;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Skin parts
+    //
+    //--------------------------------------------------------------------------
+
+    [SkinPart(required="false")]
+
+    /**
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public var navigationGroup:Group;
+
+    [SkinPart(required="false")]
+
+    /**
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public var titleGroup:Group;
+
+    [SkinPart(required="false")]
+
+    /**
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public var actionGroup:Group;
+
+    [SkinPart(required="false")]
+
+    /**
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public var backButton:ButtonBase;
+
+    [SkinPart(required="false")]
+
+    /**
+     *  The skin part that defines the appearance of the
+     *  title text in the container.
+     *
+     *  @see spark.skins.mobile.ActionBarSkin
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4
+     */
+    public var titleDisplay:Label; // TODO fix after Text spec is drafted
+
+    //----------------------------------
+    //  backButtonLabel
+    //----------------------------------
+
+    private var _backButtonLabel:String;
+
+    /**
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get backButtonLabel():String
+    {
+        return _backButtonLabel;
+    }
+
+    /**
+     * @private
+     */
+    public function set backButtonLabel(value:String):void
+    {
+        if (value == _backButtonLabel)
+            return;
+
+        _backButtonLabel = value;
+
+        if (backButton)
+            backButton.label = value;
+    }
+
+    //----------------------------------
+    //  title
+    //----------------------------------
+
+    private var _title:String;
+    private var _titleChanged:Boolean;
+
+    [Bindable]
+
+    /**
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get title():String
+    {
+        return _title;
+    }
+
+    /**
+     *  @private
+     */
+    public function set title(value:String):void
+    {
+        if (value == _title)
+            return;
+
+        _title = value;
+
+        if (titleDisplay)
+            titleDisplay.text = title;
+    }
+
+
+    //----------------------------------
+    //  navigationContent
+    //----------------------------------
+
+    [ArrayElementType("mx.core.IVisualElement")]
+
+    /**
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get navigationContent():Array
+    {
+        if (navigationGroup)
+            return navigationGroup.getMXMLContent();
+        else
+            return contentGroupProperties[NAVIGATION_GROUP_PROPERTIES_INDEX].content
+    }
+
+    /**
+     *  @private
+     */
+    public function set navigationContent(value:Array):void
+    {
+        if (navigationGroup)
+        {
+            navigationGroup.mxmlContent = value;
+            contentGroupProperties[NAVIGATION_GROUP_PROPERTIES_INDEX] =
+                BitFlagUtil.update(contentGroupProperties[NAVIGATION_GROUP_PROPERTIES_INDEX] as uint,
+                    CONTENT_PROPERTY_FLAG, value != null);
+        }
+        else
+            contentGroupProperties[NAVIGATION_GROUP_PROPERTIES_INDEX].content = value;
+
+        invalidateSkinState();
+    }
+
+    //----------------------------------
+    //  navigationLayout
+    //----------------------------------
+
+    /**
+     *  Defines the layout of the navigationGroup.
+     *
+     *  @default HorizontalLayout
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get navigationLayout():LayoutBase
+    {
+        return (navigationGroup) ? navigationGroup.layout : contentGroupProperties[NAVIGATION_GROUP_PROPERTIES_INDEX].layout;
+    }
+
+    /**
+     *  @private
+     */
+    public function set navigationLayout(value:LayoutBase):void
+    {
+        if (navigationGroup)
+        {
+            navigationGroup.layout = (value) ? value : contentGroupLayouts[NAVIGATION_GROUP_PROPERTIES_INDEX];
+            contentGroupProperties[NAVIGATION_GROUP_PROPERTIES_INDEX] =
+                BitFlagUtil.update(contentGroupProperties[NAVIGATION_GROUP_PROPERTIES_INDEX] as uint,
+                LAYOUT_PROPERTY_FLAG, true);
+        }
+        else
+            contentGroupProperties.layout = value;
+    }
+
+    //----------------------------------
+    //  titleContent
+    //----------------------------------
+
+    [ArrayElementType("mx.core.IVisualElement")]
+
+    /**
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get titleContent():Array
+    {
+        if (titleGroup)
+            return titleGroup.getMXMLContent();
+        else
+            return contentGroupProperties[TITLE_GROUP_PROPERTIES_INDEX].content
+    }
+
+    /**
+     *  @private
+     */
+    public function set titleContent(value:Array):void
+    {
+        if (titleGroup)
+        {
+            if (value)
             {
-                _dataProvider.removeEventListener(ViewNavigatorEvent.VIEW_ADD, viewChanged);
+                titleGroup.mxmlContent = value;
             }
-
-            _dataProvider = value;
-            _dataProvider.addEventListener(ViewNavigatorEvent.VIEW_ADD, viewChanged);
-        }
-
-        // title
-        private var _title:String;
-        public function get title():String
-        {
-            return _title;
-        }
-        public function set title(value:String):void
-        {
-            setTitle(value, true);
-        }
-        public function setTitle(value:String, animate:Boolean):void
-        {
-            _title = value;
+            else
+            {
+                titleGroup.mxmlContent = titleDisplay ? [titleDisplay] : null;
+                _titleChanged = true;
+                invalidateProperties();
+            }
+
+            contentGroupProperties[TITLE_GROUP_PROPERTIES_INDEX] =
+                BitFlagUtil.update(contentGroupProperties[TITLE_GROUP_PROPERTIES_INDEX] as uint,
+                    CONTENT_PROPERTY_FLAG, value != null);
+        }
+        else
+            contentGroupProperties[TITLE_GROUP_PROPERTIES_INDEX].content = value;
+
+        invalidateSkinState();
+    }
+
+    //----------------------------------
+    //  titleLayout
+    //----------------------------------
+
+    /**
+     *  Defines the layout of the titleGroup.
+     *
+     *  @default HorizontalLayout
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get titleLayout():LayoutBase
+    {
+        return (titleGroup) ? titleGroup.layout : contentGroupProperties[TITLE_GROUP_PROPERTIES_INDEX].layout;
+    }
+
+    /**
+     *  @private
+     */
+    public function set titleLayout(value:LayoutBase):void
+    {
+        if (titleGroup)
+        {
+            titleGroup.layout = (value) ? value : contentGroupLayouts[TITLE_GROUP_PROPERTIES_INDEX];
+            contentGroupProperties[TITLE_GROUP_PROPERTIES_INDEX] =
+                BitFlagUtil.update(contentGroupProperties[TITLE_GROUP_PROPERTIES_INDEX] as uint,
+                    LAYOUT_PROPERTY_FLAG, true);
+        }
+        else
+            contentGroupProperties.layout = value;
+    }
+
+    //----------------------------------
+    //  actionContent
+    //----------------------------------
+
+    [ArrayElementType("mx.core.IVisualElement")]
+
+    /**
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get actionContent():Array
+    {
+        if (actionGroup)
+            return actionGroup.getMXMLContent();
+        else
+            return contentGroupProperties[ACTION_GROUP_PROPERTIES_INDEX].content
+    }
+
+    /**
+     *  @private
+     */
+    public function set actionContent(value:Array):void
+    {
+        if (actionGroup)
+        {
+            actionGroup.mxmlContent = value;
+            contentGroupProperties[ACTION_GROUP_PROPERTIES_INDEX] =
+                BitFlagUtil.update(contentGroupProperties[ACTION_GROUP_PROPERTIES_INDEX] as uint,
+                    CONTENT_PROPERTY_FLAG, value != null);
+        }
+        else
+            contentGroupProperties[ACTION_GROUP_PROPERTIES_INDEX].content = value;
+
+        invalidateSkinState();
+    }
+
+    //----------------------------------
+    //  actionLayout
+    //----------------------------------
+
+    /**
+     *  Defines the layout of the actionGroup.
+     *
+     *  @default HorizontalLayout
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get actionLayout():LayoutBase
+    {
+        return (actionGroup) ? actionGroup.layout : contentGroupProperties[ACTION_GROUP_PROPERTIES_INDEX].layout;
+    }
+
+    /**
+     *  @private
+     */
+    public function set actionLayout(value:LayoutBase):void
+    {
+        if (actionGroup)
+        {
+            actionGroup.layout = (value) ? value : contentGroupLayouts[ACTION_GROUP_PROPERTIES_INDEX];
+            contentGroupProperties[ACTION_GROUP_PROPERTIES_INDEX] =
+                BitFlagUtil.update(contentGroupProperties[ACTION_GROUP_PROPERTIES_INDEX] as uint,
+                    LAYOUT_PROPERTY_FLAG, true);
+        }
+        else
+            contentGroupProperties.layout = value;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: UIComponent
+    //
+    //--------------------------------------------------------------------------
+
+    override protected function commitProperties():void
+    {
+        super.commitProperties();
+
+        if (titleDisplay && _titleChanged)
+        {
+            _titleChanged = false;
+
+            titleDisplay.includeInLayout = (title != "" && title != null);
+            if (!BitFlagUtil.isSet(contentGroupProperties[TITLE_GROUP_PROPERTIES_INDEX], CONTENT_PROPERTY_FLAG))
+                titleDisplay.text = title;
+        }
+    }
+
+    override protected function partAdded(partName:String, instance:Object):void
+    {
+        super.partAdded(partName, instance);
+
+        var defaultContent:IVisualElement;
+        var group:Group;
+        var index:int = -1;
+
+        if (instance == navigationGroup)
+        {
+            group = navigationGroup;
+            index = NAVIGATION_GROUP_PROPERTIES_INDEX;
+        }
+        else if (instance == titleGroup)
+        {
+            group = titleGroup;
+            index = TITLE_GROUP_PROPERTIES_INDEX;
+            defaultContent = titleDisplay;
+
             _titleChanged = true;
-
-            invalidateProperties();
-        }
-
-        // titleContent
-        private var _titleContent:Array;
-        public function get titleContent():Array
-        {
-            return _titleContent;
-        }
-        public function set titleContent(value:Array):void
-        {
-        }
-        public function setTitleContent(value:Array, animate:Boolean):void
-        {
-        }
-
-        protected function viewChanged(event:ViewNavigatorEvent):void
-        {
-            if (event.view)
-                title = event.view.title;
-            else
-                title = "";
-        }
-
-
-        override protected function commitProperties():void
-        {
-            super.commitProperties();
-
-            if (titleField && _titleChanged)
+        }
+        else if (instance == actionGroup)
+        {
+            group = actionGroup;
+            index = ACTION_GROUP_PROPERTIES_INDEX;
+        }
+        else if (instance == titleDisplay)
+        {
+            titleDisplay.text = title;
+        }
+
+        if (index > -1)
+        {
+            var newContentGroupProperties:uint = 0;
+
+            if (contentGroupProperties[index].content != undefined)
             {
-                titleField.text = _title;
-                titleField.includeInLayout = (_title != "" && _title != null);
+                group.mxmlContent = contentGroupProperties[index].content;
+                newContentGroupProperties = BitFlagUtil.update(newContentGroupProperties,
+                    CONTENT_PROPERTY_FLAG, true);
             }
-        }
-
-        override protected function partAdded(partName:String, instance:Object):void
-        {
-            super.partAdded(partName, instance);
-
-            if (instance == contentGroup)
+
+            if (contentGroupProperties[index].layout !== undefined)
             {
-                if (_titleContent == null)
-                {
-                    if (titleField != null)
-                        contentGroup.mxmlContent = [titleField];
-                }
-                else
-                {
-                    contentGroup.mxmlContent = _titleContent;
-                }
-
-                _titleChanged = true;
+                group.layout = contentGroupProperties.layout;
+                newContentGroupProperties = BitFlagUtil.update(newContentGroupProperties,
+                    LAYOUT_PROPERTY_FLAG, true);
             }
-            else if (instance == titleField)
+
+            if (defaultContent)
             {
-                if (contentGroup && _titleContent == null)
-                    contentGroup.mxmlContent = [titleField];
+                group.mxmlContent = [defaultContent];
             }
-        }
-    }
+
+            contentGroupProperties[index] = newContentGroupProperties;
+            contentGroupLayouts[index] = group.layout;
+        }
+    }
+
+    override protected function partRemoved(partName:String, instance:Object):void
+    {
+        super.partRemoved(partName, instance);
+
+        var group:Group;
+        var index:int = -1;
+
+        if (instance == navigationGroup)
+        {
+            group = navigationGroup;
+            index = NAVIGATION_GROUP_PROPERTIES_INDEX;
+        }
+        else if (instance == titleGroup)
+        {
+            group = titleGroup;
+            index = TITLE_GROUP_PROPERTIES_INDEX;
+        }
+        else if (instance == actionGroup)
+        {
+            group = actionGroup;
+            index = ACTION_GROUP_PROPERTIES_INDEX;
+        }
+
+        if (index > -1)
+        {
+            var newContentGroupProperties:Object = {};
+
+            if (BitFlagUtil.isSet(contentGroupProperties[index] as uint, CONTENT_PROPERTY_FLAG))
+                newContentGroupProperties.content = group.getMXMLContent();
+
+            contentGroupProperties[index] = newContentGroupProperties;
+            group.mxmlContent = null;
+        }
+    }
+}
 }


Clearing cache for a dataSource when it is disposed. Eliminated WeakReferences.

--- WeaveData/src/weave/data/AttributeColumnCache.as
+++ WeaveData/src/weave/data/AttributeColumnCache.as
@@ -15,10 +15,9 @@

 package weave.data
 {
-	import flash.utils.Dictionary;
-
 	import avmplus.getQualifiedClassName;

+	import weave.api.getCallbackCollection;
 	import weave.api.getLinkableDescendants;
 	import weave.api.getSessionState;
 	import weave.api.objectWasDisposed;
@@ -38,7 +37,6 @@
 	import weave.data.DataSources.CachedDataSource;
 	import weave.primitives.Dictionary2D;
 	import weave.primitives.GeneralizedGeometry;
-	import weave.utils.WeakReference;
 	import weave.utils.WeavePromise;

 	/**
@@ -57,24 +55,24 @@

 			// Get the column pointer associated with the hash value.
 			var hashCode:String = Compiler.stringify(metadata);
-			var weakRef:WeakReference = d2d_dataSource_metadataHash_weakRef.get(dataSource, hashCode) as WeakReference;
-			if (weakRef != null && weakRef.value != null)
-			{
-				if (WeaveAPI.SessionManager.objectWasDisposed(weakRef.value))
-					d2d_dataSource_metadataHash_weakRef.remove(dataSource, hashCode);
-				else
-					return weakRef.value as IAttributeColumn;
-			}
-
-			// If no column is associated with this hash value, request the
-			// column from its data source and save the column pointer.
-			var column:IAttributeColumn = dataSource.getAttributeColumn(metadata);
-			d2d_dataSource_metadataHash_weakRef.set(dataSource, hashCode, new WeakReference(column));
-
+			var column:IAttributeColumn = d2d_dataSource_metadataHash_column.get(dataSource, hashCode);
+			if (!column)
+			{
+				// if this is the first time we've seen this data source, add dispose callback
+				if (!d2d_dataSource_metadataHash_column.dictionary[dataSource])
+					getCallbackCollection(dataSource).addDisposeCallback(this, function():void {
+						delete this.d2d_dataSource_metadataHash_column.dictionary[dataSource];
+					});
+
+				// If no column is associated with this hash value, request the
+				// column from its data source and save the column pointer.
+				column = dataSource.getAttributeColumn(metadata);
+				d2d_dataSource_metadataHash_column.set(dataSource, hashCode, column);
+			}
 			return column;
 		}

-		private const d2d_dataSource_metadataHash_weakRef:Dictionary2D = new Dictionary2D(true, true);
+		private const d2d_dataSource_metadataHash_column:Dictionary2D = new Dictionary2D();

 		// TEMPORARY SOLUTION for WeaveArchive to access this cache data
 		public var saveCache:Object = null;
@@ -92,7 +90,8 @@
 				.then(function(_:*):* {
 					// request data from every column
 					var column:IAttributeColumn;
-					for each (column in getLinkableDescendants(WeaveAPI.globalHashMap, IAttributeColumn))
+					var columns:Array = getLinkableDescendants(WeaveAPI.globalHashMap, IAttributeColumn);
+					for each (column in columns)
 					{
 						// simply requesting the keys will cause the data to be requested
 						if (column.keys.length)
@@ -109,9 +108,9 @@
 		{
 			//cache data from AttributeColumnCache
 			var output:Array = [];
-			var cache:Dictionary = d2d_dataSource_metadataHash_weakRef.dictionary;
 			var dataSource:*;
-			for (dataSource in cache)
+			var dataSources:Array = d2d_dataSource_metadataHash_column.primaryKeys();
+			for each (dataSource in dataSources)
 			{
 				var dataSourceName:String = WeaveAPI.globalHashMap.getName(dataSource);

@@ -119,9 +118,10 @@
 				if (!dataSourceName)
 					continue;

-				for (var metadataHash:String in cache[dataSource])
+				var metadataHashes:Array = d2d_dataSource_metadataHash_column.secondaryKeys(dataSource);
+				for each (var metadataHash:String in metadataHashes)
 				{
-					var column:IAttributeColumn = (cache[dataSource][metadataHash] as WeakReference).value as IAttributeColumn;
+					var column:IAttributeColumn = d2d_dataSource_metadataHash_column.get(dataSource, metadataHash);
 					if (!column || objectWasDisposed(column))
 						continue;
 					var metadata:Object = ColumnMetadata.getAllMetadata(column);
@@ -155,7 +155,8 @@
 			}

 			// stub out data sources
-			for each (dataSource in WeaveAPI.globalHashMap.getObjects(IDataSource))
+			dataSources = WeaveAPI.globalHashMap.getObjects(IDataSource);
+			for each (dataSource in dataSources)
 			{
 				if (dataSource.hasOwnProperty('NO_CACHE_HACK'))
 					continue;
@@ -218,7 +219,8 @@
 						var geoms:Vector.<GeneralizedGeometry> = new Vector.<GeneralizedGeometry>();
 						for (var i:int = 0; i < data.length; i++)
 						{
-							for each (var geom:GeneralizedGeometry in GeneralizedGeometry.fromGeoJson(data[i]))
+							var geomsFromGeoJson:Array = GeneralizedGeometry.fromGeoJson(data[i]);
+							for each (var geom:GeneralizedGeometry in geomsFromGeoJson)
 							{
 								geomKeys.push(keys[i]);
 								geoms.push(geom);
@@ -247,19 +249,7 @@
 			}

 			// insert into cache
-			d2d_dataSource_metadataHash_weakRef.set(dataSource, metadataHash, new WeakReference(column));
-		}
-
-		/**
-		 * Restores a session state to what it was before calling convertToCachedDataSources().
-		 */
-		public function restoreFromCachedDataSources():void
-		{
-			for each (var cds:CachedDataSource in WeaveAPI.globalHashMap.getObjects(CachedDataSource))
-			{
-				d2d_dataSource_metadataHash_weakRef.removeAllPrimary(cds);
-				cds.hierarchyRefresh.triggerCallbacks();
-			}
+			d2d_dataSource_metadataHash_column.set(dataSource, metadataHash, column);
 		}
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 22136
Author:   eday@adobe.com
Date:     2011-08-22T22:00:16.436563Z

Log Message:
-----------
Item snapping fixes
SDK-31180: Touch interaction mode in a desktop app causes scrollbar problems
SDK-30922: Scrollbar size decreases when end items are snapped
SDK-31049: Setting snapModes at runtime during a throw does not snap correctly
SDK-31236: SpinnerList animateToSelectedIndex doesn't cancel on touch interaction

QE notes:
Doc notes:
Bugs: SDK-31180, SDK-30922, SDK-31049, SDK-31236
Reviewer: Evtim, Jason Szeto
Tests run: checkintests, mustella
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/VScrollBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/HScrollBar.as</path>

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

--- frameworks/projects/spark/src/spark/components/HScrollBar.as
+++ frameworks/projects/spark/src/spark/components/HScrollBar.as
@@ -256,8 +256,11 @@
             // the extra margin we added to minimum and maximum for bounce/pull.
             var viewportWidth:Number = isNaN(viewport.width) ? 0 : viewport.width;

-            min = 0;
-            max = Math.max(0, maximum - viewportWidth);
+            // This code uses explicit values passed in from Scroller, since "item snapping" means
+            // there may be visible padding at either end of the content, and bounce/pull occurs beyond
+            // the padding
+            min = !isNaN(contentMinimum) ? contentMinimum : 0;
+            max = !isNaN(contentMaximum) ? contentMaximum : Math.max(0, maximum - viewportWidth);
         }
         else
         {
@@ -296,9 +299,9 @@
             if (!fixedThumbSize)
             {
                 // The minimum size we'll shrink the thumb to is either thumb.minWidth or thumbSize: whichever is smaller.
-                thumbSize = Math.max(Math.min(thumb.minWidth, thumbSize), thumbSize + pendingValue);
-            }
-            thumbPosTrackX = min;
+                thumbSize = Math.max(Math.min(thumb.minWidth, thumbSize), thumbSize + (pendingValue - min));
+            }
+            thumbPosTrackX = 0; // thumb is always at position zero when content is being "pulled"
         }
         if (pendingValue > max)
         {


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

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


Added non-static PERSIST, LOOPING, and ONESHOT Tween types to Tweener class.

--- net/flashpunk/Tweener.as
+++ net/flashpunk/Tweener.as
@@ -5,6 +5,21 @@
 	 */
 	public class Tweener
 	{
+		/**
+		 * Persistent Tween type, will stop when it finishes.
+		 */
+		public const PERSIST:uint = 0;
+
+		/**
+		 * Looping Tween type, will restart immediately when it finishes.
+		 */
+		public const LOOPING:uint = 1;
+
+		/**
+		 * Oneshot Tween type, will stop and remove itself from its core container when it finishes.
+		 */
+		public const ONESHOT:uint = 2;
+
 		/**
 		 * If the Tweener should update.
 		 */


remove Geometry.split() because it cannot exist as such: Geometry store indices as short and there is nothing to split

--- src/aerys/minko/render/geometry/Geometry.as
+++ src/aerys/minko/render/geometry/Geometry.as
@@ -859,40 +859,6 @@
 			_boundingBox = new BoundingBox(min, max);
 		}

-		public function split() : Vector.<Geometry>
-		{
-			var geometries		: Vector.<Geometry> = new <Geometry>[];
-			var numGeometries	: uint				= 0;
-			var geometryId 		: uint				= 0;
-			var numStreams		: uint				= _vertexStreams.length;
-			var indexData		: ByteArray			= _indexStream.minko_stream::_data;
-
-			for (var streamId : uint = 0; streamId < numStreams; ++streamId)
-			{
-				var stream	: VertexStream	= _vertexStreams[streamId] as VertexStream;
-				if (stream == null)
-					stream = VertexStream.extractSubStream(_vertexStreams[streamId], StreamUsage.DYNAMIC);
-
-				var vertexData	: ByteArray				= stream.minko_stream::_data;
-				var vertexDatas	: Vector.<ByteArray>	= new <ByteArray>[];
-				var indexDatas	: Vector.<ByteArray>	= new <ByteArray>[];
-
-				GeometrySanitizer.splitBuffers(vertexData, indexData, vertexDatas, indexDatas, stream.format.numBytesPerVertex);
-
-				if (streamId == 0)
-				{
-					numGeometries = geometries.length = vertexDatas.length;
-					for (geometryId = 0; geometryId < numGeometries; ++geometryId)
-						geometries[geometryId] = new Geometry(new <IVertexStream>[], new IndexStream(StreamUsage.DYNAMIC, indexDatas[geometryId]));
-				}
-
-				for (geometryId = 0; geometryId < numGeometries; ++geometryId)
-					geometries[geometryId].setVertexStream(new VertexStream(StreamUsage.DYNAMIC, stream.format, vertexDatas[geometryId]), streamId);
-			}
-
-			return geometries;
-		}
-
 		public function merge(geometry			: Geometry,
 							  vertexStreamUsage : uint = 3,
 							  indexStreamUsage 	: uint = 3) : Geometry