Transferred from the Adobe Open Source Subversion Repository

Revision: 7967
Author:   gosmith@adobe.com
Date:     2009-06-18T19:44:16.674676Z

Log Message:
-----------
PARB changes to TextGraphicElement/SimpleText/RichText and to text styles in general.

TextGraphicElement:

The 'truncation' property has been renamed to 'maxDisplayedLines'.

The isTruncated() method has become an 'isTruncated' read-only property.

RichText:

Since a TextFlow object is the fundamental representation for rich test in TLF, the RichText component now has a public textFlow:TextFlow property which you can get or set. To turn TLF markup -- in either String or XML form -- into a TextFlow, use the static importFromString() and importFromXML() methods in the TextFlowUtil class. These are bindable methods so that if the markup parameter changes they will re-evaluate. To turn the TextFlow back into markup, use TextFLowUtil.export(...) to produce XML.

The 'content' property is now intended only for use by the MXML compiler. It is set-only and only supports being set to what MXML markup produces: a String (which will be treated as the text of an implicit span in an implicit paragraph), a FlowElement, or an Array of Strings and FlowElements.

The 'text', 'textFlow', and 'content' properties are interacting properties. For example, you can set 'textFlow' and then get the 'text', and vice versa. In fact, you can now do this immediately, without waiting for the component to undergo a LayoutManager pass. Of these three properties, the last one set in ActionScript wins; if more than one is set in MXML the results are undefined since MXML does not guarantee the order in which properties are set. Setting any of them to null is equivalent to setting the 'text' to the empty String, which is the initial state of the component.

Styles:

The 'lineBreak' style is now non-inheriting, since in TLF it doesn't inherit from FlowElement to FlowElement.

The text styles are now divided into five buckets:

BasicInheritingTextStyles.as
BasicNonInheritingTextStyles.as
AdvancedInheritingTextStyles.as
AdvancedNonInheritingTextStyles.as
SelectionFormatTextStyles.as

Skinnable components like TextInput and TextArea no longer declare any on the noninheriting text styles, because the RichTextElement in the skin doesn't inherit them. You must set them directly on the RichTextElement in the component's skin, either with ActionScript or by reskinning.

The styleInitialized() method has been added to the IAdvancedStyleClient interface.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Carol

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/ButtonBarFirstButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonBarFirstButtonSkin.mxml</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/BasicTextLayoutFormatStyles.as" copyfrom-rev="7910" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/BasicInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/SparkChromeWindowedApplicationSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/WindowedApplicationSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/DefaultButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/ButtonBarLastButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonBarLastButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/DefaultButtonSkin.mxml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/AdvancedTextLayoutFormatStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProxy.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/BasicTextLayoutFormatStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/utils/TextFlowUtil.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/AdvancedNonInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonBarMiddleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/ButtonBarMiddleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/ButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ToggleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/ToggleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/windowChrome/TitleBarSkin.mxml</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/NonInheritingTextLayoutFormatStyles.as" copyfrom-rev="7910" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/BasicNonInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/SimpleText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/CheckBoxSkin.mxml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/NonInheritingTextLayoutFormatStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/RadioButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IAdvancedStyleClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/RadioButtonSkin.mxml</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/AdvancedTextLayoutFormatStyles.as" copyfrom-rev="7910" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/AdvancedInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/windowChrome/MacTitleBarSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
@@ -180,12 +180,6 @@

     /**
      *  @private
-     *  True if the text was truncated.
-     */
-    mx_internal var isTextTruncated:Boolean = false;
-
-    /**
-     *  @private
      *  The value of bounds.width, before the compose was done.
      */
     private var _composeWidth:Number;
@@ -269,7 +263,7 @@
     	visibleChanged = true;

     	invalidateDisplayList();
-        }
+    }

     //--------------------------------------------------------------------------
     //
@@ -478,6 +472,90 @@
     //
     //--------------------------------------------------------------------------

+	//----------------------------------
+	//  isTruncated
+	//----------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the isTruncated property.
+	 */
+	mx_internal var _isTruncated:Boolean = false;
+
+	/**
+	 *  Determines if the text, once composed, has been truncated.
+	 *
+	 *  @return true if the text has been truncated.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10
+	 *  @playerversion AIR 1.5
+	 *  @productversion Flex 4
+	 */
+	public function get isTruncated():Boolean
+	{
+		// For some reason, the compiler needs an explicit cast to Boolean
+		// to avoid a warning even though at runtime "is Boolean" is true.
+		return Boolean(_isTruncated);
+	}
+
+	//----------------------------------
+	//  maxDisplayedLines
+	//----------------------------------
+
+	/**
+	 *  @private
+	 */
+	private var _maxDisplayedLines:int = 0;
+
+	/**
+	 *  Documentation is not currently available.
+	 *  This property is ignored if lineBreak="explicit".
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10
+	 *  @playerversion AIR 1.5
+	 *  @productversion Flex 4
+	 */
+	public function get maxDisplayedLines():int
+	{
+		return _maxDisplayedLines;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set maxDisplayedLines(value:int):void
+	{
+		if (value != _maxDisplayedLines)
+		{
+			_maxDisplayedLines = value;
+
+			invalidateTextLines();
+
+			invalidateSize();
+			invalidateDisplayList();
+		}
+	}
+
+	/**
+	 *  @private
+	 */
+	override public function canShareWithNext(element:IGraphicElement):Boolean
+	{
+		return false;
+		// TODO: Returning false is a temporary workaround to fix SDK-21084
+		// for Beta 1. The real problem involves how Group does z-ordering
+		// of its children without taking TextLines into account.
+		// We should restore the code below after we have a proper fix
+		// for SDK-21084.
+
+		// We can share with the next GraphicElement only if it is also
+		// a TextGraphicElement, as TextGraphicElements add child DisplayObjects
+		// instead of drawing the the DisplayObject's graphics.
+		//return element is TextGraphicElement && super.canShareWithNext(element);
+	}
+
     //----------------------------------
     //  styleChainInitialized
     //----------------------------------
@@ -522,69 +600,12 @@
         {
             _text = value;

-            invalidateTextLines("text");
+            invalidateTextLines();
             invalidateSize();
             invalidateDisplayList();
         }
     }

-    //----------------------------------
-    //  truncation
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    private var _truncation:int = 0;
-
-    /**
-     *  Documentation is not currently available.
-     *  This property is ignored if lineBreak="explicit".
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get truncation():int
-    {
-    	return _truncation;
-    }
-
-    /**
-     *  @private
-     */
-    public function set truncation(value:int):void
-    {
-    	if (value != _truncation)
-    	{
-    		_truncation = value;
-
-            invalidateCompose = true;
-
-    		invalidateSize();
-    		invalidateDisplayList();
-    	}
-    }
-
-    /**
-     *  @private
-     */
-    override public function canShareWithNext(element:IGraphicElement):Boolean
-    {
-        return false;
-        // TODO: Returning false is a temporary workaround to fix SDK-21084
-        // for Beta 1. The real problem involves how Group does z-ordering
-        // of its children without taking TextLines into account.
-        // We should restore the code below after we have a proper fix
-        // for SDK-21084.
-
-        // We can share with the next GraphicElement only if it is also
-        // a TextGraphicElement, as TextGraphicElements add child DisplayObjects
-        // instead of drawing the the DisplayObject's graphics.
-        //return element is TextGraphicElement && super.canShareWithNext(element);
-    }
-
     //--------------------------------------------------------------------------
     //
     //  Overridden methods: GraphicElement
@@ -914,7 +935,7 @@
     {
         StyleProtoChain.styleChanged(this, styleProp);

-        invalidateCompose = true;
+        invalidateTextLines();
     }

     //--------------------------------------------------------------------------
@@ -1075,26 +1096,9 @@
      */
     public function stylesInitialized():void
     {
-        invalidateCompose = true;
-    }
-
-    /**
-     *  Determines if the text, once composed, has been truncated.
-     *
-     *  @return true if the text has been truncated.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function isTruncated():Boolean
-    {
-        // For some reason, the compiler needs an explicit cast to Boolean
-        // to avoid a warning even though at runtime "is Boolean" is true.
-        return Boolean(isTextTruncated);
-    }
-
+        invalidateTextLines();
+    }
+
     /**
      *  @private
      */
@@ -1106,7 +1110,7 @@
     /**
      *  @private
      */
-    mx_internal function invalidateTextLines(cause:String):void
+    mx_internal function invalidateTextLines():void
     {
         invalidateCompose = true;
     }
@@ -1164,19 +1168,19 @@
             (isOverset || !isNaN(_composeHeight)))
             return true;

-        if (truncation != 0 && getStyle("lineBreak") == "toFit")
+        if (maxDisplayedLines != 0 && getStyle("lineBreak") == "toFit")
         {
             // -1 is fill the bounds and the bounds changed so recompose.
-            if (truncation == -1)
+            if (maxDisplayedLines == -1)
                 return true;

             // If truncating at n lines and the height got smaller, may need to
             // redo the truncation. Or if the height got larger, only have to
             // redo the truncation if we don't already have the number of
             // truncation lines needed.
-            if (truncation > 0 &&
-               (unscaledHeight < bounds.height ||
-               textLines.length != truncation))
+            if (maxDisplayedLines > 0 &&
+                (unscaledHeight < bounds.height ||
+                 textLines.length != maxDisplayedLines))
             {
                 return true;
             }
@@ -1219,7 +1223,7 @@
 	    _composeWidth = width;
 	    _composeHeight = height;

-	    isTextTruncated = false;
+	    _isTruncated = false;

 	    return false;
 	}
@@ -1463,7 +1467,7 @@
             "core", "truncationIndicator");

         // If we're truncating, recompose the text.
-        if (truncation != 0)
+        if (maxDisplayedLines != 0)
         {
             invalidateCompose = true;


hack ButtonBar into compiling cleanly.  Probably needs revisiting

--- frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as
+++ frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as
@@ -19,14 +19,15 @@
 package org.apache.flex.html.beads.layouts
 {
 	import org.apache.flex.core.IBeadLayout;
-	import org.apache.flex.core.IItemRenderer;
 	import org.apache.flex.core.IItemRendererClassFactory;
 	import org.apache.flex.core.IItemRendererParent;
 	import org.apache.flex.core.ILayoutParent;
 	import org.apache.flex.core.ISelectionModel;
+    import org.apache.flex.core.ISelectableItemRenderer;
 	import org.apache.flex.core.IStrand;
     import org.apache.flex.core.IParent;
     import org.apache.flex.core.IUIBase;
+    import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
@@ -102,19 +103,26 @@
 		 */
 		private function changeHandler(event:Event):void
 		{
-			var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent;
-			var contentView:IParent = layoutParent.contentView;
-
-			var n:int = contentView.numElements;
+            var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent;
+            var contentView:IParent = layoutParent.contentView;
+
+            var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+            var dp:Array = selectionModel.dataProvider as Array;
+            if (!dp)
+                return;
+
+            var itemRendererFactory:IItemRendererClassFactory = _strand.getBeadByType(IItemRendererClassFactory) as IItemRendererClassFactory;
+
+			var n:int = dp.length;
 			var xpos:Number = 0;
 			var useWidth:Number = IUIBase(_strand).width / n;
 			var useHeight:Number = IUIBase(_strand).height;

 			for (var i:int = 0; i < n; i++)
 			{
-				var ir:IItemRenderer = IItemRendererParent(contentView).getItemRendererForIndex(i);
+				var ir:ISelectableItemRenderer = IItemRendererParent(contentView).getItemRendererForIndex(i) as ISelectableItemRenderer;
 				if (ir == null) {
-					ir = itemRendererFactory.createItemRenderer(contentView as IItemRendererParent) as IItemRenderer;
+					ir = itemRendererFactory.createItemRenderer(contentView as IItemRendererParent) as ISelectableItemRenderer;
 				}
 				ir.index = i;
 				ir.labelField = (_strand as List).labelField;


Transferred from the Adobe Open Source Subversion Repository

Revision: 18767
Author:   dloverin@adobe.com
Date:     2010-11-22T12:13:05.651102Z

Log Message:
-----------
RSL Sharing Among Modules feature check-in.

Made PARB changes.
Added Compiler API and FlexTask for 'application-domain' option.
Renamed compiler option 'application-domains' to 'application-domain'.

frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as
    addPreloadedRSL() stub.

frameworks/projects/framework/src/mx/core/ApplicationDomainTarget.as
    ASDoc change.

frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as
    Update due to PARB changes in RSLData.

frameworks/projects/framework/src/mx/core/FlexModuleFactory.as
    PARB changes.

frameworks/projects/framework/src/mx/core/IFlexModuleFactory.as
    Add addPreloadedRSL() to interface. Changes rsl parameter type from Array to Vector.<RSLData>.

frameworks/projects/framework/src/mx/core/RSLData.as
    PARB changes:
•        Change var to getters for read-only properties except for moduleFactory.

•        Rename url to rslURL.

•        Rename policyFileUrl to policyFileURL

frameworks/projects/framework/src/mx/managers/SystemManager.as
    PARB changes.

frameworks/projects/framework/src/mx/utils/LoaderUtil.as
    PARB changes and implement new rule where a sub-app/module loaded into the top-level appdomain has its RSLs loaded into the top-level application. The RSLs can them be shared with other sub-apps/modules of the top-level application.

modules/antTasks/src/flex/ant/MxmlcTask.java
    new ant task for “application-domain” option.

modules/compiler/src/java/flex2/compiler/common/Configuration.java
    add alias “rsl-domain” for “application-domain”.

modules/compiler/src/java/flex2/compiler/common/RuntimeSharedLibrarySettingsConfiguration.java
    Rename “application-domains” option to “application-domain”.

modules/compiler/src/java/flex2/configuration_en.properties
modules/compiler/src/java/flex2/tools/flexbuilder/BuilderConfiguration.java
modules/compiler/src/java/flex2/tools/oem/Configuration.java
modules/compiler/src/java/flex2/tools/oem/internal/ConfigurationConstants.java
modules/compiler/src/java/flex2/tools/oem/internal/OEMConfiguration.java
    Add Compiler API for setting “application-domain”.

modules/compiler/src/java/flex2/tools/PreLink.java
    Generate stub code for addPreloadedRSL().

QE notes: None.
Doc notes: None.
Bugs:
Reviewer: Alex
Tests run: cyclone server, checkintests
Is noteworthy for integration: Yes.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/configuration_en.properties</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/tools/oem/internal/OEMConfiguration.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/compiler/common/Configuration.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/compiler/common/RuntimeSharedLibrarySettingsConfiguration.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/RSLData.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/FlexModuleFactory.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ApplicationDomainTarget.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/tools/flexbuilder/BuilderConfiguration.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/IFlexModuleFactory.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/tools/oem/Configuration.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/LoaderUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/antTasks/src/flex/ant/MxmlcTask.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/tools/oem/internal/ConfigurationConstants.java</path>

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

--- frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as
+++ frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as
@@ -99,7 +99,7 @@
                              rootURL:String = null,
                              moduleFactory:IFlexModuleFactory = null)
     {
-        super(rsls[0].url, rootURL, moduleFactory);
+        super(rsls[0].rslURL, rootURL, moduleFactory);

         this.rsls = rsls;

@@ -192,7 +192,7 @@
 */

         var rslData:RSLData = currentRSLData;
-        urlRequest = new URLRequest(LoaderUtil.createAbsoluteURL(rootURL, rslData.url));
+        urlRequest = new URLRequest(LoaderUtil.createAbsoluteURL(rootURL, rslData.rslURL));

         var loader:URLLoader = new URLLoader();
         loader.dataFormat = URLLoaderDataFormat.BINARY;
@@ -211,9 +211,9 @@
         loader.addEventListener(
             SecurityErrorEvent.SECURITY_ERROR, itemErrorHandler);

-        if (rslData.policyFileUrl != "")
-        {
-            Security.loadPolicyFile(rslData.policyFileUrl);
+        if (rslData.policyFileURL != "")
+        {
+            Security.loadPolicyFile(rslData.policyFileURL);
         }

         if (rslData.isSigned)
@@ -273,13 +273,9 @@

         context.securityDomain = null;

-        // If the AIR flag is available then set it to true so we can
-        // load the RSL without a security error.
-        if ("allowLoadBytesCodeExecution" in context)
-        {
-            context["allowLoadBytesCodeExecution"] = true;
-        }
-
+        // Set the allowCodeImport flag so we can load the RSL without a security error.
+        context.allowCodeImport = true;
+
         // verify the digest, if any, is correct
         if (rslData.digest != null && rslData.verifyDigest)
         {
@@ -361,10 +357,10 @@
         // try to load the failover from the same node again
         if (urlIndex < rsls.length)
         {
-            trace("Failed to load RSL " + currentRSLData.url);
-            trace("Failing over to RSL " + RSLData(rsls[urlIndex+1]).url);
+            trace("Failed to load RSL " + currentRSLData.rslURL);
+            trace("Failing over to RSL " + RSLData(rsls[urlIndex+1]).rslURL);
             urlIndex++;        // move to failover url
-            url = currentRSLData.url;
+            url = currentRSLData.rslURL;
             load(chainedProgressHandler,
                  chainedCompleteHandler,
                  chainedIOErrorHandler,
@@ -372,8 +368,6 @@
                  chainedRSLErrorHandler);
         }
     }
-
-

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


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

--- frameworks/projects/framework/src/mx/styles/CSSConditionKind.as
+++ frameworks/projects/framework/src/mx/styles/CSSConditionKind.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2008 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


fixed bug where shortName was taking precedence over qualifiedName

--- WeaveJS/src/weavejs/core/ClassRegistryImpl.as
+++ WeaveJS/src/weavejs/core/ClassRegistryImpl.as
@@ -70,17 +70,18 @@
 		public function registerClass(qualifiedName:String, definition:Class, interfaces:Array = null):void
 		{
 			map_name_class.set(qualifiedName, definition);
-			map_class_name.set(definition, qualifiedName);
-
-			var shortName:String = qualifiedName.split('.').pop().split(':').pop();
-			if (shortName != qualifiedName)
-				registerClass(shortName, definition);
+			if (!map_class_name.has(definition))
+				map_class_name.set(definition, qualifiedName);

 			if (!definition.prototype[FLEXJS_CLASS_INFO])
 				definition.prototype[FLEXJS_CLASS_INFO] = {
 					names: [{ name: shortName, qName: qualifiedName}],
 					interfaces: interfaces || []
 				};
+
+			var shortName:String = qualifiedName.split('.').pop().split(':').pop();
+			if (shortName != qualifiedName)
+				registerClass(shortName, definition);
 		}

 		/**


Added disconnected from server message.

Added disconnected from server message.

--- bin/Data/AngelScript/Ingame/StateAdapter.as
+++ bin/Data/AngelScript/Ingame/StateAdapter.as
@@ -30,6 +30,7 @@
         {
             SubscribeToEvent ("NetworkMessage", "HandleEvent");
             SubscribeToEvent ("UIMouseClickEnd", "HandleEvent");
+            SubscribeToEvent ("ServerDisconnected", "HandleEvent");

             stateUi.Setup ();
             localSceneManager.Setup ();
@@ -53,7 +54,14 @@

         void HandleEvent (StringHash eventType, VariantMap &eventData)
         {
-            if (eventType == StringHash ("NetworkMessage"))
+            if (eventType == StringHash ("ServerDisconnected"))
+            {
+                ErrorDialog ("Disconnected from server!",
+                             "Disconnected from server!\nServers' adress: " + SharedGlobals::lastAdress +
+                             ":" + SharedGlobals::lastPort + ".");
+                engine.Exit ();
+            }
+            else if (eventType == StringHash ("NetworkMessage"))
                 networkHandler.HandleEvent (eventType, eventData);
             else if (eventType == StringHash ("UIMouseClickEnd"))
                 uiListener.HandleEvent (eventType, eventData);


Transferred from the Adobe Open Source Subversion Repository

Revision: 14354
Author:   jimurphy@adobe.com
Date:     2010-02-23T15:05:48.761194Z

Log Message:
-----------
resetting the build number in version.as
The build automated process checked it in as 4.5.0.13964 when it should have been 4.5.0.0

QE notes: no
Doc notes: no
Bugs: https://bugs.adobe.com/jira/browse/SDK-25489
Reviewer: no
Tests run: ran version test included in the bug
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_air/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_flashflexkit/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_dmv/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airspark/src/spark/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Version.as</path>

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

--- frameworks/projects/charts/src/mx/core/Version.as
+++ frameworks/projects/charts/src/mx/core/Version.as
@@ -15,4 +15,4 @@
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.5.0.13964";
+mx_internal static const VERSION:String = "4.5.0.0";


Transferred from the Adobe Open Source Subversion Repository

Revision: 9577
Author:   clucier@adobe.com
Date:     2009-08-25T17:05:48.329759Z

Log Message:
-----------
Application now uses % width/height of its owning SystemManager when considering percentWidth/Height.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/mx/src/mx/core/Application.as
+++ frameworks/projects/mx/src/mx/core/Application.as
@@ -1620,7 +1620,7 @@
         // the application will not resize.
         // If developer has specified percent width/height,
         // application will resize to the required value
-        // based on the current stage width/height.
+        // based on the current SystemManager's width/height.
         // If developer has specified min/max values,
         // then application will not resize beyond those values.

@@ -1637,7 +1637,11 @@
             {
                 super.percentWidth = Math.max(percentWidth, 0);
                 super.percentWidth = Math.min(percentWidth, 100);
-                w = percentWidth*screen.width/100;
+
+                if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_0)
+                    w = percentWidth * DisplayObject(systemManager).width/100;
+                else
+                    w = percentWidth * screen.width/100;
             }

             if (!isNaN(explicitMaxWidth))
@@ -1661,7 +1665,11 @@
             {
                 super.percentHeight = Math.max(percentHeight, 0);
                 super.percentHeight = Math.min(percentHeight, 100);
-                h = percentHeight*screen.height/100;
+
+                if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_0)
+                    h = percentHeight * DisplayObject(systemManager).height/100;
+                else
+                    h = percentHeight * screen.height/100;
             }

             if (!isNaN(explicitMaxHeight))


ImageEditor, Flash: Make the default resizing method actually work (looks like it uses nearest neighbour).

--- src/flash/src/com/ImageEditor.as
+++ src/flash/src/com/ImageEditor.as
@@ -36,7 +36,7 @@
 		private var _bdOriginal:BitmapData;
 		private var _bd:BitmapData;

-		private var _matrix:Matrix = new Matrix();
+		private var _matrix:Matrix = null;

 		private var _history:Array = [];
 		private var _historyIndex:int = 0;
@@ -127,7 +127,7 @@
 						_bd.dispose();
 						_bd = null;
 					}
-					_matrix = new Matrix();
+					_matrix = null;
 				}
 			}
 		}
@@ -187,6 +187,9 @@

 		protected function _rotate(angle:Number) : void
 		{
+			if (!_matrix) {
+				_matrix = new Matrix;
+			}
 			_matrix.translate(-_bd.width/2,-_bd.height/2);
 			_matrix.rotate(angle / 180 * Math.PI);
 			_matrix.translate(_bd.width/2,_bd.height/2);
@@ -195,6 +198,9 @@

 		protected function _flipH() : void
 		{
+			if (!_matrix) {
+				_matrix = new Matrix;
+			}
 			_matrix.scale(-1, 1);
 			_matrix.translate(_bd.width, 0);
 			onOperationComplete();
@@ -203,6 +209,9 @@

 		protected function _flipV() : void
 		{
+			if (!_matrix) {
+				_matrix = new Matrix;
+			}
 			_matrix.scale(1, -1);
 			_matrix.translate(0, _bd.height);
 			onOperationComplete();
@@ -210,6 +219,9 @@

 		protected function _resize(w:Number, h:Number) : void
 		{
+			if (!_matrix) {
+				_matrix = new Matrix;
+			}
 			_matrix.scale(w / _bd.width, h / _bd.height);
 			onOperationComplete();
 		}
@@ -221,6 +233,12 @@
 				_bd = _bdOriginal.clone();
 			}
 			draw();
+
+			if (scale == 1) {
+				onOperationComplete();
+				onDrawComplete();
+				return;
+			}

 			var step:uint = 1;
 			var dstWidth:Number = _bd.width * scale;
@@ -248,10 +266,11 @@

 				// special care for default scaling method
 				if (resample == 'default') {
+					_matrix = new Matrix;
 					_matrix.scale(newScale, newScale);
-					onOperationComplete();
 					draw();
-					if (scale < 1 && _bd.width <= dstWidth || _bd.width >= dstWidth) {
+					if (scale < 1 && _bd.width <= dstWidth || scale > 1 && _bd.width >= dstWidth) {
+						onOperationComplete();
 						onDrawComplete();
 					} else {
 						dispatchEvent(new OProgressEvent(OProgressEvent.PROGRESS, step++, totalSteps));
@@ -292,7 +311,7 @@
 					_bd.dispose();
 					_bd = tmpBd;

-					if (scale < 1 && tmpBd.width <= dstWidth || tmpBd.width >= dstWidth) {
+					if (scale < 1 && tmpBd.width <= dstWidth || scale > 1 && tmpBd.width >= dstWidth) {
 						onOperationComplete();
 						onDrawComplete();
 					} else {
@@ -412,7 +431,7 @@
 		 */
 		private function draw() : void
 		{
-			if (_renderIndex >= _commitIndex) {
+			if (!_matrix) {
 				return;
 			}

@@ -441,7 +460,7 @@
 			_bd.dispose();
 			_bd = result;

-			_matrix = new Matrix();
+			_matrix = null;
 		}


reformat

reformat

--- as/main/frame1.as
+++ as/main/frame1.as
@@ -80,8 +80,9 @@
 	this.m02.scaleTo (113, .6, 'easeOutQuad', .5);
 }

-var enterEshopListener = new Object ();
-enterEshopListener.click = function (e)
+var enterEshopListener:Object = new Object ();
+
+enterEshopListener.click = function (e:Object)
 {
 	var entrar = getTimer () + 1500;
 	this.entrar_mc = target;


adding ISkin

adding ISkin

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

--- src/laml/xml/LAMLParser.as
+++ src/laml/xml/LAMLParser.as
@@ -1,4 +1,5 @@
 package laml.xml {
+	import flash.display.Sprite;
 	import flash.errors.IllegalOperationError;
 	import flash.utils.getDefinitionByName;

@@ -10,20 +11,24 @@
 		public static const PROCESSING_INSTRUCTION:String 	= "processing-instruction";
 		public static const TEXT:String 					= "text";

-		public function parse(xml:XML):Object {
-			var result:Object = parseNode(xml);
+		public function parse(xml:XML, skin:ISkin=null):Object {
+			var result:Object = parseNode(xml, null, null, skin);
 			//parsePendingAttributes(result);
 			return result;
 		}

-		public function parseLayoutable(xml:XML):Layoutable {
-			return parse(xml) as Layoutable;
+		public function parseLayoutable(xml:XML, skin:ISkin=null):Layoutable {
+			return parse(xml, skin) as Layoutable;
 		}

-		protected function parseNode(xml:XML, parent:Object=null, root:Object=null):Object {
+		protected function parseNode(xml:XML, parent:Object=null, root:Object=null, skin:ISkin=null):Object {
 			root = (root == null) ? parent : root;
 			preVisitNode(xml, parent, root);
 			var instance:Object = visitNode(xml, parent, root);
+			if(instance is Layoutable) {
+				instance.skin = skin;
+			}
+
 			postVisitNode(xml, parent, root);
 			return instance;
 		}


- added support for first child and last child setting to UIObject
- some cleanup in UIObject

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

--- src/reprise/ui/UIObject.as
+++ src/reprise/ui/UIObject.as
@@ -10,8 +10,6 @@
 ////////////////////////////////////////////////////////////////////////////////

 package reprise.ui {
-	import reprise.events.DisplayEvent;
-
 	import flash.display.DisplayObject;
 	import flash.display.DisplayObjectContainer;
 	import flash.display.Sprite;
@@ -19,6 +17,8 @@
 	import flash.geom.Point;
 	import flash.utils.getDefinitionByName;
 	import flash.utils.getQualifiedClassName;
+
+	import reprise.events.DisplayEvent;
 	public class UIObject extends Sprite
 	{
 		/***************************************************************************
@@ -145,18 +145,7 @@

 		public override function addChild(child : DisplayObject) : DisplayObject
 		{
-			if (child is UIObject)
-			{
-				m_contentDisplay.addChild(child);
-				UIObject(child).setParent(this);
-				m_children.push(child);
-				invalidate();
-			}
-			else
-			{
-				m_contentDisplay.addChild(child);
-			}
-			return child;
+			return addChildAt(child, m_children.length);
 		}

 		public override function addChildAt(
@@ -164,8 +153,38 @@
 		{
 			if (child is UIObject)
 			{
+				var element : UIObject = UIObject(child);
 				m_contentDisplay.addChildAt(child, index);
-				UIObject(child).setParent(this);
+				element.setParent(this);
+
+
+				if (index == 0)
+				{
+					element.m_isFirstChild = true;
+					if (m_children.length)
+					{
+						UIObject(m_children[0]).m_isFirstChild = false;
+					}
+				}
+				//if the child is reparented, the value needs to be reset
+				else
+				{
+					element.m_isFirstChild = false;
+				}
+				if (index == m_children.length)
+				{
+					element.m_isLastChild = true;
+					if (m_children.length)
+					{
+						UIObject(m_children[m_children.length-1]).m_isLastChild = false;
+					}
+				}
+				//if the child is reparented, the value needs to be reset
+				else
+				{
+					element.m_isLastChild = false;
+				}
+
 				m_children.splice(index, 0, child);
 				invalidate();
 			}
@@ -752,8 +771,8 @@
 		}
 		protected function validateChildren() : void
 		{
-			var childCount : uint = m_children.length;
-			for (var i : uint = 0; i < childCount; i++)
+			var childCount : int = m_children.length;
+			for (var i : int = 0; i < childCount; i++)
 			{
 				validateChild(UIObject(m_children[i]));
 			}
@@ -789,8 +808,8 @@
 			{
 				return;
 			}
-			var len : Number = m_children.length;
-			var i : uint;
+			var len : int = m_children.length;
+			var i : int;
 			var keyOrder : Array = [];

 			for (i = 0; i < len; i++)


Changed trim algorithm

Changed trim algorithm

--- flash/src/org/flashsocket/utils/StringUtil.as
+++ flash/src/org/flashsocket/utils/StringUtil.as
@@ -3,7 +3,7 @@

 	public class StringUtil {
 		public static function trim(input:String):String {
-			return input.replace(/^([\s|\t|\n]+)?(.*)([\s|\t|\n]+)?$/gm, "$2");
+			return input.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
 		}

 		public static function toBytes(input:String):ByteArray {


Added IconButton to Runner

Added IconButton to Runner

--- src/LAMLRunner.as
+++ src/LAMLRunner.as
@@ -3,6 +3,7 @@

 	import laml.display.Component;
 	import laml.display.HBox;
+	import laml.display.IconButton;
 	import laml.display.VBox;

 	public class LAMLRunner extends TestRunner {
@@ -10,6 +11,7 @@
 		private var hboxRef:HBox;
 		private var vboxRef:VBox;
 		private var component:Component;
+		private var iconButton:IconButton;

 		public function LAMLRunner() {
 			// start(clazz:Class, methodName:String, showTrace:Boolean)


Fixed bug in ProjectionManager's internal Projector class where the z
value of the temporary ProjPoint wasn't being reset.
Projector objects are now cached.

Change-Id: I3f69a7a4a877a13c772da764099a1414521b8c7e

--- WeaveData/src/weave/data/ProjectionManager.as
+++ WeaveData/src/weave/data/ProjectionManager.as
@@ -66,7 +66,7 @@
 			var ba:ByteArray = (new ProjDatabase()) as ByteArray;
 			ba.uncompress();
 			var defs:Object = ba.readObject();
-			for(var key:String in defs)
+			for (var key:String in defs)
 				ProjProjection.defs[key] = defs[key];

 			projectionsInitialized = true;
@@ -75,9 +75,9 @@

 		/**
 		 * This is a multi-dimensional lookup:   unprojectedColumn -> Object, destinationSRS -> ProxyColumn
-		 * Example: cache[column][destinationSRS] is a ProxyColumn containing geometries reprojected to the given SRS.
+		 * Example: _reprojectedColumnCache[column][destinationSRS] is a ProxyColumn containing geometries reprojected to the given SRS.
 		 */
-		private const cache:Dictionary = new Dictionary(true); // weak links to be gc-friendly
+		private const _reprojectedColumnCache:Dictionary = new Dictionary(true); // weak links to be gc-friendly

 		/**
 		 * This function will return the projected column if a reprojection should be performed or the original column if there is no projection.
@@ -96,11 +96,11 @@
 				return unprojectedColumn;

 			// check the cache
-			var srsCache:Object = cache[unprojectedColumn] as Object;
+			var srsCache:Object = _reprojectedColumnCache[unprojectedColumn] as Object;
 			if (srsCache == null)
 			{
 				srsCache = new Object(); // destinationSRS -> ProxyColumn
-				cache[unprojectedColumn] = srsCache;
+				_reprojectedColumnCache[unprojectedColumn] = srsCache;
 			}
 			var proxyColumn:ProxyColumn = srsCache[destinationProjectionSRS] as ProxyColumn;

@@ -138,10 +138,17 @@
 		 * @return An IProjector object that reprojects from sourceSRS to destinationSRS.
 		 */
 		public function getProjector(sourceSRS:String, destinationSRS:String):IProjector
-		{
-			var source:ProjProjection = getProjection(sourceSRS);
-			var dest:ProjProjection = getProjection(destinationSRS);
-			return new Projector(source, dest);
+		{
+			var lookup:String = sourceSRS + ';' + destinationSRS;
+			var projector:IProjector = _projectorCache[lookup] as IProjector;
+			if (!projector)
+			{
+				var source:ProjProjection = getProjection(sourceSRS);
+				var dest:ProjProjection = getProjection(destinationSRS);
+				projector = new Projector(source, dest);
+				_projectorCache[lookup] = projector;
+			}
+			return projector;
 		}

 		/**
@@ -253,29 +260,31 @@

 			srsCode = srsCode.toUpperCase();

-			if (srsToProjMap.hasOwnProperty(srsCode))
-				return srsToProjMap[srsCode];
+			if (_srsToProjMap.hasOwnProperty(srsCode))
+				return _srsToProjMap[srsCode];

 			if (projectionExists(srsCode))
-				return srsToProjMap[srsCode] = new ProjProjection(srsCode);
+				return _srsToProjMap[srsCode] = new ProjProjection(srsCode);

 			return null;
 		}
-
-		/**
-		 * srsToProjMap
+
+		/**
+		 * This maps a pair of SRS codes separated by a semicolon to a Projector object.
+		 */
+		private const _projectorCache:Object = {};
+
+		/**
 		 * This maps an SRS Code to a cached ProjProjection object for that code.
 		 */
-		private const srsToProjMap:Object = new Object();
-
-		/**
-		 * _tempProjPoint
+		private const _srsToProjMap:Object = {};
+
+		/**
 		 * This is a temporary object used for single point transformations.
 		 */
 		private const _tempProjPoint:ProjPoint = new ProjPoint();

 		/**
-		 * _tempInputPoint
 		 * This is a temporary object used only in transformBounds.
 		 */
 		private const _tempPoint:Point = new Point();
@@ -423,7 +432,7 @@
 			// continue later if necessary
 			if (StageUtils.shouldCallLater)
 			{
-				WeaveAPI.ProgressIndicator.updateTask(this, keyIndex / (keys.length - 1));
+				WeaveAPI.ProgressIndicator.updateTask(this, keyIndex / keys.length);
 				StageUtils.callLater(unprojectedColumn, processGeometries, arguments);
 				return;
 			}
@@ -487,7 +496,7 @@
 			// continue later if necessary
 			if (StageUtils.shouldCallLater)
 			{
-				WeaveAPI.ProgressIndicator.updateTask(coordsVector, coordsVectorIndex / (coordsVector.length - 1));
+				WeaveAPI.ProgressIndicator.updateTask(coordsVector, coordsVectorIndex / coordsVector.length);
 				StageUtils.callLater(unprojectedColumn, processGeometries, arguments);
 				return;
 			}
@@ -522,9 +531,10 @@

 		tempProjPoint.x = inputAndOutput.x;
 		tempProjPoint.y = inputAndOutput.y;
+		tempProjPoint.z = NaN; // this is important in case the projection reads the z value.
 		if (Proj4as.transform(source, dest, tempProjPoint))
 		{
-			inputAndOutput.x = tempProjPoint.x;
+			inputAndOutput.x = tempProjPoint.x;
 			inputAndOutput.y = tempProjPoint.y;
 			return inputAndOutput;
 		}


fixed bug where geometry reprojection didn't happen

--- WeaveData/src/weave/data/ProjectionManager.as
+++ WeaveData/src/weave/data/ProjectionManager.as
@@ -406,19 +406,17 @@
 		}

 		// set metadata on proxy column
-		//TODO: this metadata may not be sufficient... IAttributeColumn may need a way to list available metadata property names
-		// or provide another column to get metadata from
-		var metadata:XML = <attribute
-			title={ ColumnUtils.getTitle(unprojectedColumn) }
-			keyType={ ColumnUtils.getKeyType(unprojectedColumn) }
-			dataType={ DataType.GEOMETRY }
-			projection={ destinationProjSRS }
-		/>;
+		var metadata:Object = ColumnMetadata.getAllMetadata(unprojectedColumn);
+		metadata[ColumnMetadata.DATA_TYPE] = DataType.GEOMETRY;
+		metadata[ColumnMetadata.PROJECTION] = destinationProjSRS;
 		reprojectedColumn.setMetadata(metadata);

-		// try to find internal StreamedGeometryColumn(s)
-		var streamedColumn:StreamedGeometryColumn;
+		// wake up any columns such as ReferencedColumn that wait before registering child columns
+		var streamedColumn:StreamedGeometryColumn = ColumnUtils.hack_findNonWrapperColumn(unprojectedColumn) as StreamedGeometryColumn;
+		// try to find other internal StreamedGeometryColumn(s)
 		var streamedColumns:Array = getLinkableDescendants(unprojectedColumn, StreamedGeometryColumn);
+		if (streamedColumn)
+			streamedColumns.unshift(streamedColumn);

 		// Request the full unprojected detail because we don't know how much unprojected
 		// detail we need to display the appropriate amount of reprojected detail.


removed redundant projection info

removed redundant projection info

Change-Id: Ib80f67948105abe60f2e1607b9e92f2f57617b9a

--- WeaveData/src/weave/data/ProjectionManager.as
+++ WeaveData/src/weave/data/ProjectionManager.as
@@ -65,10 +65,7 @@

 			//ProjProjection.defs['aeac-us'] = '+title=Albers Equal-Area Conic +proj=aea +lat_1=37.25 +lat_2=40.25 +lat_0=36 +lon_0=-72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs';

-			ProjProjection.defs['ESRI:102686'] = "+title=NAD 1983 StatePlane Massachusetts Mainland FIPS 2001 Feet +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs";
-			ProjProjection.defs['EPSG:26986'] = "+title=NAD83 / Massachusetts Mainland +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs";
 			ProjProjection.defs['EPSG:102736'] = "+title=NAD 1983 StatePlane Tennessee FIPS 4100 Feet +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs";
-			ProjProjection.defs["EPSG:3638"] = "+title=NAD83(NSRS2007) / Ohio South +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
 			ProjProjection.defs['VANDG'] = "+title=Van Der Grinten +proj=vandg +x_0=0 +y_0=0 +lon_0=0";

 			var ba:ByteArray = (new ProjDatabase()) as ByteArray;


fixed bug where tiles would be assigned the wrong bounds

Change-Id: I7f472f6185a89c8eccc82cc0a4c040e863f2f50e

--- WeaveData/src/weave/services/wms/CustomWMS.as
+++ WeaveData/src/weave/services/wms/CustomWMS.as
@@ -156,25 +156,25 @@
 			dataBoundsToTileXY(_tempDataBounds, zoomScale);

 			// if the tile range is unreasonable, cut it down to a more reasonable range
-			var maxTileRangeX:int = screenBounds.getXCoverage() / _imageWidth + 2;
-			var maxTileRangeY:int = screenBounds.getYCoverage() / _imageHeight + 2;
+			var maxTileRangeX:int = Math.ceil(screenBounds.getXCoverage() / _imageWidth) * 2;
+			var maxTileRangeY:int = Math.ceil(screenBounds.getYCoverage() / _imageHeight) * 2;
 			if (_tempDataBounds.getWidth() > maxTileRangeX)
 			{
 				trace(debugId(this), 'adjusting tile X coverage from', _tempDataBounds.getWidth(), 'to', maxTileRangeX);
 				_tempDataBounds.setWidth(maxTileRangeX);
-				_tempDataBounds.setXCenter(int(_tempDataBounds.getXCenter()));
 			}
 			if (_tempDataBounds.getHeight() > maxTileRangeY)
 			{
 				trace(debugId(this), 'adjusting tile Y coverage from', _tempDataBounds.getHeight(), 'to', maxTileRangeY);
 				_tempDataBounds.setHeight(maxTileRangeY);
-				_tempDataBounds.setYCenter(int(_tempDataBounds.getYCenter()));
-			}
-
-			var xTileMin:Number = _tempDataBounds.xMin;
-			var yTileMin:Number = _tempDataBounds.yMin;
-			var xTileMax:Number = _tempDataBounds.xMax;
-			var yTileMax:Number = _tempDataBounds.yMax;
+			}
+
+			// force integer values
+			var xTileMin:int = Math.floor(_tempDataBounds.xMin);
+			var yTileMin:int = Math.floor(_tempDataBounds.yMin);
+			var xTileMax:int = Math.ceil(_tempDataBounds.xMax);
+			var yTileMax:int = Math.ceil(_tempDataBounds.yMax);
+			_tempDataBounds.setBounds(xTileMin, yTileMin, xTileMax, yTileMax);

 			tileXYToData(_tempDataBounds, zoomScale);
 			_tempFullDataBounds.constrainBounds(_tempDataBounds);
@@ -183,9 +183,9 @@
 			// get tiles we need using the map's projection because the tiles' bounds must be in this projection
 			var lowerQualTiles:Array = _currentTileIndex.getTiles(_tempDataBounds, 0, _tempCoord.z - 1);
 			var completedTiles:Array = _currentTileIndex.getTiles(_tempDataBounds, _tempCoord.z, _tempCoord.z);
-			outerLoop: for (var x:Number = xTileMin; x < xTileMax; ++x)
-			{
-				for (var y:Number = yTileMin; y < yTileMax; ++y)
+			outerLoop: for (var x:int = xTileMin; x < xTileMax; ++x)
+			{
+				for (var y:int = yTileMin; y < yTileMax; ++y)
 				{
 					if (_pendingTiles.length >= 100)
 						break outerLoop;
@@ -261,7 +261,7 @@
 			inputAndOutput.makeSizePositive();
 			if (tileProjectionSRS.value == 'EPSG:3857')
 			{
-				WeaveAPI.ProjectionManager.transformBounds("EPSG:3857", "EPSG:4326", _tempDataBounds);
+				WeaveAPI.ProjectionManager.transformBounds("EPSG:3857", "EPSG:4326", inputAndOutput);

 				inputAndOutput.xMin = zoomScale * (inputAndOutput.xMin + 180) / 360.0;
 				inputAndOutput.xMax = zoomScale * (inputAndOutput.xMax + 180) / 360.0;


Prefer () for cases in shell scripts.

Prefer () for cases in shell scripts.

	* build-aux/base.as: Use (foo) instead of foo).

--- build-aux/base.as
+++ build-aux/base.as
@@ -22,8 +22,8 @@
 is_absolute ()
 {
   case $[1] in
-    [[\\/]]* | ?:[[\\/]]*) return 0;;
-			*) return 1;;
+    ([[\\/]]* | ?:[[\\/]]*) return 0;;
+    (                    *) return 1;;
   esac
 }

@@ -107,28 +107,28 @@
 ex_to_string ()
 {
   case $[1] in
-       0) echo ' (EX_OK: successful termination)';;
-      64) echo ' (EX_USAGE: command line usage error)';;
-      65) echo ' (EX_DATAERR: data format error)';;
-      66) echo ' (EX_NOINPUT: cannot open input)';;
-      67) echo ' (EX_NOUSER: addressee unknown)';;
-      68) echo ' (EX_NOHOST: host name unknown)';;
-      69) echo ' (EX_UNAVAILABLE: service unavailable)';;
-      70) echo ' (EX_SOFTWARE: internal software error)';;
-      71) echo ' (EX_OSERR: system error (e.g., cannot fork))';;
-      72) echo ' (EX_OSFILE: critical OS file missing)';;
-      73) echo ' (EX_CANTCREAT: cannot create (user) output file)';;
-      74) echo ' (EX_IOERR: input/output error)';;
-      75) echo ' (EX_TEMPFAIL: temp failure; user is invited to retry)';;
-      76) echo ' (EX_PROTOCOL: remote error in protocol)';;
-      77) echo ' (EX_NOPERM: permission denied)';;
-      78) echo ' (EX_CONFIG: configuration error)';;
-     176) echo ' (EX_SKIP: skip this test with unmet dependencies)';;
-     177) echo ' (EX_HARD: hard error that cannot be saved)';;
-     242) echo ' (killed by Valgrind)';;
-      *)  if test 127 -lt $[1]; then
-	    echo " (SIG$(kill -l $[1] || true))"
-	  fi;;
+     (  0) echo ' (EX_OK: successful termination)';;
+     ( 64) echo ' (EX_USAGE: command line usage error)';;
+     ( 65) echo ' (EX_DATAERR: data format error)';;
+     ( 66) echo ' (EX_NOINPUT: cannot open input)';;
+     ( 67) echo ' (EX_NOUSER: addressee unknown)';;
+     ( 68) echo ' (EX_NOHOST: host name unknown)';;
+     ( 69) echo ' (EX_UNAVAILABLE: service unavailable)';;
+     ( 70) echo ' (EX_SOFTWARE: internal software error)';;
+     ( 71) echo ' (EX_OSERR: system error (e.g., cannot fork))';;
+     ( 72) echo ' (EX_OSFILE: critical OS file missing)';;
+     ( 73) echo ' (EX_CANTCREAT: cannot create (user) output file)';;
+     ( 74) echo ' (EX_IOERR: input/output error)';;
+     ( 75) echo ' (EX_TEMPFAIL: temp failure; user is invited to retry)';;
+     ( 76) echo ' (EX_PROTOCOL: remote error in protocol)';;
+     ( 77) echo ' (EX_NOPERM: permission denied)';;
+     ( 78) echo ' (EX_CONFIG: configuration error)';;
+     (176) echo ' (EX_SKIP: skip this test with unmet dependencies)';;
+     (177) echo ' (EX_HARD: hard error that cannot be saved)';;
+     (242) echo ' (killed by Valgrind)';;
+     (  *) if test 127 -lt $[1]; then
+            echo " (SIG$(kill -l $[1] || true))"
+          fi;;
   esac
 }

@@ -138,27 +138,27 @@
 ex_to_int ()
 {
   case $[1] in
-    OK		|EX_OK)          echo 0;;
-    USAGE	|EX_USAGE)       echo 64;;
-    DATAERR	|EX_DATAERR)     echo 65;;
-    NOINPUT	|EX_NOINPUT)     echo 66;;
-    NOUSER	|EX_NOUSER)      echo 67;;
-    NOHOST	|EX_NOHOST)      echo 68;;
-    UNAVAILABLE	|EX_UNAVAILABLE) echo 69;;
-    SOFTWARE	|EX_SOFTWARE)    echo 70;;
-    OSERR	|EX_OSERR)       echo 71;;
-    OSFILE	|EX_OSFILE)      echo 72;;
-    CANTCREAT	|EX_CANTCREAT)   echo 73;;
-    IOERR	|EX_IOERR)       echo 74;;
-    TEMPFAIL	|EX_TEMPFAIL)    echo 75;;
-    PROTOCOL	|EX_PROTOCOL)    echo 76;;
-    NOPERM	|EX_NOPERM)      echo 77;;
-    CONFIG	|EX_CONFIG)      echo 78;;
-
-    SKIP	|EX_SKIP)        echo 176;;
-    HARD	|EX_HARD)        echo 177;;
-
-    *)                           echo $[1];;
+    (OK         |EX_OK)          echo 0;;
+    (USAGE      |EX_USAGE)       echo 64;;
+    (DATAERR    |EX_DATAERR)     echo 65;;
+    (NOINPUT    |EX_NOINPUT)     echo 66;;
+    (NOUSER     |EX_NOUSER)      echo 67;;
+    (NOHOST     |EX_NOHOST)      echo 68;;
+    (UNAVAILABLE|EX_UNAVAILABLE) echo 69;;
+    (SOFTWARE   |EX_SOFTWARE)    echo 70;;
+    (OSERR      |EX_OSERR)       echo 71;;
+    (OSFILE     |EX_OSFILE)      echo 72;;
+    (CANTCREAT  |EX_CANTCREAT)   echo 73;;
+    (IOERR      |EX_IOERR)       echo 74;;
+    (TEMPFAIL   |EX_TEMPFAIL)    echo 75;;
+    (PROTOCOL   |EX_PROTOCOL)    echo 76;;
+    (NOPERM     |EX_NOPERM)      echo 77;;
+    (CONFIG     |EX_CONFIG)      echo 78;;
+
+    (SKIP       |EX_SKIP)        echo 176;;
+    (HARD       |EX_HARD)        echo 177;;
+
+    (*)                          echo $[1];;
   esac
 }

@@ -177,13 +177,13 @@
 {
   while test $[#] -ne 0; do
     case $[1] in
-	--*=*)
-	    opt=$(echo "$[1]" | sed -e 's/=.*//')
-	    val=$(echo "$[1]" | sed -e ['s/[^=]*=//'])
-	    shift
-	    set dummy "$opt" "$val" ${1+"$[@]"};
-	    shift
-	    ;;
+        (--*=*)
+            opt=$(echo "$[1]" | sed -e 's/=.*//')
+            val=$(echo "$[1]" | sed -e ['s/[^=]*=//'])
+            shift
+            set dummy "$opt" "$val" ${1+"$[@]"};
+            shift
+            ;;
     esac

     case $[1] in
@@ -238,7 +238,7 @@
 URBI_PREPARE()
 set -e
 case $VERBOSE in
-  x) set -x;;
+  (x) set -x;;
 esac

 : ${abs_builddir='@abs_builddir@'}


Reverted a recent change: I was shutting down when we were detached from
our parent, but we don't want to do that for most sprites which are
shutdown anyway in a more managed way, and specifically our avatar sprite
is re-used as we move from room to room.

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

--- src/as/com/threerings/util/MediaContainer.as
+++ src/as/com/threerings/util/MediaContainer.as
@@ -228,14 +228,6 @@
         _media = null;
         width = NaN;
         height = NaN;
-    }
-
-    override public function parentChanged (p :DisplayObjectContainer) :void
-    {
-        super.parentChanged(p);
-        if (p == null && _media != null) {
-            shutdown();
-        }
     }

     /**


add missing use namespace minko_scene to allow the override of AbstractController.minko_scene::addTarget() and AbstractController.minko_scene::removeTarget()

--- src/aerys/minko/scene/controller/AbstractController.as
+++ src/aerys/minko/scene/controller/AbstractController.as
@@ -6,6 +6,8 @@

 	import flash.utils.getQualifiedClassName;

+    use namespace minko_scene;
+
 	/**
 	 * Controllers work on scene nodes to modify and update them. They offer the best
 	 * way to add any kind of behavior on one or multiple scene nodes. They can be used


removed deprecated private variables in AbstractController

--- src/aerys/minko/scene/controller/AbstractController.as
+++ src/aerys/minko/scene/controller/AbstractController.as
@@ -19,9 +19,6 @@
 	 */
 	public class AbstractController
 	{
-		private var _lastTime		: Number				= 0.0;
-		private var _lastTarget		: ISceneNode			= null;
-
 		private var _targetType		: Class					= null;
 		private var _targets		: Vector.<ISceneNode>	= new <ISceneNode>[];


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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderTrackSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderTrackSkin.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 spark.skins.mobile
 {


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

--- frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridListData.as
+++ frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridListData.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.controls.dataGridClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 3451
Author:   egreenfi@adobe.com
Date:     2008-10-02T05:10:18.410127Z

Log Message:
-----------
- UIComponents, GraphicElements's matrix used for layout calculations, and set by the parent layouts, is now decoupled from the actual layout used by the flash player for rendering.
- Both UIComponents an d GraphicElements can be handed a TransformOffset object. The transformOffset allows developers to specify adjustments to the transform as defined by the compoennts parent layout.
- 3D properties on components and graphic elements are now supported.  Setting a 3D property or a 3D matrix on a component or element will affect it visually, but the 2D layouts will continue to lay out as though only the 2D portion of their layout is applied.
- transformX,Y,Z now fully supported on components and elements.  For layouts that don't try and set the post transform bounds (i.e., absolute layout without constraints), the layout scale and rotation will be centered on this point.  The offset transform will also be centered around this point.
- layering is now decoupled from item order.  By default, components now render in order based on the value of their 'layer' property.  All components' layers default to 0.  components with the same layer render in the order they appear in their parent group's item list.
- setting transform.matrix on UIComponent is now supported, and is roughly the same as setting the convenience layout properties on the component.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/.flexProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/build.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/ITransformable.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/IGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/.actionScriptProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/frameworkSwcExceptionsList.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/haloclassic/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/LayoutItemUIC.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/gumbo-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/framework/.actionScriptProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4/.flexLibProperties</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Parser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Path.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/framework/.flexLibProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4/.actionScriptProperties</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/geom/Transform.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/flex/geom/Transform.as" copyfrom-rev="3342" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/Transform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/GraphicElement.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/flex4/src/flex/graphics/TransformUtil.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/TransformOffset.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Group.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/StrokedElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/fxg-manifest.xml</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
@@ -6,12 +6,10 @@
 import flash.geom.ColorTransform;
 import flash.geom.Matrix;
 import flash.geom.Rectangle;
-import flash.geom.Transform;
 import flash.utils.Dictionary;

 import flex.events.FlexEvent;
 import flex.events.ItemExistenceChangedEvent;
-import flex.geom.Transform;
 import flex.graphics.Graphic;
 import flex.graphics.IGraphicElement;
 import flex.graphics.IGraphicElementHost;
@@ -201,6 +199,7 @@
     /**
      *  Override so that we can return correct width when in scale mode.
      */
+   [PercentProxy("percentWidth")]
     override public function get width():Number
     {
         if (_resizeMode == ResizeMode._SCALE_UINT)
@@ -212,6 +211,7 @@
     /**
      *  Override so that we can return correct height when in scale mode.
      */
+   [PercentProxy("percentHeight")]
     override public function get height():Number
     {
         if (_resizeMode == ResizeMode._SCALE_UINT)
@@ -269,19 +269,7 @@
                     cacheAsBitmap = true;
                 }
             }
-        }
-
-        if (transformChanged)
-        {
-            transformChanged = false;
-            // Apply the transform props or matrix
-            TransformUtil.applyTransforms(this, _matrix, NaN, NaN, NaN, NaN,
-                                          _rotation, _transformX, _transformY);
-            _matrix = null;
-            _rotation = NaN;
-
-            invalidateParentSizeAndDisplayList();
-        }
+        }
     }

     override protected function measure():void
@@ -599,144 +587,7 @@
             invalidateProperties();
         }
     }
-
-    //----------------------------------
-    //  rotation
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    private var _rotation:Number = 0;
-
-    [Bindable("propertyChange")]
-    [Inspectable(category="General")]
-
-    /**
-     *  The rotation for this group, in degrees.
-     */
-    override public function get rotation():Number
-    {
-        return !isNaN(_rotation) ? _rotation : super.rotation;
-    }
-
-    override public function set rotation(value:Number):void
-    {
-        if (_rotation != value)
-        {
-            var oldValue:Number = _rotation;
-
-            _rotation = value;
-            transformChanged = true;
-            invalidateProperties();
-        }
-    }
-
-    //----------------------------------
-    //  transform
-    //----------------------------------
-    private var _transform:flash.geom.Transform;
-    private var transformChanged:Boolean = false;
-    private var _matrix:Matrix;
-    private var _colorTransform:ColorTransform;
-
-    override public function set transform(value:flash.geom.Transform):void
-    {
-        // Clean up the old event listeners
-        var oldTransform:flex.geom.Transform = _transform as flex.geom.Transform;
-        if (oldTransform)
-        {
-            oldTransform.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, transformPropertyChangeHandler);
-        }
-
-        var newTransform:flex.geom.Transform = value as flex.geom.Transform;
-
-        if (newTransform)
-        {
-            newTransform.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, transformPropertyChangeHandler);
-            _matrix = value.matrix.clone(); // Make sure it is a copy
-            _colorTransform = value.colorTransform;
-        }
-
-        _transform = value;
-        super.transform = value;
-    }
-
-    //----------------------------------
-    //  transformX
-    //----------------------------------
-    private var _transformX:Number = 0;
-
-    /**
-     *  The x position transform point of the element.
-     */
-    public function get transformX():Number
-    {
-        return _transformX;
-    }
-
-    public function set transformX(value:Number):void
-    {
-        if (_transformX != value)
-        {
-            _transformX = value;
-            transformChanged = true;
-            invalidateProperties();
-        }
-    }
-
-    //----------------------------------
-    //  transformY
-    //----------------------------------
-    private var _transformY:Number = 0;
-
-    /**
-     *  The y position transform point of the element.
-     */
-    public function get transformY():Number
-    {
-        return _transformY;
-    }
-
-    public function set transformY(value:Number):void
-    {
-        if (_transformY != value)
-        {
-            _transformY = value;
-            transformChanged = true;
-            invalidateProperties();
-        }
-    }
-
-    private function transformPropertyChangeHandler(event:PropertyChangeEvent):void
-    {
-        if (event.kind == PropertyChangeEventKind.UPDATE)
-        {
-            if (event.property == "matrix")
-            {
-                // Apply matrix
-                if (_transform)
-                {
-                    _matrix = _transform.matrix.clone();
-                    transformChanged = true;
-                    invalidateProperties();
-                }
-            }
-            else if (event.property == "colorTransform")
-            {
-                // Apply colorTranform
-                if (_transform)
-                {
-                    _colorTransform = _transform.colorTransform;
-                    // TODO EGeorgie: figure out what to invalidate when we implement
-                    // colotTransform being applied.
-                    transformChanged = true;
-                    invalidateProperties();
-                }
-            }
-        }
-    }
-
+
     //--------------------------------------------------------------------------
     //
     //  IGraphicElementHost Implementation


Transferred from the Adobe Open Source Subversion Repository

Revision: 4357
Author:   egreenfi@adobe.com
Date:     2008-12-18T23:52:27.017290Z

Log Message:
-----------
UIComponent now implements ILayoutElement directly

ILayoutElement was moved to mx.core.ILayoutElement, as it is now a core interface required by UIComponent.

Further phases to follow:
1) IVlisualElement to extend ILayoutElement, pending resolution of a compiler bug.
2) remove LayoutElementUIC, pending UIMovieclip implementing ILayoutElement
3) remove LayoutElementFactory, once all IVisualElements implement ILayoutElement directly.
4) remove ITransformable, moving transform properties onto IVisualElement.

Reviewer: Evtim
QA: yes.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/layout/layout_tester.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LinearLayoutVector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/DataGroup.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/MatrixUtil.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/ILayoutElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxScrollerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutElementFactory.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVScrollBar.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/LayoutElementUIComponentUtils.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/utils/MatrixUtil.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/ILayoutElement.as" copyfrom-rev="4249" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutElementUIC.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/graphicsClasses/GraphicElement.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
@@ -32,7 +32,7 @@
 import mx.graphics.MaskType;
 import mx.graphics.graphicsClasses.GraphicElement;
 import mx.layout.BasicLayout;
-import mx.layout.ILayoutElement;
+import mx.core.ILayoutElement;
 import mx.layout.LayoutBase;
 import mx.utils.MatrixUtil;

@@ -77,8 +77,11 @@
         super();
         tabChildren = true;

-        _layout = new BasicLayout();
-        _layout.target = this;
+        if(_layout == null)
+        {
+	        _layout = new BasicLayout();
+    	    _layout.target = this;
+    	}
     }

     //--------------------------------------------------------------------------
@@ -392,6 +395,22 @@

         // TODO EGeorgie: can we directly call setActualSize instead?
         invalidateParentSizeAndDisplayList();
+    }
+
+    override protected function nonDeltaLayoutMatrix():Matrix
+    {
+        if(hasDeltaIdentityTransform)
+        	return null;
+
+        if (resizeMode == ResizeMode.SCALE)
+        {
+            // Lose scale and skew:
+            return MatrixUtil.composeMatrix(x, y, 1, 1, rotation,
+                        transformX, transformY);
+        }
+
+        return super.nonDeltaLayoutMatrix();
+
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 18567
Author:   klin@adobe.com
Date:     2010-11-13T00:28:51.781896Z

Log Message:
-----------
Fix for Bindable metadata being in the wrong place in DataGrid, Grid and GridColumn. Made GridColumn.editable Bindable. variableRowHeight and resizableColumns were also not dispatching a change event. I also took the liberty of performing some code clean up and fixing some docs.

QE notes: Check properties to make sure they're Bindable
Doc notes: No
Bugs: SDK-28464
Reviewer: Hans
Tests run: DataGrid, checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/events/GridEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/CellPosition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridRowList.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/gridClasses/GridDimensions.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/IGridItemRendererOwner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/UITextFieldGridItemRenderer.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/gridClasses/GridLayer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/CellRegion.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridRowNode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridSelection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridSelectionMode.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
+++ frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
@@ -42,7 +42,7 @@
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 1.5
- *  @productversion Flex 4
+ *  @productversion Flex 4.5
  */
 [Event(name="dataChange", type="mx.events.FlexEvent")]

@@ -80,6 +80,20 @@
 public class DefaultGridItemRenderer extends UIFTETextField implements IGridItemRenderer, IStyleClient
 {

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


Tighten this up a bit.

Tighten this up a bit.

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

--- src/as/com/threerings/util/ObjectMarshaller.as
+++ src/as/com/threerings/util/ObjectMarshaller.as
@@ -65,7 +65,6 @@
             }
             return dest;
         }
-

         var bytes :ByteArray = new ByteArray();
         bytes.endian = Endian.BIG_ENDIAN;
@@ -125,15 +124,12 @@
             return dest;
         }
         var bytes :ByteArray = (encoded as ByteArray);
+
+        // Work around dictionary idiocy. Holy shit. See note in encode().
+        const isDict :Boolean = (bytes[0] === DICTIONARY_MARKER);
         // re-set the position in case we're decoding the actual same byte
         // array used to encode (and not a network reconstruction)
-        bytes.position = 0;
-
-        // Work around dictionary idiocy. Holy shit. See note in encode().
-        const isDict :Boolean = (bytes[0] === DICTIONARY_MARKER);
-        if (isDict) {
-            bytes.position = 1; // advance past our special marker
-        }
+        bytes.position = isDict ? 1 : 0;

         bytes.endian = Endian.BIG_ENDIAN;
         bytes.objectEncoding = ObjectEncoding.AMF3;


80 Rewrote GraphicsShapes.drawArrow as it was completely wrong

--- raw/src/org/yellcorp/display/GraphicsShapes.as
+++ raw/src/org/yellcorp/display/GraphicsShapes.as
@@ -193,34 +193,27 @@
               headHalfWidthFactor:Number = Number.NaN,
               closeHead:Boolean = false):void
     {
-        var headLengthX:Number;
-        var headLengthY:Number;
-        var halfHeadWidthX:Number;
-        var halfHeadWidthY:Number;
-
         if (isNaN(headHalfWidthFactor)) headHalfWidthFactor = headLengthFactor * 0.5;

-        headLengthX = (toX - fromX) * headLengthFactor;
-        headLengthY = (toY - fromY) * headLengthFactor;
-
-        halfHeadWidthX = (toY - fromY) * headHalfWidthFactor;
-        halfHeadWidthY = (fromX - toX) * headHalfWidthFactor;
-
         target.moveTo(fromX, fromY);
-        target.lineTo(toX, toX);
-
-        target.moveTo(toX - headLengthX + halfHeadWidthX,
-                      toY - headLengthY + halfHeadWidthY);
-
         target.lineTo(toX, toY);

-        target.lineTo(toX - headLengthX - halfHeadWidthX,
-                      toY - headLengthY - halfHeadWidthY);
+        var dx:Number = toX - fromX;
+        var dy:Number = toY - fromY;
+
+        var headCenterX:Number = fromX + headLengthFactor * dx;
+        var headCenterY:Number = fromY + headLengthFactor * dy;
+
+        var headdx:Number = -dy * headHalfWidthFactor;
+        var headdy:Number = dx * headHalfWidthFactor;
+
+        target.moveTo(headCenterX + headdx, headCenterY + headdy);
+        target.lineTo(toX, toY);
+        target.lineTo(headCenterX - headdx, headCenterY - headdy);

         if (closeHead)
         {
-            target.lineTo(toX - headLengthX + halfHeadWidthX,
-                          toY - headLengthY + halfHeadWidthY);
+            target.lineTo(headCenterX + headdx, headCenterY + headdy);
         }
     }
 }


Add tests for enumerate/set file action

Add tests for enumerate/set file action

--- test/src/FRESteamWorksTest.as
+++ test/src/FRESteamWorksTest.as
@@ -66,10 +66,12 @@
 			addButton("Show overlay", null, _buttonContainer, _overlayContainer);

 			addButton("Back", null, _enumerateContainer);
-			addButton("Subscribed files (+unsub/dl)", enumerateSubscribedFiles, _enumerateContainer);
+			addButton("Sub'd files (unsub/dl/action)", enumerateSubscribedFiles, _enumerateContainer);
 			addButton("User published files", enumerateUserPublishedFiles, _enumerateContainer);
 			addButton("User shared files", enumerateSharedFiles, _enumerateContainer);
-			addButton("All published files (+vote)", enumerateWorkshopFiles, _enumerateContainer);
+			addButton("All published files (vote)", enumerateWorkshopFiles, _enumerateContainer);
+			addButton("By Action (played)", enumeratePlayedFiles, _enumerateContainer);
+			addButton("By Action (completed)", enumerateCompletedFiles, _enumerateContainer);

 			addButton("Back", null, _overlayContainer);
 			addButton("Show friends overlay", activateOverlay, _overlayContainer);
@@ -281,6 +283,22 @@
 			log("enumerateSharedFiles(...) == " + res);
 		}

+		private function enumeratePlayedFiles(e:Event = null):void {
+			if(!Steamworks.isReady) return;
+
+			var res:Boolean = Steamworks.enumeratePublishedFilesByUserAction(
+				WorkshopConstants.FILEACTION_Played, 0);
+			log("enumeratePublishedFilesByUserAction(Played, 0) == " + res);
+		}
+
+		private function enumerateCompletedFiles(e:Event = null):void {
+			if(!Steamworks.isReady) return;
+
+			var res:Boolean = Steamworks.enumeratePublishedFilesByUserAction(
+				WorkshopConstants.FILEACTION_Completed, 0);
+			log("enumeratePublishedFilesByUserAction(Completed, 0) == " + res);
+		}
+
 		private function updateFile(e:Event = null):void {
 			if(!publishedFile) {
 				log("No file handle set, publish or enumerate first");
@@ -372,6 +390,12 @@
 						apiCall = Steamworks.unsubscribePublishedFile(subbedFile);
 						log("unsubscribePublishedFile(" + subbedFile + ") == " + apiCall);
 					}
+
+					if(subRes.resultsReturned > 0) {
+						apiCall = Steamworks.setUserPublishedFileAction(
+							subRes.publishedFileId[0], WorkshopConstants.FILEACTION_Played);
+						log("setUserPublishedFileAction(..., Played) == " + apiCall);
+					}
 					break;
 				case SteamConstants.RESPONSE_OnEnumerateUserSharedWorkshopFiles:
 				case SteamConstants.RESPONSE_OnEnumerateUserPublishedFiles:
@@ -410,6 +434,24 @@
 						log("updateUserPublishedItemVote(" + f + ", true) == " + apiCall);
 						apiCall = Steamworks.getPublishedItemVoteDetails(f);
 						log("getPublishedItemVoteDetails(" + f + ") == " + apiCall);
+					}
+					break;
+				case SteamConstants.RESPONSE_OnEnumeratePublishedFilesByUserAction:
+					log("RESPONSE_OnEnumeratePublishedFilesByUserAction: " + e.response);
+					if(e.response != SteamResults.OK) return;
+
+					var actionRes:FilesByUserActionResult = Steamworks.enumeratePublishedFilesByUserActionResult();
+					// TODO: m_eAction seems to be uninitialized?
+					log("Files for action " + actionRes.action + ": " +
+						actionRes.resultsReturned + "/" + actionRes.totalResults);
+
+					for(i = 0; i < actionRes.resultsReturned; i++) {
+						log(i + ": " + actionRes.publishedFileId[i] + " - " + actionRes.timeUpdated[i]);
+						if (actionRes.action == WorkshopConstants.FILEACTION_Played) {
+							log("setUserPublishedFileAction(..., Completed) == " +
+								Steamworks.setUserPublishedFileAction(actionRes.publishedFileId[i],
+								WorkshopConstants.FILEACTION_Completed));
+						}
 					}
 					break;
 				case SteamConstants.RESPONSE_OnGetPublishedFileDetails:


Update WebViewANE.as

Update WebViewANE.as

--- native_extension/src/com/tuarua/WebViewANE.as
+++ native_extension/src/com/tuarua/WebViewANE.as
@@ -1,6 +1,18 @@
-/*
- * Copyright Tua Rua Ltd. (c) 2017.
+/*Copyright 2017 Tua Rua Ltd.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
  */
+
 package com.tuarua {
 import com.tuarua.fre.ANEContext;
 import com.tuarua.utils.GUID;
@@ -753,4 +765,4 @@
         green = ((hex & 0x00FF00) >> 8);
         blue = ((hex & 0x0000FF));
     }
-}+}


Bugfix, getCookie was bumped to _v2 recently.
Clarify that it applies to occupants, not just players.

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

--- src/as/com/threerings/ezgame/EZGameControl.as
+++ src/as/com/threerings/ezgame/EZGameControl.as
@@ -435,9 +435,9 @@
      * first time this is requested per game instance it will be retrieved
      * from the database. After that, it will be returned from memory.
      */
-    public function getUserCookie (playerId :int, callback :Function) :void
-    {
-        callEZCode("getUserCookie_v1", playerId, callback);
+    public function getUserCookie (occuapntId :int, callback :Function) :void
+    {
+        callEZCode("getUserCookie_v2", occuapntId, callback);
     }

     /**


Freak not out if someone adds a click handler to something and removes said
thing from the stage in their click handler.

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

--- src/as/com/threerings/ezgame/EZGameControl.as
+++ src/as/com/threerings/ezgame/EZGameControl.as
@@ -738,7 +738,7 @@
     protected function handleRootClick (evt :MouseEvent) :void
     {
         try {
-            if (evt.target.stage.focus != null) {
+            if (evt.target.stage == null || evt.target.stage.focus != null) {
                 return;
             }
         } catch (err :SecurityError) {


Typo.

Typo.

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

--- src/as/com/threerings/io/ObjectInputStream.as
+++ src/as/com/threerings/io/ObjectInputStream.as
@@ -278,7 +278,7 @@
     /** The object currently being read from the stream. */
     protected var _current :Object;

-    /** The stramer being used currently. */
+    /** The streamer being used currently. */
     protected var _streamer :Streamer;

     /** A map of short class code to ClassMapping info. */


122 ArrayUtil.findFirst -> ArrayUtil.indexOf
ArrayUtil.findLast -> ArrayUtil.lastIndexOf

ArrayUtil.getFirst and getLast use these functions and return the object itself rather than the index

--- raw/src/org/yellcorp/array/ArrayUtil.as
+++ raw/src/org/yellcorp/array/ArrayUtil.as
@@ -108,7 +108,7 @@
         return result;
     }

-    public static function findFirst(array:Array, boolFunction:Function):int
+    public static function indexOf(array:Array, boolFunction:Function):int
     {
         var i:int;
         if (!array) return -1;
@@ -129,7 +129,7 @@
         return -1;
     }

-    public static function findLast(array:Array, boolFunction:Function):int
+    public static function lastIndexOf(array:Array, boolFunction:Function):int
     {
         var i:int;
         if (!array) return -1;
@@ -148,6 +148,18 @@
             }
         }
         return -1;
+    }
+
+    public static function getFirst(array:Array, boolFunction:Function):*
+    {
+        var index:int = indexOf(array, boolFunction);
+        return index >= 0 ? array[index] : null;
+    }
+
+    public static function getLast(array:Array, boolFunction:Function):*
+    {
+        var index:int = lastIndexOf(array, boolFunction);
+        return index >= 0 ? array[index] : null;
     }

     /**


F Fix bug on compiler: kill operations did not extend the lifetime of their variables

--- src/aerys/minko/render/shader/compiler/graph/visitors/AllocationVisitor.as
+++ src/aerys/minko/render/shader/compiler/graph/visitors/AllocationVisitor.as
@@ -162,6 +162,7 @@

 				visit(kill, false);
 				pushInstruction(new Instruction(Instruction.KIL, kill), false);
+				extendLifeTime(kill, false);
 			}

 			finish();


XIFF-40: Added clone functionality to RoomEvent.

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

--- src/org/jivesoftware/xiff/events/RoomEvent.as
+++ src/org/jivesoftware/xiff/events/RoomEvent.as
@@ -24,8 +24,6 @@
 package org.jivesoftware.xiff.events
 {
 	import flash.events.Event;
-
-	import org.jivesoftware.xiff.data.Message;

 	public class RoomEvent extends Event
 	{
@@ -136,5 +134,21 @@
 		{
 			return _reason;
 		}
+
+		public override function clone():Event
+		{
+			var event:RoomEvent = new RoomEvent(this.type, this.bubbles, this.cancelable);
+			event._subject = this._subject;
+			event._data = this._data;
+			event._errorCondition = this._errorCondition;
+			event._errorMessage = this._errorMessage;
+			event._errorType = this._errorType;
+			event._errorCode = this._errorCode;
+			event._nickname = this._nickname;
+			event._from = this._from;
+			event._reason = this._reason;
+
+			return event;
+		}
 	}
 }


Bumped version to 1.1.1

Bumped version to 1.1.1

--- com/zehfernando/input/binding/KeyActionBinder.as
+++ com/zehfernando/input/binding/KeyActionBinder.as
@@ -30,15 +30,16 @@
 		// * Add missing asdocs
 		// * Better multi-platform setup... re-think GamepadControls

-		// * Auto controls
 		// * Gamepad on isActivated()
 		// * Thresholds

 		// Versions:
+		// 2013-10-08	1.1.1	Removed max/min from addGamepadSensitiveActionBinding() (always use hardcoded values)
+		// 2013-10-08	1.1.0	Completely revamped the control scheme by using "auto" controls for cross-platform operation
 		// 2013-10-08	1.0.0	First version to have a version number

 		// Constants
-		public static const VERSION:String = "1.0.0";
+		public static const VERSION:String = "1.1.1";

 		// List of all auto-configurable gamepads
 		private static var knownGamepadPlatforms:Vector.<AutoPlatformInfo>;