Transferred from the Adobe Open Source Subversion Repository

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

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

Major API changes are:

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

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

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

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

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

--- frameworks/projects/framework/src/mx/utils/GetTimerUtil.as
+++ frameworks/projects/framework/src/mx/utils/GetTimerUtil.as
@@ -0,0 +1,71 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2010 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.utils
+{
+
+import flash.utils.getTimer;
+
+import mx.core.mx_internal;
+
+[ExcludeClass]
+
+/**
+ *  @private
+ *  The GetTimerUtil utility class is an all-static class
+ *  with methods for grabbing the relative time from a Flex
+ *  application.  This class exists so tests can consistently
+ *  run with the same time values.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+public class GetTimerUtil
+{
+    //--------------------------------------------------------------------------
+    //
+    //  Class properties
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private static var _getTimerFunction:Function = flash.utils.getTimer;
+
+    /**
+     *  @private
+     *  The function to use when calculate the current time.  By default,
+     *  this is flash.utils.getTimer.  When run in a testing
+     *  environment, one may change this function in order to get consistent
+     *  results when running tests.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    mx_internal static function get getTimerFunction():Function
+    {
+        return _getTimerFunction;
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal static function set getTimerFunction(value:Function):void
+    {
+        _getTimerFunction = value;
+    }
+}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 4516
Author:   gosmith@adobe.com
Date:     2009-01-13T23:23:14.594709Z

Log Message:
-----------
Accessibility changes to Panel and TitleWindow, as requested by Freedom Scientific.

These components now report their accessibility role as "grouping" rather than "window". Their accessibility name is now simply their title. They no longer report any child items. Their accessibility location is the bounding rect of the entire Panel or TitleWindow.

The AccessibilityImplementation continues to be attached to the titleBar, not to the Panel/TitleWindow, because the Flash Player ignores Sprites with an AccessibilityImplementation that are inside other Sprites with an AccessibilityImplementation. (The Flash accessibility model is flat, not hierarchical, and "child IDs" are only used for things like list items, not for controls in titled container.)

So although in the display hierarchy the Panel is a parent of its content controls, in the MSAA model it appears as their preceding sibling. JAWS will look at the "grouping" role and understand that because the bounding rect of the grouping includes some of its following siblings, they are "inside". (I don't know what this means in terms of what JAWS will actually speak.)

Also, the AccImpl class now implements getChildIDArray() to return an empty array, so that by default all components have 0 child items (rather than reporting an error).

Finally, subclasses with child items now compute how many they have and then call a new AccImpl utility method, createChildIDArray(), to create an Array that looks like [ 1, 2, 3, 4, 5 ].

QE Notes: None
Doc Notes: None
Bugs: SDK-12390, SDK-16340
Reviewer: Deepa

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TabBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ColorPickerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/PanelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TreeAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TitleWindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBaseAccImpl.as</path>

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

--- frameworks/projects/mx/src/mx/accessibility/TreeAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/TreeAccImpl.as
@@ -338,18 +338,11 @@
 	 */
 	override public function getChildIDArray():Array
 	{
-		var childIDs:Array = [];
-
-		if (Tree(master).dataProvider)
-		{
-			var n:int = Tree(master).collectionLength;
-			for (var i:int = 0; i < n; i++)
-			{
-				childIDs[i] = i + 1;
-			}
-		}
-
-		return childIDs;
+		var n:int = Tree(master).dataProvider ?
+					Tree(master).collectionLength :
+					0;
+
+		return createChildIDArray(n);
 	}

 	/**


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

--- frameworks/projects/mx/src/mx/accessibility/TreeAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/TreeAccImpl.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-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.accessibility
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 4520
Author:   gosmith@adobe.com
Date:     2009-01-14T01:07:53.388463Z

Log Message:
-----------
Accessibility changes to List, DataGrid, Menu, and Tree, as requested by Freedom Scientific, to behave more like their corresponding standard Windows controls.

List, DataGrid, and Menu no longer report an accessibility value, either for the control itself or for its child items.

Tree no longer reports a value value for itself. For tree items the value is the indentation level as a String: "0", "1", "2", etc. Previously the top-level items had value "1" instead of "0".

QE Notes: None
Doc Notes: None
Bugs: SDK-17755
Reviewer: Deepa

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TreeAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListBaseAccImpl.as</path>

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

--- frameworks/projects/mx/src/mx/accessibility/TreeAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/TreeAccImpl.as
@@ -14,8 +14,9 @@

 import flash.accessibility.Accessibility;
 import flash.events.Event;
+
+import mx.collections.CursorBookmark;
 import mx.collections.ICollectionView;
-import mx.collections.CursorBookmark;
 import mx.collections.IViewCursor;
 import mx.controls.Tree;
 import mx.controls.listClasses.IListItemRenderer;
@@ -185,8 +186,8 @@
 	 *  @private
 	 *  IAccessible method for returning the value of the TreeItem/Tree
 	 *  which is spoken out by the screen reader
-	 *  The Tree should return the name of the currently selected item
-	 *  with m of n string with level info as value when focus moves to Tree.
+	 *  A Tree item reports its depth as its value.
+	 *  The Tree itself reports no value.
 	 *
 	 *  @param childID uint
 	 *
@@ -196,36 +197,19 @@
 	{
 		var accValue:String;

-		var tree:Tree = Tree(master);
-		var index:int;
-		var item:Object;
-
-		if (childID == 0)
-		{
-			index = tree.selectedIndex;
-			if (index > -1)
-			{
-				item = getItemAt(index);
-				if (!item)
-					return accValue;
-
-				if (tree.itemToLabel(item))
-					accValue = tree.itemToLabel(item)
-
-				accValue += getMOfN(item);
-			}
-		}
-		else
+		if (childID != 0)
 		{
 			// Assuming childID is always ItemID + 1
 			// because getChildIDArray is not always invoked.
-			index = childID - 1;
-
-			item = getItemAt(index);
+			var index:int = childID - 1;
+			var item:Object = getItemAt(index);
 			if (!item)
 				return accValue;

-			accValue = tree.getItemDepth(item, index - tree.verticalScrollPosition) + "";
+			var tree:Tree = Tree(master);
+			var depth:int = tree.getItemDepth(
+				item, index - tree.verticalScrollPosition);
+			accValue = String(depth - 1);
 		}

 		return accValue;


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

--- frameworks/projects/mx/src/mx/styles/metadata/GapStyles.as
+++ frameworks/projects/mx/src/mx/styles/metadata/GapStyles.as
@@ -1,24 +1,4 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////

-/**
- *  Number of pixels between children in the horizontal direction.
- *  The default value depends on the component class;
- *  if not overridden for the class, the default value is 8.
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
 [Style(name="horizontalGap", type="Number", format="Length", inherit="no")]

 /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 4631
Author:   gosmith@adobe.com
Date:     2009-01-23T01:00:39.828983Z

Log Message:
-----------
Changed clipping in TextBox and TextGraphic.as

TextFlowComposer no longer relies on TextLineFactory.createTextLinesFromTextFlow() returning an 'overset' flag, because TLF will be removing this. Instead, it determines whether any TextLines are overset by looking at whether the getBounds() of the container parenting the TextLines is contained inside the composition bounds.

TextBlockComposer now uses identical logic to do this.

TextBox and TextGraphic now call a new method, clip(), in their TextGraphicElement base class to set or clear the scrollRect based on the overset flag. This logic has been further optimized to avoid creating a new Rectangle instance if the scrollRect has already been set.

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

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

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

--- frameworks/projects/spark/src/spark/components/RichText.as
+++ frameworks/projects/spark/src/spark/components/RichText.as
@@ -15,8 +15,6 @@
 import flash.display.DisplayObjectContainer;
 import flash.geom.Rectangle;

-import flashx.textLayout.conversion.ImportExportConfiguration;
-import flashx.textLayout.conversion.ITextImporter;
 import flashx.textLayout.conversion.TextFilter;
 import flashx.textLayout.elements.Configuration;
 import flashx.textLayout.elements.FlowElement;
@@ -25,9 +23,6 @@
 import flashx.textLayout.elements.TextFlow;
 import flashx.textLayout.formats.CharacterFormat;
 import flashx.textLayout.formats.ContainerFormat;
-import flashx.textLayout.formats.ICharacterFormat;
-import flashx.textLayout.formats.IContainerFormat;
-import flashx.textLayout.formats.IParagraphFormat;
 import flashx.textLayout.formats.ParagraphFormat;

 import mx.core.mx_internal;
@@ -369,22 +364,9 @@

         var overset:Boolean = compose(unscaledWidth, unscaledHeight);

-        // Use scrollRect to clip overset lines.
-        // But don't read or write scrollRect if you can avoid it,
-        // because this causes Player 10.0 to allocate memory.
-        if (overset)
-        {
-            displayObject.scrollRect =
-                new Rectangle(0, 0, unscaledWidth, unscaledHeight);
-            mx_internal::hasScrollRect = true;
-        }
-        else if (mx_internal::hasScrollRect)
-        {
-            displayObject.scrollRect = null;
-            mx_internal::hasScrollRect = false;
-        }
-    }
-
+        mx_internal::clip(overset, unscaledWidth, unscaledHeight);
+    }
+
     /**
      *  @inheritDoc
      */
@@ -626,7 +608,7 @@
         textFlowComposer.composeTextFlow(textFlow);

         textFlowComposer.addTextLines(DisplayObjectContainer(displayObject));
-
+
         return textFlowComposer.isOverset;
     }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 19916
Author:   smgilson@adobe.com
Date:     2011-01-24T20:50:03.643627Z

Log Message:
-----------
Update ASDoc on new Scroller.ensureElementIsVisible() method

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

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as

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

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -900,6 +900,11 @@
      *  ScrollBars are laid out flush with the edges of the Scroller.
      *
      *  @default 0
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     public function get minViewportInset():Number
     {
@@ -941,6 +946,11 @@
      *  likely that the component's content will be obscured by a scroll bar.

      *
      *  @default true
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     public function get measuredSizeIncludesScrollBars():Boolean
     {
@@ -966,10 +976,15 @@
     //--------------------------------------------------------------------------

     /**
-     *  Scrolls the viewport so the element is visible in the viewable area
-     *  Adjusts for focusThickness.
+     *  Scrolls the viewport so the specified element is visible.
      *
-     *  @param element A descendant element of the Scroller
+     *  @param element A child element of the container,
+     *  or of a nested container, wrapped by the Scroller.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     public function ensureElementIsVisible(element:IVisualElement):void
     {
@@ -1415,7 +1430,7 @@
     //  Touch scrolling methods
     //
     //--------------------------------------------------------------------------
-
+
     /**
      *  @private
      *  Add touch listeners
@@ -1766,6 +1781,9 @@
     //
     //--------------------------------------------------------------------------

+    /**
+     *  @private
+     */
     override protected function createChildren():void
     {
         super.createChildren();
@@ -2216,7 +2234,7 @@

         touchScrollHelper.startScrollWatch(event);
     }
-
+
     /**
      *  @private
      */
@@ -2224,7 +2242,7 @@
     {
         var xMove:int = 0;
         var yMove:int = 0;
-
+
         if (scrollerLayout && scrollerLayout.canScrollHorizontally)
             xMove = dragX;

@@ -2260,7 +2278,7 @@
         // clamp the values here
         newHSP = Math.min(Math.max(newHSP, -viewportWidth), maxWidth+viewportWidth);
         newVSP = Math.min(Math.max(newVSP, -viewportHeight), maxHeight+viewportHeight);
-
+
         viewport.horizontalScrollPosition = newHSP;
         viewport.verticalScrollPosition = newVSP;
     }
@@ -2329,141 +2347,141 @@
         // scrollbars in overlay mode
         skin.invalidateDisplayList();
     }
-
-	//--------------------------------------------------------------------------
-	//
-	//  Text selection auto scroll
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 *  When true, use the text selection scroll behavior instead of the
-	 *  typical "throw" behavior. This is only used when interactionMode="touch"
-	 */
-	mx_internal var textSelectionAutoScrollEnabled:Boolean = false;
-	private var textSelectionAutoScrollTimer:Timer;
-	private var minTextSelectionVScrollPos:int = 0;
-	private var maxTextSelectionVScrollPos:int = -1;
-	private var minTextSelectionHScrollPos:int = 0;
-	private var maxTextSelectionHScrollPos:int = -1;
-	private static const TEXT_SELECTION_AUTO_SCROLL_FPS:int = 10;
-
-	/**
-	 *  @private
-	 *  Change scroll behavior when selecting text.
-	 */
-	mx_internal function enableTextSelectionAutoScroll(enable:Boolean,
-					   minHScrollPosition:int = 0, maxHScrollPosition:int = -1,
-					   minVScrollPosition:int = 0, maxVScrollPosition:int = -1):void
-	{
-		if (getStyle("interactionMode") == InteractionMode.TOUCH)
-		{
-			this.textSelectionAutoScrollEnabled = enable;
-			this.minTextSelectionHScrollPos = minHScrollPosition;
-			this.maxTextSelectionHScrollPos = maxHScrollPosition;
-			this.minTextSelectionVScrollPos = minVScrollPosition;
-			this.maxTextSelectionVScrollPos = maxVScrollPosition;
-		}
-	}
-
-	/**
-	 *  @private
-	 */
-	mx_internal function setUpTextSelectionAutoScroll():void
-	{
-		if (!textSelectionAutoScrollTimer)
-		{
-			textSelectionAutoScrollTimer = new Timer(1000 / TEXT_SELECTION_AUTO_SCROLL_FPS);
-			textSelectionAutoScrollTimer.addEventListener(TimerEvent.TIMER,
-				textSelectionAutoScrollTimerHandler);
-
-			textSelectionAutoScrollTimer.start();
-		}
-	}
-
-	/**
-	 *  @private
-	 */
-	mx_internal function stopTextSelectionAutoScroll():void
-	{
-		if (textSelectionAutoScrollTimer)
-		{
-			textSelectionAutoScrollTimer.stop();
-			textSelectionAutoScrollTimer.removeEventListener(TimerEvent.TIMER,
-				textSelectionAutoScrollTimerHandler);
-			textSelectionAutoScrollTimer = null;
-		}
-	}
-
-	/**
-	 *  @private
-	 */
-	private function textSelectionAutoScrollTimerHandler(event:TimerEvent):void
-	{
-		const SLOW_SCROLL_THRESHOLD:int = 12;		// Distance from edge to trigger a slow scroll
-		const SLOW_SCROLL_SPEED:int = 20;			// Pixels per timer callback to scroll
-		const FAST_SCROLL_THRESHOLD:int = 3;		// Distance from edge to trigger a fast scroll
-		const FAST_SCROLL_DELTA:int = 30; 			// Added to SLOW_SCROLL_SPEED to determine fast speed
-
-		var newVSP:Number = viewport.verticalScrollPosition;
-		var newHSP:Number = viewport.horizontalScrollPosition;
-
-		if (scrollerLayout.canScrollHorizontally)
-		{
-			if (mouseX > width - SLOW_SCROLL_THRESHOLD)
-			{
-				newHSP += SLOW_SCROLL_SPEED;
-
-				if (mouseX > width - FAST_SCROLL_THRESHOLD)
-					newHSP += FAST_SCROLL_DELTA;
-
-				if (maxTextSelectionHScrollPos != -1 && newHSP > maxTextSelectionHScrollPos)
-					newHSP = maxTextSelectionHScrollPos;
-			}
-
-			if (mouseX < SLOW_SCROLL_THRESHOLD)
-			{
-				newHSP -= SLOW_SCROLL_SPEED;
-
-				if (mouseX < FAST_SCROLL_THRESHOLD)
-					newHSP -= FAST_SCROLL_DELTA;
-
-				if (newHSP < minTextSelectionHScrollPos)
-					newHSP = minTextSelectionHScrollPos;
-    		}
-		}
-
-		if (scrollerLayout.canScrollVertically)
-		{
-			if (mouseY > height - SLOW_SCROLL_THRESHOLD)
-			{
-				newVSP += SLOW_SCROLL_SPEED;
-
-				if (mouseY > height - FAST_SCROLL_THRESHOLD)
-					newVSP += FAST_SCROLL_DELTA;
-
-				if (maxTextSelectionVScrollPos != -1 && newVSP > maxTextSelectionVScrollPos)
-					newVSP = maxTextSelectionVScrollPos;
-			}
-
-			if (mouseY < SLOW_SCROLL_THRESHOLD)
-			{
-				newVSP -= SLOW_SCROLL_SPEED;
-
-				if (mouseY < FAST_SCROLL_THRESHOLD)
-					newVSP -= FAST_SCROLL_DELTA;
-
-				if (newVSP < minTextSelectionVScrollPos)
-					newVSP = minTextSelectionVScrollPos;
-			}
-		}
-
-		if (newHSP != viewport.horizontalScrollPosition)
-			viewport.horizontalScrollPosition = newHSP;
-		if (newVSP != viewport.verticalScrollPosition)
-			viewport.verticalScrollPosition = newVSP;
-	}
+
+    //--------------------------------------------------------------------------
+    //
+    //  Text selection auto scroll
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  When true, use the text selection scroll behavior instead of the
+     *  typical "throw" behavior. This is only used when interactionMode="touch"
+     */
+    mx_internal var textSelectionAutoScrollEnabled:Boolean = false;
+    private var textSelectionAutoScrollTimer:Timer;
+    private var minTextSelectionVScrollPos:int = 0;
+    private var maxTextSelectionVScrollPos:int = -1;
+    private var minTextSelectionHScrollPos:int = 0;
+    private var maxTextSelectionHScrollPos:int = -1;
+    private static const TEXT_SELECTION_AUTO_SCROLL_FPS:int = 10;
+
+    /**
+     *  @private
+     *  Change scroll behavior when selecting text.
+     */
+    mx_internal function enableTextSelectionAutoScroll(enable:Boolean,
+                       minHScrollPosition:int = 0, maxHScrollPosition:int = -1,
+                       minVScrollPosition:int = 0, maxVScrollPosition:int = -1):void
+    {
+        if (getStyle("interactionMode") == InteractionMode.TOUCH)
+        {
+            this.textSelectionAutoScrollEnabled = enable;
+            this.minTextSelectionHScrollPos = minHScrollPosition;
+            this.maxTextSelectionHScrollPos = maxHScrollPosition;
+            this.minTextSelectionVScrollPos = minVScrollPosition;
+            this.maxTextSelectionVScrollPos = maxVScrollPosition;
+        }
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function setUpTextSelectionAutoScroll():void
+    {
+        if (!textSelectionAutoScrollTimer)
+        {
+            textSelectionAutoScrollTimer = new Timer(1000 / TEXT_SELECTION_AUTO_SCROLL_FPS);
+            textSelectionAutoScrollTimer.addEventListener(TimerEvent.TIMER,
+                textSelectionAutoScrollTimerHandler);
+
+            textSelectionAutoScrollTimer.start();
+        }
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function stopTextSelectionAutoScroll():void
+    {
+        if (textSelectionAutoScrollTimer)
+        {
+            textSelectionAutoScrollTimer.stop();
+            textSelectionAutoScrollTimer.removeEventListener(TimerEvent.TIMER,
+                textSelectionAutoScrollTimerHandler);
+            textSelectionAutoScrollTimer = null;
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function textSelectionAutoScrollTimerHandler(event:TimerEvent):void
+    {
+        const SLOW_SCROLL_THRESHOLD:int = 12;       // Distance from edge to trigger a slow scroll
+        const SLOW_SCROLL_SPEED:int = 20;           // Pixels per timer callback to scroll
+        const FAST_SCROLL_THRESHOLD:int = 3;        // Distance from edge to trigger a fast scroll
+        const FAST_SCROLL_DELTA:int = 30;           // Added to SLOW_SCROLL_SPEED to determine fast speed
+
+        var newVSP:Number = viewport.verticalScrollPosition;
+        var newHSP:Number = viewport.horizontalScrollPosition;
+
+        if (scrollerLayout.canScrollHorizontally)
+        {
+            if (mouseX > width - SLOW_SCROLL_THRESHOLD)
+            {
+                newHSP += SLOW_SCROLL_SPEED;
+
+                if (mouseX > width - FAST_SCROLL_THRESHOLD)
+                    newHSP += FAST_SCROLL_DELTA;
+
+                if (maxTextSelectionHScrollPos != -1 && newHSP > maxTextSelectionHScrollPos)
+                    newHSP = maxTextSelectionHScrollPos;
+            }
+
+            if (mouseX < SLOW_SCROLL_THRESHOLD)
+            {
+                newHSP -= SLOW_SCROLL_SPEED;
+
+                if (mouseX < FAST_SCROLL_THRESHOLD)
+                    newHSP -= FAST_SCROLL_DELTA;
+
+                if (newHSP < minTextSelectionHScrollPos)
+                    newHSP = minTextSelectionHScrollPos;
+            }
+        }
+
+        if (scrollerLayout.canScrollVertically)
+        {
+            if (mouseY > height - SLOW_SCROLL_THRESHOLD)
+            {
+                newVSP += SLOW_SCROLL_SPEED;
+
+                if (mouseY > height - FAST_SCROLL_THRESHOLD)
+                    newVSP += FAST_SCROLL_DELTA;
+
+                if (maxTextSelectionVScrollPos != -1 && newVSP > maxTextSelectionVScrollPos)
+                    newVSP = maxTextSelectionVScrollPos;
+            }
+
+            if (mouseY < SLOW_SCROLL_THRESHOLD)
+            {
+                newVSP -= SLOW_SCROLL_SPEED;
+
+                if (mouseY < FAST_SCROLL_THRESHOLD)
+                    newVSP -= FAST_SCROLL_DELTA;
+
+                if (newVSP < minTextSelectionVScrollPos)
+                    newVSP = minTextSelectionVScrollPos;
+            }
+        }
+
+        if (newHSP != viewport.horizontalScrollPosition)
+            viewport.horizontalScrollPosition = newHSP;
+        if (newVSP != viewport.verticalScrollPosition)
+            viewport.verticalScrollPosition = newVSP;
+    }

     //--------------------------------------------------------------------------
     //
@@ -2933,7 +2951,7 @@
                 var scrollStartEvent:TouchInteractionEvent = new TouchInteractionEvent(TouchInteractionEvent.TOUCH_INTERACTION_START, true, true);
                 scrollStartEvent.relatedObject = scroller;
                 scrollStartEvent.reason = TouchInteractionReason.SCROLL;
-				dispatchBubblingEventOnMouseDownedDisplayObject(scrollStartEvent);
+                dispatchBubblingEventOnMouseDownedDisplayObject(scrollStartEvent);

                 isScrolling = true;

@@ -2990,11 +3008,11 @@
         // if we are scrolling (even if we just started scrolling)
         if (isScrolling)
         {
-			if (scroller.textSelectionAutoScrollEnabled)
-			{
-				scroller.setUpTextSelectionAutoScroll();
-				return;
-			}
+            if (scroller.textSelectionAutoScrollEnabled)
+            {
+                scroller.setUpTextSelectionAutoScroll();
+                return;
+            }

             // calculate the delta
             var dx:Number = event.stageX - scrollGestureAnchorPoint.x;
@@ -3080,14 +3098,14 @@
         if (!isScrolling)
             return;

-		// Don't throw if we're doing a text selection auto scroll
-		if (scroller.textSelectionAutoScrollEnabled)
-		{
-			scroller.stopTextSelectionAutoScroll();
-			endTouchScroll();
-			return;
-		}
-
+        // Don't throw if we're doing a text selection auto scroll
+        if (scroller.textSelectionAutoScrollEnabled)
+        {
+            scroller.stopTextSelectionAutoScroll();
+            endTouchScroll();
+            return;
+        }
+
         if (dragTimer)
         {
             if (dragScrollPending)
@@ -3145,13 +3163,13 @@
         }
         averageDt /= len-1;

-		// if off screen for some reason, let's end scrolling:
-		if (!scroller.stage)
-		{
+        // if off screen for some reason, let's end scrolling:
+        if (!scroller.stage)
+        {
             endTouchScroll();
-			return;
-		}
-
+            return;
+        }
+
         var lastMouseEventPoint:Point = mouseEventCoordinatesHistory[endIndex];

         // calculate the last velocity and make sure there was no pause that occurred
@@ -3247,40 +3265,40 @@

         return new Point(velX,velY);
     }
-
-	/**
-	 *  @private
-	 *  Helper method to dispatch bubbling events on mouseDownDisplayObject.  Since this
-	 *  object can be off the display list, this may be tricky.  Technically, we should
-	 *  grab all the live objects at the time of mouseDown and dispatch events to them
-	 *  manually, but instead, we just use this heuristic, which is dispatch it to
-	 *  mouseDownedDisplayObject.  If it's not inside of scroller and off the display list,
-	 *  then dispatch to scroller as well.
-	 *
-	 *
If you absolutely need to know the touch event ended, add event listeners
-	 *  to the mouseDownedDisplayObject directly and don't rely on event
-	 *  bubbling.

-	 */
-	private function dispatchBubblingEventOnMouseDownedDisplayObject(event:Event):Boolean
-	{
-		var eventAccepted:Boolean = true;
-		if (mouseDownedDisplayObject)
-		{
-			eventAccepted = eventAccepted && mouseDownedDisplayObject.dispatchEvent(event);
-			if (!mouseDownedDisplayObject.stage)
-			{
-				if (scroller && !scroller.contains(mouseDownedDisplayObject))
-					eventAccepted = eventAccepted && scroller.dispatchEvent(event);
-			}
-		}
-		else
-		{
-			eventAccepted = eventAccepted && scroller.dispatchEvent(event);
-		}
-
-		return eventAccepted;
-	}
-
+
+    /**
+     *  @private
+     *  Helper method to dispatch bubbling events on mouseDownDisplayObject.  Since this
+     *  object can be off the display list, this may be tricky.  Technically, we should
+     *  grab all the live objects at the time of mouseDown and dispatch events to them
+     *  manually, but instead, we just use this heuristic, which is dispatch it to
+     *  mouseDownedDisplayObject.  If it's not inside of scroller and off the display list,
+     *  then dispatch to scroller as well.
+     *
+     *
If you absolutely need to know the touch event ended, add event listeners
+     *  to the mouseDownedDisplayObject directly and don't rely on event
+     *  bubbling.

+     */
+    private function dispatchBubblingEventOnMouseDownedDisplayObject(event:Event):Boolean
+    {
+        var eventAccepted:Boolean = true;
+        if (mouseDownedDisplayObject)
+        {
+            eventAccepted = eventAccepted && mouseDownedDisplayObject.dispatchEvent(event);
+            if (!mouseDownedDisplayObject.stage)
+            {
+                if (scroller && !scroller.contains(mouseDownedDisplayObject))
+                    eventAccepted = eventAccepted && scroller.dispatchEvent(event);
+            }
+        }
+        else
+        {
+            eventAccepted = eventAccepted && scroller.dispatchEvent(event);
+        }
+
+        return eventAccepted;
+    }
+
     /**
      *  @private
      *  When the touchScrollThrow is over, we should dispatch a touchInteractionEnd.


Transferred from the Adobe Open Source Subversion Repository

Revision: 20118
Author:   cframpto@adobe.com
Date:     2011-02-04T01:16:08.985955Z

Log Message:
-----------
Remove [Inspectable(environment="none")] metadata which I added recently to the content property of RichEditableText, RichText, and TextArea.  Apparently Catalyst generates code to these and design model needs them to be resolvable in code model.  As a bonus got a few ASdoc changes in TextArea that I've been working on for mobile text.

QE notes:
Doc notes:
Bugs:
Reviewer: Kevin
Tests run: spark compiles
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TextArea.as</path>

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

--- frameworks/projects/spark/src/spark/components/TextArea.as
+++ frameworks/projects/spark/src/spark/components/TextArea.as
@@ -397,7 +397,6 @@
      *  within
, , etc.
      */
     [RichTextContent]
-    [Inspectable(environment="none")]

     /**
      *  This property is intended for use in MXML at compile time;
@@ -427,6 +426,8 @@
      *  to a TextFlow object. When you get the value of this property, you get
      *  the resulting TextFlow object.

      *
+     *
For the Mobile theme, this is not supported.

+     *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 1.5
@@ -454,7 +455,16 @@
     [Inspectable(category="General", minValue="0.0")]

     /**
-     *  @copy spark.components.RichEditableText#heightInLines
+     *  The default height of the control, measured in lines.
+     *
+     *
For the Spark theme, see
+     *  spark.components.RichEditableText.heightInLines

+     *
+     *
For the Mobile theme, this is not supported.

+     *
+     *  @see spark.components.RichEditableText#heightInLines
+     *
+     *  @default NaN
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -484,8 +494,17 @@
     // TLF work.

     /**
-     *  @copy spark.components.RichEditableText#textFlow
-     *
+     *  The TextFlow representing the rich text displayed by this component.
+     *
+     *
For the Spark theme, see
+     *  spark.components.RichEditableText.textFlow

+     *
+     *
For the Mobile theme, this is not supported.

+     *
+     *  @see spark.components.RichEditableText#textFlow
+     *
+     *  @default null
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 1.5
@@ -513,7 +532,16 @@
     [Inspectable(category="General", minValue="0.0")]

     /**
-     *  @copy spark.components.RichEditableText#widthInChars
+     *  The default width of the control, measured in em units.
+     *
+     *
For the Spark theme, see
+     *  spark.components.RichEditableText.widthInChars

+     *
+     *
For the Mobile theme, this is not supported.

+     *
+     *  @see spark.components.RichEditableText#widthInChars
+     *
+     *  @default NaN
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Minor refactoring

Minor refactoring

--- GA_AS3/src/com/google/analytics/core/Organic.as
+++ GA_AS3/src/com/google/analytics/core/Organic.as
@@ -1,4 +1,4 @@
-/*
+/*
  * Copyright 2008 Adobe Systems Inc., 2008 Google Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,18 +15,25 @@
  *
  * Contributor(s):
  *   Zwetan Kjukov <zwetan@gmail.com>.
+ *   Marc Alcaraz <ekameleon@gmail.com>.
  */

 package com.google.analytics.core
 {
-    import flash.net.URLVariables;
-
+    import flash.net.URLVariables;
+
+    /**
+     * The Organic class.
+     */
     public class Organic
     {
         private var _sources:Array;
         private var _sourcesCache:Array;
         private var _sourcesEngine:Array;

+        /**
+         * Creates a new Organic instance.
+         */
         public function Organic()
         {
             _sources       = [];
@@ -62,6 +69,9 @@
             return _sources;
         }

+        /**
+         * Adds a source in the organic.
+         */
         public function addSource( engine:String, keyword:String ):void
         {
             var orgref:OrganicReferrer = new OrganicReferrer(engine, keyword);
@@ -81,16 +91,22 @@
             }
             else
             {
-                throw new Error( orgref.toString()+" already exists, we don't add it." )
+                throw new Error( orgref.toString()+" already exists, we don't add it." );
             }
         }

+        /**
+         * Clear the organic object.
+         */
         public function clear():void
         {
             _sources      = [];
             _sourcesCache = [];
         }

+        /**
+         * Match the specified value.
+         */
         public function match( name:String ):Boolean
         {
             if( name == "" )
@@ -108,6 +124,10 @@
             return false;
         }

+        /**
+         * Returns the OrganicReferrer by name.
+         * @return the OrganicReferrer by name.
+         */
         public function getReferrerByName( name:String ):OrganicReferrer
         {
             if( match( name ) )
@@ -120,6 +140,10 @@
             return null;
         }

+        /**
+         * Returns the keyword value of the organic referrer.
+         * @return the keyword value of the organic referrer.
+         */
         public function getKeywordValue( or:OrganicReferrer, path:String ):String
         {
             var keyword:String = or.keyword;


adjusted height of column list

adjusted height of column list

--- WeaveUI/src/weave/editors/DynamicEditor.as
+++ WeaveUI/src/weave/editors/DynamicEditor.as
@@ -143,7 +143,7 @@
 				var clc:ColumnListComponent = new ColumnListComponent();
 				clc.label = label;
 				clc.hashMap = lhm;
-				clc.listHeight = 96;
+				clc.listHeight = 160;
 				return clc;
 			}


add chainbinding

add chainbinding

--- frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
+++ frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
@@ -138,6 +138,7 @@
 	import org.apache.flex.core.graphics.GraphicsContainer; GraphicsContainer;
 	import org.apache.flex.core.graphics.LinearGradient; LinearGradient;
     import org.apache.flex.core.DataBindingBase; DataBindingBase;
+    import org.apache.flex.binding.ChainBinding; ChainBinding;
     import org.apache.flex.effects.PlatformWiper; PlatformWiper;
     import org.apache.flex.events.DragEvent; DragEvent;
 	import org.apache.flex.events.utils.MouseUtils; MouseUtils;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/rpc/src/mx/messaging/FlexClient.as
+++ frameworks/projects/rpc/src/mx/messaging/FlexClient.as
@@ -67,7 +67,10 @@
 	/**
 	 *  Returns the sole instance of this singleton class,
 	 *  creating it if it does not already exist.
-     */
+         *
+         *  @return Returns the sole instance of this singleton class,
+	 *  creating it if it does not already exist.
+	 */
 	public static function getInstance():FlexClient
 	{
 		if (_instance == null)
@@ -169,4 +172,4 @@
     }
 }

-}+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 17072
Author:   cframpto@adobe.com
Date:     2010-07-27T17:07:25.931225Z

Log Message:
-----------
improve ASdoc on selectAll()

QE notes: API changes again
Doc notes:
Bugs: SDK-26986
Reviewer: Hans
Tests run: none
Is noteworthy for integration: no

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

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

--- frameworks/projects/spark/src/spark/components/Grid.as
+++ frameworks/projects/spark/src/spark/components/Grid.as
@@ -1769,15 +1769,25 @@
          *  and removes the caret.  For all other selection modes, this method
          *  has no effect.
          *
-         *
To clear the selection use clearSelection.

-         *
          *
If items are added to the dataProvider or
          *  columns are added after this method is called, the
-         *  new rows or cells in the new column will be selected.  This implicit
-         *  mode ends when the selection is cleared using
-         *  clearSelection or reset using one of
-         *  setSelectedCell, setSelectedCells,
-         *  setSelectedIndex, selectIndices.

+         *  new rows or cells in the new column will be selected.

+         *
+         *
This implicit "selectAll" mode ends when any of the following occur:
+         *

+         *
selection is cleared using clearSelection

+         *
selection reset using one of setSelectedCell,
+         *    setSelectedCells, setSelectedIndex,
+         *    selectIndices

+         *
dataProvider is refreshed and preserveSelection is false

+         *
dataProvider is reset

+         *
columns is refreshed,
+         *    preserveSelection is false and
+         *    selectionMode is
+         *    GridSelectionMode.MULTIPLE_CELLS

+         *
columns is reset and code>selectionMode is
+         *    GridSelectionMode.MULTIPLE_CELLS

+         *

          *
          *  @return True if the selection changed.
          *
@@ -1833,8 +1843,8 @@
             // Remove caret and reset the anchor.
             caretRowIndex = -1;
             caretColumnIndex = -1;
-            anchorRowIndex = -1;
-            anchorColumnIndex = -1;
+            anchorRowIndex = 0;
+            anchorColumnIndex = 0;

             return selectionChanged;
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 9106
Author:   dsubrama@adobe.com
Date:     2009-08-05T18:01:12.433812Z

Log Message:
-----------
A couple of changes to ItemRenderer and List.

-'normal' state for ItemRenderers is now optional
-List's keyDown() handler is adequately commented to aid users in figuring out what to opt in for/opt out for when writing custom keyDown functionality
-Shoving the label text into the labelDisplay's text in an ItemRenderer happens in ItemRenderer itself (vs DefaultItemRenderer)

QE notes: I ran DataGroup, SkinnableDataContainer, List and DropDownList tests and all passed - there were some Mac-specific visual differences that should not be related to my changes.
Doc notes: Yes - please make sure documentation reflect that the normal state is optional. Now, ItemRenderers have no required states.
Bugs: SDK-22268, SDK-21960
Reviewer: Corey
Tests run: DataGroup, SkinnableDataContainer, List, DDL
Is noteworthy for integration: Noe

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -1097,8 +1097,10 @@
         if (!dataProvider || !layout || event.isDefaultPrevented())
             return;

-        // Hitting the space bar means the current caret item, that is
-        // the item currently in focus, is being selected.
+        // 1. Was the space bar hit?
+        // Hitting the space bar means the current caret item,
+        // that is the item currently in focus, is being
+        // selected.
         if (event.keyCode == Keyboard.SPACE)
         {
             selectedIndex = caretIndex;
@@ -1106,12 +1108,46 @@
             return;
         }

+        // 2. Or was an alphanumeric key hit?
+        // Hitting an alphanumeric key causes List's
+        // findKey method to run to find a matching
+        // item in the dataProvider whose first char
+        // matches the keystroke.
         if (findKey(event.charCode))
         {
             event.preventDefault();
             return;
         }

+        // 3. Was a navigation key hit (like an arrow key,
+        // or Shift+arrow key)?
+        // Delegate to the layout to interpret the navigation
+        // key and adjust the selection and caret item based
+        // on the combination of keystrokes encountered.
+        adjustSelectionAndCaretUponNavigation(event);
+    }
+
+    /**
+     *  Adjusts the selection based on what keystroke or
+     *  keystroke combinations were encountered. The keystroke
+     *  is sent down to the layout and its up to the layout's
+     *  getNavigationDestinationIndex() method to determine
+     *  what the index to navigate to based on the item that
+     *  is currently in focus. Once the index is determined,
+     *  single selection, caret item and if necessary, multiple
+     *  selection are fixed up to reflect the newly selected
+     *  item.
+     *
+     *  @param event The Keyboard Event encountered
+     *
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    protected function adjustSelectionAndCaretUponNavigation(event:KeyboardEvent):void
+    {
         // Some unrecognized key stroke was entered, return.
         var navigationUnit:uint = event.keyCode;
         if (!NavigationUnit.isNavigationUnit(event.keyCode))
@@ -1176,7 +1212,6 @@
             ensureIndexIsVisible(proposedNewIndex);
         }
     }
-
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 20149
Author:   klin@adobe.com
Date:     2011-02-04T21:39:31.000080Z

Log Message:
-----------
Add and update [Inspectable] metadata across spark components.

QE notes: No
Doc notes: No
Bugs: SDK-28942
Reviewer: Carol
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/spark/src/spark/components/HGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SliderBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ComboBox.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TileGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Button.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Spinner.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/components/VGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Image.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase.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/components/supportClasses/Range.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Panel.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/modules/ModuleLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/mediaClasses/DynamicStreamingVideoItem.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ToggleButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -620,6 +620,12 @@
         super.useVirtualLayout = value;
     }

+    //----------------------------------
+    //  dataProvider
+    //----------------------------------
+
+    [Inspectable(category="Data")]
+
     /**
      *  @private
      *
@@ -658,6 +664,8 @@
      *  @private
      */
     private var _allowMultipleSelection:Boolean = false;
+
+    [Inspectable(category="General", defaultValue="false")]

     /**
      *  If true multiple selection is enabled.
@@ -874,6 +882,7 @@

     [Bindable("change")]
     [Bindable("valueCommit")]
+    [Inspectable(category="General")]

     /**
      *  A Vector of ints representing the indices of the currently selected
@@ -953,6 +962,7 @@

     [Bindable("change")]
     [Bindable("valueCommit")]
+    [Inspectable(category="General")]

     /**
      *  A Vector of Objects representing the currently selected data items.


del empty lines

del empty lines

--- bin/Data/Scripts/Editor/EditorViewDebugIcons.as
+++ bin/Data/Scripts/Editor/EditorViewDebugIcons.as
@@ -55,7 +55,6 @@
                                 "ParticleEmitter"};

 Array<BillboardSet@> debugIconsSet(ICON_COUNT);
-
 Node@ debugIconsNode = null;
 int stepDebugIconsUpdate = 100; //ms
 int timeToNextDebugIconsUpdate = 0;
@@ -174,17 +173,13 @@
                                 if(step == 0) // SplinePath start
                                 {
                                     bb.color = debugIconsColors[ICON_COLOR_SPLINE_PATH_BEGIN];
-                                    bb.size = ClampToIconMaxSize(Max(debugIconsSize * stepDistance, debugIconsSize));
-
-
+                                    bb.size = ClampToIconMaxSize(Max(debugIconsSize * stepDistance, debugIconsSize));
                                     bb.position = splinePoint;
                                 }
                                 else if((step+1) >= (splinePathResolution - splineStep)) // SplinePath end
                                 {
                                     bb.color = debugIconsColors[ICON_COLOR_SPLINE_PATH_END];
-                                    bb.size = ClampToIconMaxSize(Max(debugIconsSize * stepDistance, debugIconsSize));
-
-
+                                    bb.size = ClampToIconMaxSize(Max(debugIconsSize * stepDistance, debugIconsSize));
                                     bb.position = splinePoint;
                                 }
                                 else // SplinePath middle points
@@ -198,7 +193,6 @@
                                 bb.color = Color(bb.color.r, bb.color.g, bb.color.b, 1.2f - 1.0f / (debugIconsMaxSize.x / bb.size.x));
                                 if (bb.color.a < 0.25f) bb.enabled = false;
                             }
-                            //IncrementIconPlacement(sp.enabled, nodes[i], bb.size.y);
                         }
                     }
                     else
@@ -235,8 +229,7 @@
                             }
                         }

-                        bb.position = nodes[i].worldPosition;
-
+                        bb.position = nodes[i].worldPosition;
                         // Blend Icon relatively by distance to it
                         bb.color = Color(finalIconColor.r, finalIconColor.g, finalIconColor.b, 1.2f - 1.0f / (debugIconsMaxSize.x / bb.size.x));
                         bb.enabled = component.enabled;


Movie.playChildrenOnly

Movie.playChildrenOnly

This allows you to stop a movie's main timeline but keep its children
running. This mirrors Flash's "stop()" functionality, where stopping a
Movie doesn't have an effect on its children, and which was previously
not possible with Flump.

This means that:
Movie.play() == MovieClip.play()
Movie.playChildrenOnly() == MovieClip.stop()
Movie.stop() == MovieClip.stopAllMovieClips()

--- runtime/src/main/as/flump/display/Movie.as
+++ runtime/src/main/as/flump/display/Movie.as
@@ -71,7 +71,7 @@
     public function get numFrames () :int { return _numFrames; }

     /** @return true if the movie is currently playing. */
-    public function get isPlaying () :Boolean { return _playing; }
+    public function get isPlaying () :Boolean { return _state == PLAYING; }

     /** @return true if the movie contains the given label. */
     public function hasLabel (label :String) :Boolean {
@@ -80,7 +80,7 @@

     /** Plays the movie from its current frame. The movie will loop forever.  */
     public function loop () :Movie {
-        _playing = true;
+        _state = PLAYING;
         _stopFrame = NO_FRAME;
         return this;
     }
@@ -121,22 +121,28 @@
     public function playTo (position :Object) :Movie {
        _stopFrame = extractFrame(position);
        // don't play if we're already at the stop frame
-       _playing = (_frame != _stopFrame);
+       _state = (_frame != _stopFrame ? PLAYING : STOPPED);
        return this;
     }

     /** Stops playback if it's currently active. Doesn't alter the current frame or stop frame. */
     public function stop () :Movie {
-        _playing = false;
+        _state = STOPPED;
+        return this;
+    }
+
+    /** Stops playback of this movie, but not its children */
+    public function playChildrenOnly () :Movie {
+        _state = PLAYING_CHILDREN_ONLY;
         return this;
     }

     /** Advances the playhead by the give number of seconds. From IAnimatable. */
     public function advanceTime (dt :Number) :void {
         if (dt < 0) throw new Error("Invalid time [dt=" + dt + "]");
-        if (!_playing) return;
-
-        if (_numFrames > 1) {
+        if (_state == STOPPED) return;
+
+        if (_state == PLAYING && _numFrames > 1) {
             _playTime += dt;
             var actualPlaytime :Number = _playTime;
             if (_playTime >= _duration) _playTime %= _duration;
@@ -153,7 +159,7 @@
                     (_frame <= _stopFrame ? _stopFrame - _frame : _numFrames - _frame + _stopFrame);
                 var framesElapsed :int = int(actualPlaytime * _frameRate) - _frame;
                 if (framesElapsed >= framesRemaining) {
-                    _playing = false;
+                    _state = STOPPED;
                     newFrame = _stopFrame;
                     _stopFrame = NO_FRAME;
                 }
@@ -282,7 +288,7 @@
     /** @private */
     protected var _frame :int = NO_FRAME, _stopFrame :int = NO_FRAME;
     /** @private */
-    protected var _playing :Boolean = true;
+    protected var _state :int = PLAYING;
     /** @private */
     protected var _playTime :Number, _duration :Number;
     /** @private */
@@ -297,6 +303,10 @@
     internal var _playerData :MoviePlayerNode;

     private static const NO_FRAME :int = -1;
+
+    private static const STOPPED :int = 0;
+    private static const PLAYING_CHILDREN_ONLY :int = 1;
+    private static const PLAYING :int = 2;
 }
 }


Rename util: getDistance -> distance

Rename util: getDistance -> distance

--- krew-framework/krewfw/utils/swiss_knife/KrewTopUtil.as
+++ krew-framework/krewfw/utils/swiss_knife/KrewTopUtil.as
@@ -443,11 +443,11 @@
             return (a > b) ? a : b;
         }

-        public function getDistance(x1:Number, y1:Number, x2:Number, y2:Number):Number {
-            return Math.sqrt(getSquaredDistance(x1, y1, x2, y2));
-        }
-
-        public function getSquaredDistance(x1:Number, y1:Number, x2:Number, y2:Number):Number {
+        public function distance(x1:Number, y1:Number, x2:Number, y2:Number):Number {
+            return Math.sqrt(squaredDistance(x1, y1, x2, y2));
+        }
+
+        public function squaredDistance(x1:Number, y1:Number, x2:Number, y2:Number):Number {
             var dx:Number = (x2 - x1);
             var dy:Number = (y2 - y1);
             return (dx * dx) + (dy * dy);


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

--- frameworks/projects/automation/src/mx/automation/events/AdvancedDataGridItemSelectEvent.as
+++ frameworks/projects/automation/src/mx/automation/events/AdvancedDataGridItemSelectEvent.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Set constant of Folder ID to -1

Set constant of Folder ID to -1

--- flexEditor/src/org/arisgames/editor/util/AppConstants.as
+++ flexEditor/src/org/arisgames/editor/util/AppConstants.as
@@ -125,7 +125,7 @@

 	// Palette Tree Stuff
 	public static const PALETTE_TREE_SELF_FOLDER_ID:Number = 0;
-	public static const PLAYER_GENERATED_MEDIA_FOLDER_ID:Number = 99;
+	public static const PLAYER_GENERATED_MEDIA_FOLDER_ID:Number = -1;
 	public static const PLAYER_GENERATED_MEDIA_FOLDER_NAME:String = "Player Created Items";

     /**


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

--- frameworks/projects/framework/src/mx/core/EdgeMetrics.as
+++ frameworks/projects/framework/src/mx/core/EdgeMetrics.as
@@ -45,6 +45,11 @@
  *  @see mx.core.Container
  *  @see mx.skins.Border
  *  @see mx.containers.Panel
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class EdgeMetrics
 {
@@ -60,6 +65,11 @@
 	 *  An EdgeMetrics object with a value of zero for its
 	 *  left, top, right,
 	 *  and bottom properties.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);

@@ -79,6 +89,11 @@
 	 *  @param right The width, in pixels, of the right edge region.
 	 *
 	 *  @param bottom The height, in pixels, of the bottom edge region.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function EdgeMetrics(left:Number = 0, top:Number = 0,
 								right:Number = 0, bottom:Number = 0)
@@ -103,6 +118,11 @@

 	/**
 	 *  The height, in pixels, of the bottom edge region.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var bottom:Number;

@@ -112,6 +132,11 @@

 	/**
 	 *  The width, in pixels, of the left edge region.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var left:Number;

@@ -121,6 +146,11 @@

 	/**
 	 *  The width, in pixels, of the right edge region.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var right:Number;

@@ -130,6 +160,11 @@

 	/**
 	 *  The height, in pixels, of the top edge region.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var top:Number;

@@ -141,6 +176,11 @@

 	/**
 	 *  Returns a copy of this EdgeMetrics object.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function clone():EdgeMetrics
 	{


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

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

 package mx.events
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 10274
Author:   cframpto@adobe.com
Date:     2009-09-15T18:52:06.070116Z

Log Message:
-----------
Fix asdoc version info for textFieldClass and textInputClass.  They were both introduced for Flex 4 not Flex 3.

QE notes:
Doc notes:
Bugs: SDK-23168
Reviewer:
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/TextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>

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

--- frameworks/projects/mx/src/mx/controls/NumericStepper.as
+++ frameworks/projects/mx/src/mx/controls/NumericStepper.as
@@ -221,9 +221,9 @@
  *  @default mx.controls.TextInput
  *
  *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
  */
 [Style(name="textInputClass", type="Class", inherit="no")]


- Make a copy of the values array to return to callers, so they can't
  hose our internal data structures.
- some additional comments

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

--- src/as/com/threerings/util/Enum.as
+++ src/as/com/threerings/util/Enum.as
@@ -52,6 +52,7 @@
  *  - create a constructor that merely calls super
  *  - declare your enum constants const, and with the same String as their name.
  *  - call finishedEnumerating() at the end of your constants.
+ *  - your enum objects should be immutable
  *  - implement a static values() method for extra points, as above.
  */
 public class Enum
@@ -97,6 +98,10 @@

     /**
      * Get the ordinal of this enum.
+     * Note that you should not use the ordinal in normal cases, as it may change if a new
+     * enum is defined. Ordinals should only be used if you are writing a data structure
+     * that generically handles enums in an efficient manner, and you are never persisting
+     * anything where the ordinal can change.
      */
     public function ordinal () :int
     {
@@ -155,7 +160,7 @@
         if (arr == null) {
             throw new ArgumentError("Not an enum [class=" + clazz + "].");
         }
-        return arr;
+        return arr.concat(); // return a copy, so that callers may not fuxor
     }

     /**


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

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


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

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

 package mx.utils
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19282
Author:   dloverin@adobe.com
Date:     2010-12-10T20:31:29.008008Z

Log Message:
-----------
Fix memory leak when using VideoDisplay.

Two fixes in here:
1.	The source property treats an empty string the same as null (clears the current video). SWFLoader and ModuleLoader also treat empty strings the same as null.

2.	The second fix is for a memory leak caused by timers in OSMF’s MediaPlayer. The fix is to turn off the timers when we are taken off stage and pauseWhenHidden is true. If the VideoPlayer should play when offstage (pauseWhenHidden == false) then we need to leave the timers running and the VideoPlayer could still leak. There is code to restore the timers when the VideoPlayer comes back on stage or if we try to load a video when offstage. Developers who set pauseWhenHidden to false will need to set the VideoPlayer source to null before closing a pop-up, module or sub-application that contains a VideoPlayer.

QE notes: None.
Doc notes: Release note that a VideoDisplay can leak when VideoDisplay.pauseWhenHidden is false and VideoDisplay.source is not null or an empty string.
Bugs: SDK-27274
Reviewer: Ryan
Tests run: cyclone server
Is noteworthy for integration: No.

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/VideoDisplay.as

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

--- frameworks/projects/spark/src/spark/components/VideoDisplay.as
+++ frameworks/projects/spark/src/spark/components/VideoDisplay.as
@@ -473,6 +473,36 @@
      */
     private var inLoadingState3:Boolean;

+    /**
+     *  @private
+     *
+     *  Old value of videoPlayer.currentTimeUpdateInterval. We store the old
+     *  value when we are taken off the stage and pauseWhenHidden is true
+     *  (removedFromStageHandler). We restore the old value when we are added
+     *  to the stage (addedToStageHandler). The value is used in setupSource()
+     *  to turn the timers back on if they were disabled. The value if also used
+     *  to check if we should turn off the timers in videoPlayer_seekChangeHandler
+     *  and videoPlayer_currentTimeChangeHandler.
+     *  This is done to keep this component from being pinned in memory by the timer
+     *  associated the currentTimeUpdateInterval property.
+     */
+    private var oldCurrentTimeUpdateInterval:Number = NaN;
+
+    /**
+     *  @private
+     *
+     *  Old value of videoPlayer.bytesLoadedUpdateInterval. We store the old
+     *  value when we are taken off the stage and pauseWhenHidden is true
+     *  (removedFromStageHandler). We restore the old value when we are added
+     *  to the stage (addedToStageHandler). The value is used in setupSource()
+     *  to turn the timers back on if they were disabled. The value if also used
+     *  to check if we should turn off the timers in videoPlayer_seekChangeHandler
+     *  and videoPlayer_currentTimeChangeHandler.
+     *  This is done to keep this component from being pinned in memory by the timer
+     *  associated the bytesLoadedUpdateInterval property.
+     */
+    private var oldBytesLoadedUpdateInterval:Number = NaN;
+
     //--------------------------------------------------------------------------
     //
     //  Properties
@@ -1636,7 +1666,7 @@
                 videoElement = new org.osmf.elements.VideoElement(dsr, new RTMPDynamicStreamingNetLoader());
             }
         }
-        else if (source is String)
+        else if (source is String && source != "")
         {
             var urlResource:URLResource = new URLResource(source as String);
             videoElement = mediaFactory.createMediaElement(urlResource);
@@ -1670,7 +1700,7 @@
         // we're hidden or for some other reason), but we need to seek
         // to the first frame, then we have to do this on our own
         // by using our load() method.
-        if ((!autoPlay || !shouldBePlaying) && autoDisplayFirstFrame)
+        if (videoElement && (!autoPlay || !shouldBePlaying) && autoDisplayFirstFrame)
             load();

         // set videoPlayer's element to the newly constructed VideoElement
@@ -1679,6 +1709,14 @@

         if (videoElement)
         {
+            // If we are loading a video, make sure the timers are restored in case
+            // they had been disabled. The timers will be disabled again if we are
+            // only loading the first frame.
+            if (!isNaN(oldCurrentTimeUpdateInterval))
+            {
+                videoPlayer.currentTimeUpdateInterval = oldCurrentTimeUpdateInterval;
+                videoPlayer.bytesLoadedUpdateInterval = oldBytesLoadedUpdateInterval;
+            }

             if (videoElement.getMetadata(LayoutMetadata.LAYOUT_NAMESPACE) == null)
             {
@@ -1949,6 +1987,17 @@
         addEnabledListeners();

         computeEffectiveVisibilityAndEnabled();
+
+        // When added to the stage, restore some videoPlayer timers that we had
+        // disabled when we went offstage.
+        if (!isNaN(oldCurrentTimeUpdateInterval))
+        {
+            videoPlayer.currentTimeUpdateInterval = oldCurrentTimeUpdateInterval;
+            videoPlayer.bytesLoadedUpdateInterval = oldBytesLoadedUpdateInterval;
+
+            oldCurrentTimeUpdateInterval = NaN;
+            oldBytesLoadedUpdateInterval = NaN;
+        }

         // being added to the display list will not pause the video, but
         // it may play the video if pauseWhenHidden = true
@@ -1967,6 +2016,18 @@
             removeVisibilityListeners();

         removeEnabledListeners();
+
+        // Stop the timers associated with these intervals when we go
+        // offscreen so we are not pinned in memory. Save the old
+        // values of the timers so we can restore them when we come
+        // back on stage.
+        if (pauseWhenHidden)
+        {
+            oldCurrentTimeUpdateInterval = videoPlayer.currentTimeUpdateInterval;
+            oldBytesLoadedUpdateInterval = videoPlayer.bytesLoadedUpdateInterval;
+            videoPlayer.currentTimeUpdateInterval = -1;
+            videoPlayer.bytesLoadedUpdateInterval = -1;
+        }

         // being removed from the display list will pause the video if
         // pauseWhenHidden = true
@@ -2300,6 +2361,14 @@
             videoPlayer.muted = beforeLoadMuted;
             if (videoPlayer.displayObject)
                 videoPlayer.displayObject.visible = true;
+
+            // Disable the TimeEvents again that we had
+            // enabled for loading a video while offstage.
+            if (!isNaN(oldCurrentTimeUpdateInterval))
+            {
+                videoPlayer.currentTimeUpdateInterval = -1;
+                videoPlayer.bytesLoadedUpdateInterval = -1;
+            }
         }
     }

@@ -2309,9 +2378,9 @@
      *
      *  Work around for negative durations - see FM-1009.
      *  See want to seek to the first frame but can't because
-     *  the vidoe has a negative duration. So we listen to the
+     *  the video has a negative duration. So we listen to the
      *  current time. When we get a time change so we must be at
-     *  least the first frames so pause the video now and clean
+     *  least the first frame so pause the video now and clean
      *  up the load state variables.
      */
     private function videoPlayer_currentTimeChangeHandler(event:TimeEvent):void
@@ -2330,7 +2399,14 @@
         inLoadingState1 = false;
         inLoadingState2 = false;
         inLoadingState3 = false;
-
+
+        // Disable the TimeEvents again that we had
+        // enabled for loading a video while offstage.
+        if (!isNaN(oldCurrentTimeUpdateInterval))
+        {
+            videoPlayer.currentTimeUpdateInterval = -1;
+            videoPlayer.bytesLoadedUpdateInterval = -1;
+        }
     }

     /**
@@ -2340,7 +2416,7 @@
      *
      *  If we get a duration event that is negative while in
      *  inLoadingState2 is true, then listen for the first time
-     *  change event so we can pauase the video.
+     *  change event so we can pause the video.
      */
     private function videoPlayer_durationChangeHandler(event:TimeEvent):void
     {


Change 20090401-hqm-L by hqm@badtzmaru.home on 2009-04-01 19:01:21 EDT
    in /Users/hqm/openlaszlo/trunk/WEB-INF/lps/lfc
    for http://svn.openlaszlo.org/openlaszlo/trunk/WEB-INF/lps/lfc

Summary:  fix swf9 embedded font declarations

New Features:

Bugs Fixed: LPP-8011

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

Documentation:

Release Notes:

Details:

+ change type of var in lookup from LzFont to Object

Tests:

embedded font example runs without error

<canvas>
  <font src="uni-5-plain-expanded-s.ttf" name="myfont"/>
  <text font="myfont">myfont is oh-so good!</text>
</canvas>

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

--- WEB-INF/lps/lfc/kernel/swf9/LzFontManager.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzFontManager.as
@@ -75,14 +75,14 @@
         if (fns.length > 0) {
             for (var i:int = 0; i < fns.length; i++) {
                 fontname = fns[i];
-                var tfn:LzFont = LzFontManager.fonts[ fontname ];
+                var tfn:Object = LzFontManager.fonts[ fontname ];
                 if (tfn) {
                     return tfn[ style ];
                 }
             }
             return null;
         } else {
-            var tfn:LzFont = LzFontManager.fonts[ fontname ];
+            var tfn:Object = LzFontManager.fonts[ fontname ];
             if (tfn) {
                 return tfn[ style ];
             } else {


working on a good way to bounce off the wall

--- src/Mukik.as
+++ src/Mukik.as
@@ -80,55 +80,71 @@

 			if(bounce) {
 				for(var i:int = 0; i<snakeBods.length; i++) {
+
 					if (dir == "r") { //trying this out
+						/*
 						if (snake.x<b*2) {
-							snakeBods[i].y += bvy;
-							snakeBods[i].x += bvx;
+							snakeBods[i].y = snake.y;
+							snakeBods[i].x = snake.x;
 							//snakeBods[i].rotation = 90;
 						}
-						else if (snake.x<b*3) {
+						*/
+						if (snake.x<b*3) {
 							if(i==0) {
 								snakeBods[i].x = snake.x-b;
 								snakeBods[i].y = yTurn;
 								snakeBods[i].rotation = 90;
 							}
+
 							if (i>0) {
-								snakeBods[i].y += bvy;
-								snakeBods[i].x += bvx;
-							}
+							snakeBods[i].visible = false;
+							//snakeBods[i].y = yTurn+b;
+							}
+
 						}
 						else if (snake.x<b*4) {
 							if(i==1) {
 								snakeBods[i].x = snake.x-b*(i+1);
 								snakeBods[i].y = yTurn;
 								snakeBods[i].rotation = 90;
-							}
+								snakeBods[i].visible = true;
+							}
+							/*
 							if (i>1) {
 								snakeBods[i].y += bvy;
 								snakeBods[i].x += bvx;
-							}
+							}
+							*/
 						}
 						else if (snake.x<b*5) {
 							if(i==2) {
 								snakeBods[i].x = snake.x-b*(i+1);
 								snakeBods[i].y = yTurn;
 								snakeBods[i].rotation = 90;
-							}
+								snakeBods[i].visible = true;
+
+							}
+							/*
 							if (i>2) {
 								snakeBods[i].y += bvy;
 								snakeBods[i].x += bvx;
-							}
+							}
+							*/
 						}
 						else if (snake.x<b*6) {
 							if(i==3) {
 								snakeBods[i].x = snake.x-b*(i+1);
 								snakeBods[i].y = yTurn;
 								snakeBods[i].rotation = 90;
-							}
+								snakeBods[i].visible = true;
+
+							}
+							/*
 							if (i>3) {
 								snakeBods[i].y += bvy;
 								snakeBods[i].x += bvx;
-							}
+							}
+							*/
 						}
 						else {
 							bounce = false;


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

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

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

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

 package mx.rpc
 {


Allow Flash to throw an exception if the input is invalid

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

--- src/as/com/threerings/flash/DisplayUtil.as
+++ src/as/com/threerings/flash/DisplayUtil.as
@@ -38,8 +38,7 @@
                                           newChild :DisplayObject,
                                           below :DisplayObject) :void
     {
-        var ii :int = (below.parent == container ? container.getChildIndex(below) : 0);
-        container.addChildAt(newChild, ii);
+        container.addChildAt(newChild, container.getChildIndex(below));
     }

     /**
@@ -49,8 +48,7 @@
                                           newChild :DisplayObject,
                                           above :DisplayObject) :void
     {
-        var ii :int = (above.parent == container ? container.getChildIndex(above) + 1 : 0);
-        container.addChildAt(newChild, ii);
+        container.addChildAt(newChild, container.getChildIndex(above) + 1);
     }

     /**


Issue #95: Short-circuit Portal URL adjustment if Portal error response contains message.

--- src/com/esri/builder/components/PortalURLInputChecker.as
+++ src/com/esri/builder/components/PortalURLInputChecker.as
@@ -21,6 +21,7 @@
 import com.esri.builder.supportClasses.PortalUtil;
 import com.esri.builder.supportClasses.URLUtil;

+import mx.rpc.Fault;
 import mx.rpc.events.FaultEvent;
 import mx.utils.URLUtil;

@@ -122,11 +123,23 @@
     {
         removeURLCheckerListeners();

+        var fault:Fault = event.fault;
+
+        var isPortalErrorResponse:Boolean = fault.content
+            && fault.content.hasOwnProperty("code")
+            && fault.content.hasOwnProperty("message");
+        if (isPortalErrorResponse)
+        {
+            resetURLAdjusting();
+            displayInvalidURL(getInvalidMessage(fault));
+            return;
+        }
+
         if (isAdjustingURL && hasTriedExistingInstanceEndPoint
             && hasTriedDefaultInstanceEndPoint && hasTriedPortalEndPoint)
         {
             resetURLAdjusting();
-            displayInvalidURL(getInvalidMessage(event.fault));
+            displayInvalidURL(getInvalidMessage(fault));
             return;
         }
         else
@@ -178,7 +191,7 @@
             }

             resetURLAdjusting();
-            displayInvalidURL(getInvalidMessage(event.fault));
+            displayInvalidURL(getInvalidMessage(fault));
         }
     }


[HLSSettings] Add HLSSettings.recoverFromNonIDRStartFragment

--- src/org/mangui/hls/HLSSettings.as
+++ src/org/mangui/hls/HLSSettings.as
@@ -310,5 +310,16 @@
          * Default is true
          */
         public static var logError : Boolean = true;
+
+        /**
+         * recoverFromNonIDRStartFragment
+         *
+         * Load same sequence Fragment from previous Level and splice with
+         * current Fragment when that Fragment does not start with necessary
+         * AVC header.
+         *
+         * Default is true
+         */
+        public static var recoverFromNonIDRStartFragment : Boolean = true;
     }
 }


add tooltips for research progress indicators

--- src/battlecode/client/viewer/render/DrawHUDResearch.as
+++ src/battlecode/client/viewer/render/DrawHUDResearch.as
@@ -17,6 +17,8 @@

             horizontalScrollPolicy = "off";
             verticalScrollPolicy = "off";
+
+            toolTip = type;

             image = new Image();
             image.source = ResearchType.getImageAsset(type);