Transferred from the Adobe Open Source Subversion Repository

Revision: 6609
Author:   gruehle@adobe.com
Date:     2009-05-04T22:47:31.285324Z

Log Message:
-----------
Add theme attribute to theme-specific style metadata.

Example of a halo-specific style:
[Style(name="cornerRadius", type="Number", format="Length", inherit="no", theme="halo")]

Example of a spark-specific style:
[Style(name="baseColor", type="uint", format="Color", inherit="yes", theme="spark")]

Style metadata without a theme attribute is theme-agnostic, and works with either spark or halo.

Bugs: SDK-20606

Modified Paths:
--------------
<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/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/FillStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.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/framework/src/mx/styles/metadata/SkinStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.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/flex4/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/BorderStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/BarColorStyle.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/framework/src/mx/controls/CheckBox.as</path>
<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/flex4/src/spark/components/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/IconColorStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/scrollClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SelectedFillColorsStyle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.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/framework/src/mx/controls/ComboBox.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/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.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/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>

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

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -43,7 +43,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="alternatingItemColors", type="Array", arrayType="uint", format="Color", inherit="yes")]
+[Style(name="alternatingItemColors", type="Array", arrayType="uint", format="Color", inherit="yes", theme="spark")]

 /**
  *  @copy spark.components.supportClasses.GroupBase#contentBackgroundColor
@@ -53,7 +53,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes")]
+[Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
  *  @copy spark.components.supportClasses.GroupBase#focusColor
@@ -63,7 +63,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="focusColor", type="uint", format="Color", inherit="yes")]
+[Style(name="focusColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
  * @copy spark.components.supportClasses.GroupBase#rollOverColor
@@ -73,7 +73,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="rollOverColor", type="uint", format="Color", inherit="yes")]
+[Style(name="rollOverColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
  *  @copy spark.components.supportClasses.GroupBase#symbolColor
@@ -83,7 +83,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="symbolColor", type="uint", format="Color", inherit="yes")]
+[Style(name="symbolColor", type="uint", format="Color", inherit="yes", theme="spark")]

 //--------------------------------------
 //  Other metadata


Transferred from the Adobe Open Source Subversion Repository

Revision: 3002
Author:   smgilson@adobe.com
Date:     2008-08-26T18:39:48.004938Z

Log Message:
-----------
Fix invalid HTML in ASDoc comment

Checkin Test Passed: Yes
QA: No
Bug:
Doc: No

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/BasicLayout.as

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

--- frameworks/projects/spark/src/spark/layouts/BasicLayout.as
+++ frameworks/projects/spark/src/spark/layouts/BasicLayout.as
@@ -39,29 +39,29 @@
      * width,height to unscaledWidth,unscaledHeight.  We avoid setting
      * the scrollRect (and therefore clipping) when scrolling isn't indicated:
      * if the scrollRect is currently null and the scrollPosition properties
-     * are 0, and the Group's contentWidth,Height is <= to unscaledWidth,Height,
-     * then the scrollRect is *not* set.
+     * are 0, and the Group's contentWidth,Height is <= to unscaledWidth,Height,
+     * then the scrollRect is not set.
      */
-	static function setScrollRect(g:Group, unscaledWidth:Number, unscaledHeight:Number):void
-	{
-	    var r:Rectangle = g.scrollRect;
-	    if (r != null)
-	    {
-			r.width = unscaledWidth;
-			r.height = unscaledHeight;
-			g.scrollRect = r;
-	    }
-	    else // scrollRect wasn't set
-	    {
-			var hsp:Number = g.horizontalScrollPosition;
-			var vsp:Number = g.verticalScrollPosition;
-			var cw:Number = g.contentWidth;
-			var ch:Number = g.contentHeight;
-			// don't set the scrollRect needlessly
-			if ((hsp != 0) || (vsp != 0) || (cw > unscaledWidth) || (ch > unscaledHeight))
-			    g.scrollRect = new Rectangle(hsp, vsp, unscaledWidth, unscaledHeight);
-	    }
-	}
+    static function setScrollRect(g:Group, unscaledWidth:Number, unscaledHeight:Number):void
+    {
+        var r:Rectangle = g.scrollRect;
+        if (r != null)
+        {
+            r.width = unscaledWidth;
+            r.height = unscaledHeight;
+            g.scrollRect = r;
+        }
+        else // scrollRect wasn't set
+        {
+            var hsp:Number = g.horizontalScrollPosition;
+            var vsp:Number = g.verticalScrollPosition;
+            var cw:Number = g.contentWidth;
+            var ch:Number = g.contentHeight;
+            // don't set the scrollRect needlessly
+            if ((hsp != 0) || (vsp != 0) || (cw > unscaledWidth) || (ch > unscaledHeight))
+                g.scrollRect = new Rectangle(hsp, vsp, unscaledWidth, unscaledHeight);
+        }
+    }

     //--------------------------------------------------------------------------
@@ -71,11 +71,11 @@
     //--------------------------------------------------------------------------

     /**
-	 *  Constructor.
-	 */
-	public function BasicLayout():void
-    {
-		super();
+     *  Constructor.
+     */
+    public function BasicLayout():void
+    {
+        super();
     }

     //--------------------------------------------------------------------------
@@ -199,8 +199,8 @@
             var right:Number   = LayoutItemHelper.getConstraint(layoutItem, "right");
             var top:Number     = LayoutItemHelper.getConstraint(layoutItem, "top");
             var bottom:Number  = LayoutItemHelper.getConstraint(layoutItem, "bottom");
-			var itemMinSize:Point = layoutItem.minSize;
-			var itemMaxSize:Point = layoutItem.maxSize;
+            var itemMinSize:Point = layoutItem.minSize;
+            var itemMaxSize:Point = layoutItem.maxSize;

             // Calculate size
             var childWidth:Number = NaN;
@@ -215,7 +215,7 @@
                 childHeight = unscaledHeight - bottom - top;
             else
                 childHeight = Math.max(itemMinSize.y, Math.min(itemMaxSize.y, childHeight));
-
+
             // Set size, no need to clip to min/max
             // TODO!!! incorporate min/maxSize
             var actualSize:Point = layoutItem.setActualSize(childWidth, childHeight);


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

--- frameworks/projects/framework/src/mx/geom/CompoundTransform.as
+++ frameworks/projects/framework/src/mx/geom/CompoundTransform.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2003-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.
 //
 ////////////////////////////////////////////////////////////////////////////////
 package mx.geom


Transferred from the Adobe Open Source Subversion Repository

Revision: 8031
Author:   egeorgie@adobe.com
Date:     2009-06-20T01:10:03.288554Z

Log Message:
-----------
Scrub the TODOs in the framework, convert to FIXMEs in the new convention and assigning an owner.

Doc Notes: N/A
Bugs: N/A
Reviewer: Deepa
tests: build, checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/StrokedElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/layouts/WheelLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/FadeInstance.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/flex4/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Timeline.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AddAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Scale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/mediaClasses/VolumeBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/DropDownController.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/ModifiedCollectionView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/ErrorSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/MoveInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectTargetFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/RemoveAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/utils/BitmapUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/FocusSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/CompositeEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/MotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/MatrixUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutElementHelper.as</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/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/mediaClasses/StreamingVideoSource.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/PropertyChanges.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ToggleButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/RemoveActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/pathSegments/LineSegment.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/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateTransitionShaderInstance.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/framework/src/mx/geom/Transform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ObjectUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AddActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ListBase.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/spark/primitives/Path.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/Rect.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/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VSlider.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/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>

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

--- frameworks/projects/spark/src/spark/components/DropDownList.as
+++ frameworks/projects/spark/src/spark/components/DropDownList.as
@@ -222,7 +222,7 @@
     //--------------------------------------------------------------------------

     private var labelChanged:Boolean = false;
-    // TODO (jszeto) Should this be protected?
+    // FIXME (jszeto): Should this be protected?
     private var proposedSelectedIndex:Number = -1;
     mx_internal static var PAGE_SIZE:int = 5;

@@ -459,7 +459,7 @@
      *  @private
      *  Called whenever we need to update the text passed to the labelDisplay skin part
      */
-    // TODO (jszeto) Make this protected and make the name more generic (passing data to skin)
+    // FIXME (jszeto): Make this protected and make the name more generic (passing data to skin)
     private function updateLabelElement():void
     {
         if (labelDisplay)


Reactivated the TextPrinter Test

Reactivated the TextPrinter Test

--- as3/test/asunit4/printers/TextPrinterTest.as
+++ as3/test/asunit4/printers/TextPrinterTest.as
@@ -33,12 +33,12 @@

         override protected function tearDown():void {
             super.tearDown();
+            removeChild(printer);
             failure    = null;
             printer    = null;
             testResult = null;
             success    = null;
             test       = null;
-            removeChild(printer);
         }

         private function executeASucceedingTest():void {
@@ -57,7 +57,6 @@
             testResult.onRunCompleted(null);
         }

-        /*
         public function testPrinterOnTestSuccess():void {
             executeASucceedingTest();
             assertTrue("Printer should print OK", printer.toString().indexOf('OK') > -1);
@@ -73,11 +72,10 @@
         }

         public function testPrinterDisplayed():void {
-            //executeASucceedingTest();
-            //addChild(printer);
-            //assertTrue("The output was displayed.", printer.getTextDisplay().text.indexOf('Time Summary:') > -1);
+            addChild(printer);
+            executeASucceedingTest();
+            assertTrue("The output was displayed.", printer.getTextDisplay().text.indexOf('Time Summary:') > -1);
         }
-        */
     }
 }

@@ -94,3 +92,4 @@
         return textDisplay;
     }
 }
+


Use the smooth centering of MisoScenePanel

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

--- src/as/com/threerings/stage/client/CrowdStageScenePanel.as
+++ src/as/com/threerings/stage/client/CrowdStageScenePanel.as
@@ -79,25 +79,6 @@
         _proxrad = int(Math.max(_proxrad, Math.sqrt(_isoView.size.x*_isoView.size.x +
             _isoView.size.y*_isoView.size.y)));
         recomputeProximate();
-
-        addEventListener(Event.ADDED_TO_STAGE, addedToStage);
-        addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage);
-    }
-
-    /**
-     * Handles Event.ADDED_TO_STAGE.
-     */
-    protected function addedToStage (event :Event) :void
-    {
-        _ctx.getTicker().registerTickable(this);
-    }
-
-    /**
-     * Handles Event.REMOVED_FROM_STAGE.
-     */
-    protected function removedFromStage (event :Event) :void
-    {
-        _ctx.getTicker().removeTickable(this);
     }

     override public function willEnterPlace (plObj :PlaceObject) :void
@@ -109,8 +90,9 @@
         updateDisplayForScene();
     }

-    public function tick (tickStamp :int) :void
-    {
+    override public function tick (tickStamp :int) :void
+    {
+        super.tick(tickStamp);
         _sprites.forEach(function (key :int, sprite :CharacterIsoSprite) :void {
             sprite.tick(tickStamp);
         });
@@ -128,15 +110,23 @@

         // start out with the view centered on our sprite so that we
         // resolve the appropriate scene blocks from the get go
-        centerView();
-    }
-
-    protected function centerView () :void
+        centerView(true, false);
+    }
+
+    protected function centerView (immediate :Boolean, optional :Boolean) :void
     {
         if (_selfSprite != null) {
             var viewPt :Point =
                 _isoView.isoToLocal(new Pt(_selfSprite.x, _selfSprite.y, _selfSprite.z));
-            moveBy(new Point(viewPt.x - _isoView.width / 2, viewPt.y - _isoView.height / 2));
+
+            var dx :int = viewPt.x - _isoView.width / 2;
+            var dy :int = viewPt.y - _isoView.height / 2;
+
+            // Unless we've forced it, if we'd move less than a quarter screen, don't bother.
+            if (!optional || Math.abs(dx) > _isoView.width / 4 ||
+                    Math.abs(dy) > _isoView.height / 4) {
+                moveBy(new Point(dx, dy), immediate);
+            }
         }
     }

@@ -424,7 +414,7 @@
             sprite.placeAtLoc(loc);

             // delay repaint until we resolve our new blocks
-            centerView();
+            centerView(true, false);
             return true;
         }

@@ -656,7 +646,7 @@
         } finally {
             // keep track of the last time we came to rest
             if (sprite == _selfSprite) {
-                centerView();
+                centerView(false, true);
                 _centerStamp = tickStamp;
             }
         }


Fixed data add/remove bug in Visualization
Added unit test for Data.clear()

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

--- flare.tests/src/flare/tests/DataTests.as
+++ flare.tests/src/flare/tests/DataTests.as
@@ -21,6 +21,7 @@
 			addTest("removeEdges");
 			addTest("createWithDefaults");
 			addTest("visit");
+			addTest("clear");
 		}

 		// --------------------------------------------------------------------
@@ -275,5 +276,13 @@
 			assertEquals(data.edges.length, count);
 		}

+		public function clear():void
+		{
+			createEdges();
+			data.clear();
+			assertEquals(data.nodes.length, 0);
+			assertEquals(data.edges.length, 0);
+		}
+
 	} // end of class DataTests
 }


improved comments

improved comments

--- WeaveCore/src/weave/core/SessionManager.as
+++ WeaveCore/src/weave/core/SessionManager.as
@@ -1334,7 +1334,8 @@
 			var callLaterTime:int = 0;
 			var uiComponent:UIComponent = bindableParent as UIComponent;
 			var recursiveCall:Boolean = false;
-			// a function that takes zero parameters and sets the bindable value.
+			// When given zero parameters, this function copies the linkable value to the bindable value.
+			// When given one or more parameters, this function copies the bindable value to the linkable value.
 			var synchronize:Function = function(firstParam:* = undefined, callingLater:Boolean = false):void
 			{
 				// unlink if linkableVariable was disposed
@@ -1410,7 +1411,7 @@
 							// if we haven't reached the target time yet or callbacks are delayed, call later
 							if (currentTime < callLaterTime)
 							{
-								uiComponent.callLater(synchronize, [firstParam, true]);
+								uiComponent.callLater(synchronize, [firstParam, true]); // callingLater = true
 								return;
 							}
 						}


Removed unnecessary variable.

Removed unnecessary variable.

Change-Id: I79e7b4092e315a04c3be65a31090183b6720a351

--- WeaveCore/src/weave/compiler/StandardLib.as
+++ WeaveCore/src/weave/compiler/StandardLib.as
@@ -30,8 +30,6 @@
 	 */
 	public class StandardLib
 	{
-		public static const OVERSCORE:String = "\u203E";
-
 		/**
 		 * This function will cast a value of any type to a Number,
 		 * interpreting the empty string ("") and null as NaN.


LinkableBoolean now using !== instead of !=.

Change-Id: Ie83efa1263d7299da2b156d668c710da17df031f

--- WeaveCore/src/weave/core/LinkableBoolean.as
+++ WeaveCore/src/weave/core/LinkableBoolean.as
@@ -32,7 +32,7 @@
 		public function LinkableBoolean(defaultValue:* = null)
 		{
 			super(Boolean);
-			if (defaultValue != null)
+			if (defaultValue !== null)
 			{
 				delayCallbacks();
 				value = defaultValue ? true : false;


- Don't actually set our width/height to that of the media we contain.
  That's so "Java" of me, in actionscript children regularly have larger
  bounds than their parents (and get to display it all).
- Stronger security restrictions on loaded content. (Games will break)
- A few visits from old man Occam.

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

--- src/as/com/threerings/util/MediaContainer.as
+++ src/as/com/threerings/util/MediaContainer.as
@@ -180,8 +180,7 @@
         if (h == -1) {
             h = 100;
         }
-        _media = ImageUtil.createErrorImage(w, h);
-        rawChildren.addChild(_media);
+        setMediaObject(ImageUtil.createErrorImage(w, h));
     }

     /**
@@ -261,8 +260,6 @@
         _w = 0;
         _h = 0;
         _media = null;
-        width = NaN;
-        height = NaN;
     }

     /**
@@ -320,9 +317,12 @@
     protected function getContext (url :String) :LoaderContext
     {
         // We allow content to share but not overwrite our classes
-        return new LoaderContext(true,
-            new ApplicationDomain(ApplicationDomain.currentDomain),
-            SecurityDomain.currentDomain);
+//        return new LoaderContext(true,
+//            new ApplicationDomain(ApplicationDomain.currentDomain),
+//            SecurityDomain.currentDomain);
+
+        // share nothing, trust nothing
+        return new LoaderContext(false, null, null);
     }

     /**
@@ -340,15 +340,6 @@
      */
     protected function loadError (event :IOErrorEvent) :void
     {
-        var info :LoaderInfo = (event.target as LoaderInfo);
-        removeListeners(info);
-
-        var loader :Loader = (_media as Loader);
-        rawChildren.removeChild(loader);
-        if (loader.mask != null) {
-            rawChildren.removeChild(loader.mask);
-        }
-
         setupBrokenImage(-1, -1);
     }

@@ -447,9 +438,6 @@
      */
     protected function updateContentDimensions (ww :int, hh :int) :void
     {
-        width = ww;
-        height = hh;
-
         // update our saved size, and possibly notify our container
         if (_w != ww || _h != hh) {
             _w = ww;


Small update to comment.

Small update to comment.

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

--- src/org/jivesoftware/xiff/conference/Room.as
+++ src/org/jivesoftware/xiff/conference/Room.as
@@ -856,7 +856,7 @@
 	     *
 	     * You must be joined and have owner affiliation to configure the room
 	     *
-	     * @param fieldmap A hash that is an object with keys being the room configuration
+	     * @param fieldmap FormExtension, or a hash that is an object with keys being the room configuration
 	     * form variables and the values being arrays. For single value fields, use a single
 	     * element array.
 	     * @see #configureForm


Transferred from the Adobe Open Source Subversion Repository

Revision: 6003
Author:   egeorgie@adobe.com
Date:     2009-04-07T22:44:37.670097Z

Log Message:
-----------
Fix bug http://bugs.adobe.com/jira/browse/SDK-19154 layoutBounds for group that has a path with a larger stroke weight is incorrect

Fix: Modify BasicLayout to use the new ILayoutElement APIs getLayoutBoundsXAtSize, getLayoutBoundsYAtSize.

QE Notes: None
Doc Notes: None
Bugs: SDK-19154
Reviewer: Ely
tests: checkintests, mustella (group, layout)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/LayoutElementUIComponentUtils.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/Path.as</path>
<path kind="file" action="M">/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/spark/primitives/Ellipse.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/Rect.as</path>

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

--- frameworks/projects/framework/src/mx/core/ILayoutElement.as
+++ frameworks/projects/framework/src/mx/core/ILayoutElement.as
@@ -412,6 +412,56 @@
     function getMaxBoundsHeight(postTransform:Boolean=true):Number;

     /**
+     *  Returns the x coordinate of the element's bounds at the specified element size.
+     *
+     *  This method is typically used by layouts during measure() to predict what
+     *  the element position will be, if the element is resized to particular dimesions.
+     *
+     *  @param width The element's bounds width, or NaN to use the preferred width.
+     *  @param height The element's bounds height, or NaN to use the preferred height.
+     *  @param postTransform When postTransform is true the method returns
+     *  x coordinate of the element's bounding box top-left corner.
+     *  Bounding box is in element's parent coordinate space and is calculated
+     *  from the specified bounds size, layout position and layout transform matrix.
+     *
+     *  @see #setLayoutBoundsSize
+     *  @see #getLayoutPositionX
+     *  @see #getLayoutMatrix
+     *  @see #getLayoutMatrix3D
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    function getBoundsXAtSize(width:Number, height:Number, postTransform:Boolean = true):Number;
+
+    /**
+     *  Returns the y coordinate of the element's bounds at the specified element size.
+     *
+     *  This method is typically used by layouts during measure() to predict what
+     *  the element position will be, if the element is resized to particular dimesions.
+     *
+     *  @param width The element's bounds width, or NaN to use the preferred width.
+     *  @param height The element's bounds height, or NaN to use the preferred height.
+     *  @param postTransform When postTransform is true the method returns
+     *  y coordinate of the element's bounding box top-left corner.
+     *  Bounding box is in element's parent coordinate space and is calculated
+     *  from the specified bounds size, layout position and layout transform matrix.
+     *
+     *  @see #setLayoutBoundsSize
+     *  @see #getLayoutPositionY
+     *  @see #getLayoutMatrix
+     *  @see #getLayoutMatrix3D
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    function getBoundsYAtSize(width:Number, height:Number, postTransform:Boolean = true):Number;
+
+    /**
      *  Returns the element's layout width. This is the size that the element uses
      *  to draw on screen.
      *
@@ -450,7 +500,7 @@
      *  @productversion Flex 3
      */
     function getLayoutBoundsHeight(postTransform:Boolean=true):Number;
-
+
     /**
      *  Returns the x coordinate that the element uses to draw on screen.
      *


Transferred from the Adobe Open Source Subversion Repository

Revision: 6006
Author:   dsubrama@adobe.com
Date:     2009-04-07T23:13:52.682149Z

Log Message:
-----------
-new property, labelText, added to IItemRenderer interface
-owning components always push the right text down to the renderer (ie: setting the labelText property)
-DataGroup, SkinnableDataContainer now implement IItemRendererOwner
-labelField/labelFunction work for ButtonBar

QA: Yes
Checkintests: Pass
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/DefaultItemRenderer.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/ButtonBarButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/IItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/ButtonBar.as
+++ frameworks/projects/spark/src/spark/components/ButtonBar.as
@@ -20,8 +20,10 @@
 import flash.events.MouseEvent;
 import flash.ui.Keyboard;

+import spark.components.supportClasses.ListBase;
+import spark.events.RendererExistenceEvent;
+
 import mx.collections.IList;
-import spark.components.supportClasses.ListBase;
 import mx.core.EventPriority;
 import mx.core.IFactory;
 import mx.core.IVisualElement;
@@ -29,7 +31,6 @@
 import mx.events.CollectionEvent;
 import mx.events.CollectionEventKind;
 import mx.events.ItemClickEvent;
-import spark.events.RendererExistenceEvent;
 import mx.managers.IFocusManagerComponent;

 [IconFile("ButtonBar.png")]
@@ -379,7 +380,11 @@
             if (renderer is IVisualElement)
                 IVisualElement(renderer).owner = this;
             if (renderer is IItemRenderer)
+            {
+            	var data:Object = IItemRenderer(renderer).data;
                 IItemRenderer(renderer).allowDeselection = !requiresSelection;
+                IItemRenderer(renderer).labelText = itemToLabel(data);
+            }
         }

         if (isItemIndexSelected(index))


Transferred from the Adobe Open Source Subversion Repository

Revision: 6230
Author:   dsubrama@adobe.com
Date:     2009-04-23T21:50:16.058847Z

Log Message:
-----------
Fix for SDK-20728.

Also, DefaultComplexItemRenderer now doesn't use mxmlContent when setting its data, instead the data setter removes all the elements from the contentGroup and adds them anew. This is per Ryan's instruction.

Reviewer: Ryan
Checkintests: Pass

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/DefaultComplexItemRenderer.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/ButtonBar.as
+++ frameworks/projects/spark/src/spark/components/ButtonBar.as
@@ -379,7 +379,7 @@
                 IFocusManagerComponent(renderer).focusEnabled = false;
             if (renderer is IItemRenderer)
                 IItemRenderer(renderer).allowDeselection = !requiresSelection;
-            IItemRendererOwner(renderer.owner).updateRendererInformation(renderer);
+            updateRendererInformation(renderer);
         }

         if (isItemIndexSelected(index))


Transferred from the Adobe Open Source Subversion Repository

Revision: 4943
Author:   hmuller@adobe.com
Date:     2009-02-13T00:44:17.530411Z

Log Message:
-----------
Fixed recycling problem in virtualized DataGroup and corrected a typo from the fix for SDK-18673.

QE Notes: None
Doc Notes: None
Bugs: sdk-19234
Reviewer: Evtim

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/DataGroup.as

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

--- frameworks/projects/spark/src/spark/components/DataGroup.as
+++ frameworks/projects/spark/src/spark/components/DataGroup.as
@@ -11,11 +11,13 @@
 import mx.core.ILayoutElement;
 import mx.core.IVisualElement;
 import mx.core.mx_internal;
+import mx.core.UIComponent;
 import mx.events.CollectionEvent;
 import mx.events.CollectionEventKind;
 import mx.events.ItemExistenceChangedEvent;
 import mx.layout.LayoutBase;
 import mx.layout.LayoutElementFactory;
+

 /**
@@ -585,10 +587,12 @@
             }
             delete itemToRenderer[item];

-            // Free or remove the IR
+            // Free or remove the IR.
             if ((item != elt) && (elt is IDataRenderer))
             {
                 elt.visible = false;
+                if (elt is UIComponent)
+                    UIComponent(elt).includeInLayout = false;
                 freeRenderers.push(elt);
             }
             else
@@ -610,8 +614,7 @@
         if (!virtualLayoutUnderway)
             super.invalidateSize();
     }
-
-
+
     /**
      *  @private
      *  Make sure there's a typicalLayoutElement for virtual layout.
@@ -685,7 +688,7 @@
                 virtualLayoutStartIndex = Math.min(index, virtualLayoutStartIndex);
                 virtualLayoutEndIndex = Math.max(index, virtualLayoutEndIndex);
             }
-
+
             var createdIR:Boolean = false;
             var recycledIR:Boolean = false;

@@ -696,6 +699,8 @@
                 {
                     elt = freeRenderers.pop();
                     elt.visible = true;
+                    if (elt is UIComponent)
+                        UIComponent(elt).includeInLayout = true;
                     if (elt is IDataRenderer)
                         IDataRenderer(elt).data = item;
                     recycledIR = true;
@@ -864,7 +869,7 @@

             // Quietly ignore invalid indices since they're typically caused
             // by duplicate data items and Halo quietly ignore those
-            if ((insertIndex > 0) && (insertIndex < super.numChildren))
+            if ((insertIndex >= 0) && (insertIndex < super.numChildren))
                 super.setChildIndex(child, insertIndex);

             return child;


Transferred from the Adobe Open Source Subversion Repository

Revision: 9355
Author:   egeorgie@adobe.com
Date:     2009-08-17T22:55:03.909517Z

Log Message:
-----------
Cleanup the DataGroup's addItemRendererToDisplayList() private method.

QE notes: None
Doc notes: None
Bugs: None
Reviewer: Hans
Tests run: mustella (gumbo/core/Group, gumbo/core/DataGroup, gumbo/components/List)
Is noteworthy for integration: No

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

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

--- frameworks/projects/spark/src/spark/components/DataGroup.as
+++ frameworks/projects/spark/src/spark/components/DataGroup.as
@@ -1339,36 +1339,26 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    private function addItemRendererToDisplayList(child:DisplayObject, index:int = -1):DisplayObject
+    private function addItemRendererToDisplayList(child:DisplayObject, index:int):void
     {
         // If this child is already an element of the display list, ensure
         // that it's at the specified index
-        if (child.parent && child.parent == this)
-        {
-            var insertIndex:int;
-            if (index == -1)
-                insertIndex = super.numChildren - 1;
-            else if (index == 0)
-                insertIndex = 0;
-            else
-                insertIndex = index;
-
-            // Quietly ignore invalid indices since they're typically caused
-            // by duplicate data items and Halo quietly ignored those
-            if ((insertIndex >= 0) && (insertIndex < super.numChildren))
-                super.setChildIndex(child, insertIndex);
-            return child;
-        }
-        else if (child.parent && child.parent is DataGroup)
-        {
-            DataGroup(child.parent)._removeChild(child);
+        var childParent:Object = child.parent;
+        if (childParent == this)
+        {
+            super.setChildIndex(child, index);
+            return;
+        }
+        else if (childParent is DataGroup)
+        {
+            DataGroup(childParent)._removeChild(child);
         }

         if ((_layeringFlags & LAYERING_ENABLED) ||
             (child is IVisualElement && (child as IVisualElement).depth != 0))
             invalidateLayering();

-        return super.addChildAt(child, index != -1 ? index : super.numChildren);
+        super.addChildAt(child, index);
     }

     /**


changed order of setting properties and firing event

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

--- src/reprise/external/AbstractResource.as
+++ src/reprise/external/AbstractResource.as
@@ -310,11 +310,11 @@
 			}

 			m_didSucceed = success;
+			m_isExecuting = false;
+			m_didFinishLoading = true;

 			dispatchEvent(new ResourceEvent(Event.COMPLETE,
 				success, m_failureReason, m_httpStatus));
-			m_isExecuting = false;
-			m_didFinishLoading = true;
 		}

 		protected function loader_httpStatus(statusCode : Number) : void


revision 01

revision 01

--- as/main/frame1.as
+++ as/main/frame1.as
@@ -17,7 +17,7 @@
 var m02:MovieClip;
 var botiga_mc:MovieClip;
 var marcMenu_mc:MovieClip;
-this.softsk_mc:MovieClip;
+var softsk_mc:MovieClip;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/advancedgrids/src/mx/olap/SummaryNode.as
+++ frameworks/projects/advancedgrids/src/mx/olap/SummaryNode.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 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.olap
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.utils
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/mx/src/mx/accessibility/ButtonAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/ButtonAccImpl.as
@@ -25,6 +25,11 @@
 /**
  *  ButtonAccImpl is a subclass of AccessibilityImplementation
  *  which implements accessibility for the Button class.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class ButtonAccImpl extends AccImpl
 {
@@ -65,6 +70,11 @@
 	 *  Afterwards, when instances of Button are initialized,
 	 *  their accessibilityImplementation property
 	 *  will be set to an instance of this class.

+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public static function enableAccessibility():void
 	{
@@ -96,6 +106,11 @@
 	 *
 	 *  @param master The UIComponent instance that this AccImpl instance
 	 *  is making accessible.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function ButtonAccImpl(master:UIComponent)
 	{


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

+/**
+ *  Specifies the alpha transparency value of the focus skin.
+ *
+ *  The default value for the Halo theme is 0.4.
+ *  The default value for the Spark theme is 0.55.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
 [Style(name="focusAlpha", type="Number", inherit="no")]

 /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 7803
Author:   dsubrama@adobe.com
Date:     2009-06-12T22:33:24.106666Z

Log Message:
-----------
Metadata needed by Bangalore team for event-handler generation.

Bug: http://bugs.adobe.com/jira/browse/SDK-21632
Checkintests: Pass
Reviewer: Ryan

Modified Paths:
--------------
<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/RadioButtonGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TabBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HSlider.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/flex4/src/spark/components/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ToggleButtonBar.as</path>

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

--- frameworks/projects/spark/src/spark/components/HScrollBar.as
+++ frameworks/projects/spark/src/spark/components/HScrollBar.as
@@ -18,7 +18,12 @@
 import mx.events.PropertyChangeEvent;
 import mx.events.ResizeEvent;

+//--------------------------------------
+//  Other metadata
+//--------------------------------------
+
 [IconFile("HScrollBar.png")]
+[DefaultTriggerEvent("change")]

 /**
  *  The HScrollBar (horizontal ScrollBar) control lets you control


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

--- frameworks/projects/spark/src/spark/components/VScrollBar.as
+++ frameworks/projects/spark/src/spark/components/VScrollBar.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.
 //
 ////////////////////////////////////////////////////////////////////////////////


added laying out functions

added laying out functions

--- Arguments/src/classes/DynamicTextArea.as
+++ Arguments/src/classes/DynamicTextArea.as
@@ -30,6 +30,7 @@

 		public function DynamicTextArea()
 		{
+
 			super();
 			super.horizontalScrollPolicy = "off";
 			super.verticalScrollPolicy = "off";


Refactor fade logic into two methods as this logic will also be used when dying.


Fixed broken puzzle skip

Fixed broken puzzle skip


Added performanceCount configuration variable to TextPrinter Set default performanceCount to 10 so that test result times no longer push the results off screen in a normal terminal

--- asunit-4.0/src/asunit/printers/TextPrinter.as
+++ asunit-4.0/src/asunit/printers/TextPrinter.as
@@ -24,6 +24,7 @@
         public static const DEFAULT_HEADER:String = "AsUnit 4.0 by Luke Bayes, Ali Mills and Robert Penner\n\nFlash Player version: " + Capabilities.version
         public static const DEFAULT_FOOTER:String = "";
         public static const DEFAULT_FONT_SIZE:int = 12;
+        public static const DEFAULT_PERFORMANCE_COUNT:int = 10;
         public static const DEFAULT_TEXT_COLOR:uint = 0xffffff;

         public var header:String                     = DEFAULT_HEADER;
@@ -34,6 +35,7 @@
         public var traceOnComplete:Boolean           = true;
         public var hideLocalPaths:Boolean            = false;
         public var localPathPattern:RegExp           = LOCAL_PATH_PATTERN;
+        public var performanceCount:int              = DEFAULT_PERFORMANCE_COUNT;

         protected var textDisplay:TextField;

@@ -187,7 +189,7 @@
             println();
             println('Time Summary:');
             println();
-            var len:Number = testTimes.length;
+            var len:Number = Math.min(performanceCount, testTimes.length);
             var total:Number = 0;
             var testTime:Object;
             for (var i:Number = 0; i < len; i++) {


fix typo in Geometry.fillTangentsData() causing wrong values for the tangents

--- src/aerys/minko/render/geometry/Geometry.as
+++ src/aerys/minko/render/geometry/Geometry.as
@@ -463,7 +463,7 @@
 					if (computeNormals)
 						fillNormalsData(indices, normalsStream, xyzStream, triangles);

-					if (!hasNormals)
+					if (!hasNormals && normalsStream != null)
 						pushVertexStreamInList(streamId, normalsStream);
 					if (!hasTangents && tangentsStream != normalsStream)
 						pushVertexStreamInList(streamId, tangentsStream);
@@ -716,20 +716,12 @@
 				var tx 	: Number 	= coef * (v1v2 * (x0 - x2) - v0v2 * (x1 - x2));
 				var ty 	: Number 	= coef * (v1v2 * (y0 - y2) - v0v2 * (y1 - y2));
 				var tz 	: Number 	= coef * (v1v2 * (z0 - z2) - v0v2 * (z1 - z2));
-				var mag	: Number	= Math.sqrt(tx * tx + ty * ty + tz * tz);
-
-				if (mag != 0.)
-				{
-					tx /= mag;
-					ty /= mag;
-					tz /= mag;
-				}

 				ii = i0 * tangentsVertexSize + tangentsOffset;
 				tangentsData.position = ii;
 				var tx0 : Number = tx + tangentsData.readFloat();
 				var ty0 : Number = ty + tangentsData.readFloat();
-				var tz0 : Number = ty + tangentsData.readFloat();
+				var tz0 : Number = tz + tangentsData.readFloat();

 				tangentsData.position = ii;
 				tangentsData.writeFloat(tx0);
@@ -740,7 +732,7 @@
 				tangentsData.position = ii;
 				var tx1 : Number = tx + tangentsData.readFloat();
 				var ty1 : Number = ty + tangentsData.readFloat();
-				var tz1 : Number = ty + tangentsData.readFloat();
+				var tz1 : Number = tz + tangentsData.readFloat();

 				tangentsData.position = ii;
 				tangentsData.writeFloat(tx1);
@@ -751,7 +743,7 @@
 				tangentsData.position = ii;
 				var tx2 : Number = tx + tangentsData.readFloat();
 				var ty2 : Number = ty + tangentsData.readFloat();
-				var tz2 : Number = ty + tangentsData.readFloat();
+				var tz2 : Number = tz + tangentsData.readFloat();

 				tangentsData.position = ii;
 				tangentsData.writeFloat(tx2);
@@ -766,7 +758,8 @@
 				tx = tangentsData.readFloat();
 				ty = tangentsData.readFloat();
 				tz = tangentsData.readFloat();
-				mag = Math.sqrt(tx * tx + ty * ty + tz * tz);
+
+				var mag : Number = Math.sqrt(tx * tx + ty * ty + tz * tz);

 				if (mag != 0.)
 				{


remove Protocols ref

remove Protocols ref

--- src/com/google/analytics/core/GIFRequest.as
+++ src/com/google/analytics/core/GIFRequest.as
@@ -24,7 +24,6 @@
     import com.google.analytics.debug.DebugConfiguration;
     import com.google.analytics.debug.VisualDebugMode;
     import com.google.analytics.utils.Environment;
-    import com.google.analytics.utils.Protocols;
     import com.google.analytics.utils.Variables;
     import com.google.analytics.v4.Configuration;

@@ -509,11 +508,13 @@
                              /* get remote address (depending on protocol),
                                 then append rest of metrics / data
                              */
-                             if( _info.protocol == Protocols.HTTPS )
+                             //if( _info.protocol == Protocols.HTTPS )
+                             if( _info.protocol == "https" )
                              {
                                  remoteImage.url = _config.secureRemoteGIFpath;
                              }
-                             else if( _info.protocol == Protocols.HTTP )
+                             //else if( _info.protocol == Protocols.HTTP )
+                             else if( _info.protocol == "http" )
                              {
                                  remoteImage.url = _config.remoteGIFpath;
                              }


Fixed probe tooltip postion bug

Fixed probe tooltip postion bug

--- WeaveUI/src/weave/utils/ProbeTextUtils.as
+++ WeaveUI/src/weave/utils/ProbeTextUtils.as
@@ -149,7 +149,10 @@
 		{
 			(probeToolTip as ToolTip).setStyle("backgroundAlpha", Weave.properties.probeToolTipBackgroundAlpha.value);
 			if (isFinite(Weave.properties.probeToolTipBackgroundColor.value))
-				(probeToolTip as ToolTip).setStyle("backgroundColor", Weave.properties.probeToolTipBackgroundColor.value);
+				(probeToolTip as ToolTip).setStyle("backgroundColor", Weave.properties.probeToolTipBackgroundColor.value);
+
+
+
 		}

 		public static function showProbeToolTip(probeText:String, stageX:Number, stageY:Number, bounds:IBounds2D = null, margin:int = 5):void
@@ -175,6 +178,10 @@

 			// make tooltip completely opaque because text + graphics on same sprite is slow
 			setProbeToolTipAppearance() ;
+
+			//this step is required to set the height and width of probeToolTip to the right size.
+			(probeToolTip as ToolTip).validateNow();
+
 			var xMin:Number = bounds.getXNumericMin();
 			var yMin:Number = bounds.getYNumericMin();
 			var xMax:Number = bounds.getXNumericMax() - probeToolTip.width;


Fixed error in updateBuffer() override.

Fixed error in updateBuffer() override.

--- net/flashpunk/graphics/TiledSpritemap.as
+++ net/flashpunk/graphics/TiledSpritemap.as
@@ -35,7 +35,7 @@
 		}

 		/** @private Updates the buffer. */
-		override public function updateBuffer():void
+		override public function updateBuffer(clearBefore:Boolean = false):void
 		{
 			// get position of the current frame
 			_rect.x = _rect.width * _frame;


Transferred from the Adobe Open Source Subversion Repository

Revision: 18436
Author:   aharui@adobe.com
Date:     2010-11-03T21:33:18.313630Z

Log Message:
-----------
Prevent RTE when Window is closed before it gets initialized

QE notes: none
Doc notes: none
Bugs: SDK-26315
Reviewer: Corey
Tests run: checkintests mustella apollo/...Window
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/Window.as</path>

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

--- frameworks/projects/airframework/src/mx/core/Window.as
+++ frameworks/projects/airframework/src/mx/core/Window.as
@@ -2790,6 +2790,7 @@
             stage.nativeWindow.dispatchEvent(e);
             if (!(e.isDefaultPrevented()))
             {
+                removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
                 stage.nativeWindow.close();
                 _nativeWindow = null;
                 systemManager.removeChild(this);


Transferred from the Adobe Open Source Subversion Repository

Revision: 3279
Author:   chaase@adobe.com
Date:     2008-09-20T00:11:18.055533Z

Log Message:
-----------
Fixed SDK-16883, which was causing artifacts with transparent pixels in BitmapGraphic. Also fixed various initializations of Graphics.lineStyle() in the graphics elements classes (lineStyle(0,0,0) is incorrect; should be lineStyle(), which sets the weight to the default NaN).

Reviewed by Glenn
tests: checkintests

Modified Paths:
--------------
<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/frameworks/projects/flex4/src/flex/graphics/StrokedElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/FilledElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/BitmapGraphic.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/Path.as
+++ frameworks/projects/spark/src/spark/primitives/Path.as
@@ -461,7 +461,7 @@
         // Set a transparent line style because filled, unclosed shapes will
         // automatically be closed by the Player. When they are, we want the line
         // to be invisible.
-        g.lineStyle(0,0,0);
+        g.lineStyle();
         super.endDraw(g);
     }


UGC/Workshop support in Linux SWC

UGC/Workshop support in Linux SWC

--- lib/src_linux/com/amanitadesign/steam/FRESteamWorks.as
+++ lib/src_linux/com/amanitadesign/steam/FRESteamWorks.as
@@ -9,6 +9,7 @@
 package com.amanitadesign.steam {
 	import flash.desktop.NativeProcess;
 	import flash.desktop.NativeProcessStartupInfo;
+	import flash.display.DisplayObjectContainer;
 	import flash.events.Event;
 	import flash.events.EventDispatcher;
 	import flash.events.IEventDispatcher;
@@ -16,6 +17,9 @@
 	import flash.events.ProgressEvent;
 	import flash.events.StatusEvent;
 	import flash.filesystem.File;
+	import flash.filesystem.FileMode;
+	import flash.filesystem.FileStream;
+	import flash.net.registerClassAlias;
 	import flash.utils.ByteArray;
 	import flash.utils.IDataInput;
 	import flash.utils.IDataOutput;
@@ -33,38 +37,104 @@
 		private var _init:Boolean = false;
 		private var _error:Boolean = false;
 		private var _crashHandlerArgs:Array = null;
+		private var _buf:ByteArray;

 		public var isReady:Boolean = false;

 		private static const AIRSteam_Init:int = 0;
 		private static const AIRSteam_RunCallbacks:int = 1;
-		private static const AIRSteam_RequestStats:int = 2;
-		private static const AIRSteam_SetAchievement:int = 3;
-		private static const AIRSteam_ClearAchievement:int = 4;
-		private static const AIRSteam_IsAchievement:int = 5;
-		private static const AIRSteam_GetStatInt:int = 6;
-		private static const AIRSteam_GetStatFloat:int = 7;
-		private static const AIRSteam_SetStatInt:int = 8;
-		private static const AIRSteam_SetStatFloat:int = 9;
-		private static const AIRSteam_StoreStats:int = 10;
-		private static const AIRSteam_ResetAllStats:int = 11;
-		private static const AIRSteam_GetFileCount:int = 12;
-		private static const AIRSteam_GetFileSize:int = 13;
-		private static const AIRSteam_FileExists:int = 14;
-		private static const AIRSteam_FileWrite:int = 15;
-		private static const AIRSteam_FileRead:int = 16;
-		private static const AIRSteam_FileDelete:int = 17;
-		private static const AIRSteam_IsCloudEnabledForApp:int = 18;
-		private static const AIRSteam_SetCloudEnabledForApp:int = 19;
-		private static const AIRSteam_GetUserID:int = 20;
-		private static const AIRSteam_GetPersonaName:int = 21;
-		private static const AIRSteam_UseCrashHandler:int = 22;
+		private static const AIRSteam_GetUserID:int = 2;
+		private static const AIRSteam_GetAppID:int = 3;
+		private static const AIRSteam_GetPersonaName:int = 4;
+		private static const AIRSteam_UseCrashHandler:int = 5;
+		/* stats/achievements */
+		private static const AIRSteam_RequestStats:int = 6;
+		private static const AIRSteam_SetAchievement:int = 7;
+		private static const AIRSteam_ClearAchievement:int = 8;
+		private static const AIRSteam_IsAchievement:int = 9;
+		private static const AIRSteam_GetStatInt:int = 10;
+		private static const AIRSteam_GetStatFloat:int = 11;
+		private static const AIRSteam_SetStatInt:int = 12;
+		private static const AIRSteam_SetStatFloat:int = 13;
+		private static const AIRSteam_StoreStats:int = 14;
+		private static const AIRSteam_ResetAllStats:int = 15;
+		/* cloud */
+		private static const AIRSteam_GetFileCount:int = 16;
+		private static const AIRSteam_GetFileSize:int = 17;
+		private static const AIRSteam_FileExists:int = 18;
+		private static const AIRSteam_FileWrite:int = 19;
+		private static const AIRSteam_FileRead:int = 20;
+		private static const AIRSteam_FileDelete:int = 21;
+		private static const AIRSteam_FileShare:int = 22;
+		private static const AIRSteam_FileShareResult:int = 23;
+		private static const AIRSteam_IsCloudEnabledForApp:int = 24;
+		private static const AIRSteam_SetCloudEnabledForApp:int = 25;
+		private static const AIRSteam_GetQuota:int = 26;
+		/* ugc/workshop */
+		private static const AIRSteam_UGCDownload:int = 27;
+		private static const AIRSteam_UGCRead:int = 28;
+		private static const AIRSteam_GetUGCDownloadProgress:int = 29;
+		private static const AIRSteam_GetUGCDownloadResult:int = 30;
+		private static const AIRSteam_PublishWorkshopFile:int = 31;
+		private static const AIRSteam_PublishWorkshopFileResult:int = 32;
+		private static const AIRSteam_DeletePublishedFile:int = 33;
+		private static const AIRSteam_GetPublishedFileDetails:int = 34;
+		private static const AIRSteam_GetPublishedFileDetailsResult:int = 35;
+		private static const AIRSteam_EnumerateUserPublishedFiles:int = 36;
+		private static const AIRSteam_EnumerateUserPublishedFilesResult:int = 37;
+		private static const AIRSteam_EnumeratePublishedWorkshopFiles:int = 38;
+		private static const AIRSteam_EnumeratePublishedWorkshopFilesResult:int = 39;
+		private static const AIRSteam_EnumerateUserSubscribedFiles:int = 40;
+		private static const AIRSteam_EnumerateUserSubscribedFilesResult:int = 41;
+		private static const AIRSteam_EnumerateUserSharedWorkshopFiles:int = 42;
+		private static const AIRSteam_EnumerateUserSharedWorkshopFilesResult:int = 43;
+		private static const AIRSteam_EnumeratePublishedFilesByUserAction:int = 44;
+		private static const AIRSteam_EnumeratePublishedFilesByUserActionResult:int = 45;
+		private static const AIRSteam_SubscribePublishedFile:int = 46;
+		private static const AIRSteam_UnsubscribePublishedFile:int = 47;
+		private static const AIRSteam_CreatePublishedFileUpdateRequest:int = 48;
+		private static const AIRSteam_UpdatePublishedFileFile:int = 49;
+		private static const AIRSteam_UpdatePublishedFilePreviewFile:int = 50;
+		private static const AIRSteam_UpdatePublishedFileTitle:int = 51;
+		private static const AIRSteam_UpdatePublishedFileDescription:int = 52;
+		private static const AIRSteam_UpdatePublishedFileSetChangeDescription:int = 53;
+		private static const AIRSteam_UpdatePublishedFileVisibility:int = 54;
+		private static const AIRSteam_UpdatePublishedFileTags:int = 55;
+		private static const AIRSteam_CommitPublishedFileUpdate:int = 56;
+		private static const AIRSteam_GetPublishedItemVoteDetails:int = 57;
+		private static const AIRSteam_GetPublishedItemVoteDetailsResult:int = 58;
+		private static const AIRSteam_UpdateUserPublishedItemVote:int = 59;
+		private static const AIRSteam_SetUserPublishedFileAction:int = 60;
+		/* overlay */
+		private static const AIRSteam_ActivateGameOverlay:int = 61;
+		private static const AIRSteam_ActivateGameOverlayToUser:int = 62;
+		private static const AIRSteam_ActivateGameOverlayToWebPage:int = 63;
+		private static const AIRSteam_ActivateGameOverlayToStore:int = 64;
+		private static const AIRSteam_ActivateGameOverlayInviteDialog:int = 65;
+		private static const AIRSteam_IsOverlayEnabled:int = 66;
+		/* DLC / subscriptions */
+		private static const AIRSteam_IsSubscribedApp:int = 67;
+		private static const AIRSteam_IsDLCInstalled:int = 68;
+		private static const AIRSteam_GetDLCCount:int = 69;
+		private static const AIRSteam_InstallDLC:int = 70;
+		private static const AIRSteam_UninstallDLC:int = 71;
+		private static const AIRSteam_DLCInstalledResult:int = 72;

 		public function FRESteamWorks (target:IEventDispatcher = null) {
 			_file = File.applicationDirectory.resolvePath(PATH);
 			_process = new NativeProcess();
 			_process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, eventDispatched);
 			_process.addEventListener(IOErrorEvent.STANDARD_INPUT_IO_ERROR, errorCallback);
+			_buf = new ByteArray();
+
+			registerClassAlias("com.amanitadesign.steam.DownloadUGCResult", DownloadUGCResult);
+			registerClassAlias("com.amanitadesign.steam.FileDetailsResult", FileDetailsResult);
+			registerClassAlias("com.amanitadesign.steam.FilesByUserActionResult", FilesByUserActionResult);
+			registerClassAlias("com.amanitadesign.steam.ItemVoteDetailsResult", ItemVoteDetailsResult);
+			registerClassAlias("com.amanitadesign.steam.SubscribedFilesResult", SubscribedFilesResult);
+			registerClassAlias("com.amanitadesign.steam.UserFilesResult", UserFilesResult);
+			registerClassAlias("com.amanitadesign.steam.WorkshopFilesResult", WorkshopFilesResult);
+
 			super(target);
 		}

@@ -144,6 +214,11 @@
 			}
 		}

+		public function addOverlayWorkaround(container:DisplayObjectContainer,
+			alwaysVisible:Boolean = false, color:uint = 0x000000):void {
+			// no-op for now, since the overlay doesn't work on Linux anyway
+		}
+
 		private function callWrapper(funcName:int, params:Array = null):Boolean {
 			_error = false;
 			if(!_process.running) return false;
@@ -153,74 +228,106 @@

 			if (params) {
 				for(var i:int = 0; i < params.length; ++i) {
-					if(params[i] is ByteArray) {
-						var length:uint = params[i].length;
-						// length + 1 for the added newline
-						stdin.writeUTFBytes(String(length + 1) + "\n");
-						stdin.writeBytes(params[i]);
-						stdin.writeUTFBytes("\n");
-					} else {
-						stdin.writeUTFBytes(String(params[i]) + "\n");
-					}
+					writeValue(stdin, params[i]);
 				}
 			}

 			return !_error;
 		}

-		private function waitForData(output:IDataInput):uint {
-			while(!output.bytesAvailable) {
-				// wait
+		private function writeValue(output:IDataOutput, value:*):void {
+			if(value is ByteArray) {
+				var length:uint = value.length;
+				// length + 1 for the added newline
+				output.writeUTFBytes(String(length + 1) + "\n");
+				output.writeBytes(value);
+				output.writeUTFBytes("\n");
+			} else if(value is String) {
+				output.writeUTFBytes(String(value.length + 1) + "\n" + value + "\n");
+			} else if(value is Array) {
+				output.writeUTFBytes(value.length + "\n");
+				for (var el:int = 0; el < value.length; ++el) {
+					writeValue(output, value[el]);
+				}
+			} else {
+				output.writeUTFBytes(String(value) + "\n");
+			}
+		}
+
+		private function waitForData(output:IDataInput, length:uint = 1):uint {
+			// copy over what's left from before
+			var tmpBuf:ByteArray = new ByteArray();
+			_buf.readBytes(tmpBuf);
+			_buf.clear();
+			tmpBuf.position = 0;
+			tmpBuf.readBytes(_buf);
+			_buf.position = 0;
+
+			while(_buf.length < length) {
+				// basically just wait for data
 				if(!_process.running) return 0;
-			}
-
-			return output.bytesAvailable;
+				output.readBytes(_buf);
+			}
+
+			_buf.position = 0;
+			return _buf.length;
+		}
+
+		private function readResponse():* {
+			if (!_process.running) return null;
+			var stdout:IDataInput = _process.standardOutput;
+
+			// first, wait for the length prefix
+			if (!waitForData(stdout)) return null;
+			var length:uint = _buf.readObject() as uint;
+
+			// AIR seems to have a limit of around 32k bytes data on stdin
+			// we can synchronously wait for, so for large data we use a temp
+			// file instead
+			if (length > 16384) {
+				var filename:String = readStringResponse();
+				if (!filename) return null;
+
+				var tmpfile:File = new File(filename);
+				var stream:FileStream = new FileStream();
+				stream.open(tmpfile, FileMode.READ);
+
+				// if we don't have enough data, we're unlikely to get it later,
+				// so just skip this call
+				var res:* = null;
+				if (stream.bytesAvailable >= length)
+					res = stream.readObject();
+
+				stream.close();
+				tmpfile.deleteFileAsync();
+				return res;
+			}
+
+			// now, wait for the actual data
+			if(!waitForData(stdout, length)) return null;
+
+			return _buf.readObject();
+
 		}

 		private function readBoolResponse():Boolean {
 			if(!_process.running) return false;
-			var stdout:IDataInput = _process.standardOutput;
-			var avail:uint = waitForData(stdout);
-
-			var response:String = stdout.readUTFBytes(1);
-			return (response == "t");
+			return readResponse() as Boolean;
 		}

 		private function readIntResponse():int {
 			if(!_process.running) return 0;
-			var stdout:IDataInput = _process.standardOutput;
-			var avail:uint = waitForData(stdout);
-
-			var response:String = stdout.readUTFBytes(avail);
-			return parseInt(response, 10);
+			return readResponse() as int;
 		}

 		private function readFloatResponse():Number {
-			if(!_process.running) return 0.0;
-			var stdout:IDataInput = _process.standardOutput;
-			var avail:uint = waitForData(stdout);
-
-			var response:String = stdout.readUTFBytes(avail)
-			return parseFloat(response);
+			if(!_process.running) return 0;
+			return readResponse() as Number;
 		}

 		private function readStringResponse():String {
 			if(!_process.running) return "";
-
-			var stdout:IDataInput = _process.standardOutput;
-			var avail:uint = waitForData(stdout);
-
-			var data:String = stdout.readUTFBytes(avail)
-			var newline:uint = data.indexOf("\n");
-			var buf:String = data.substring(newline + 1);
-			var length:uint = parseInt(data.substring(0, newline), 10);
-
-			while(buf.length < length) {
-				avail = waitForData(stdout);
-				buf += stdout.readUTFBytes(avail);
-			}
-
-			return buf;
+			return readResponse() as String;
 		}

 		private function eventDispatched(e:ProgressEvent):void {
@@ -238,23 +345,23 @@
 			}
 		}

-		public function requestStats():Boolean {
-			if(!callWrapper(AIRSteam_RequestStats)) return false;
-			return readBoolResponse();
-		}
-
 		public function runCallbacks():Boolean {
-			if(!callWrapper(AIRSteam_RunCallbacks)) return false;
+			if(!callWrapper(AIRSteam_RunCallbacks, [])) return false;
 			return true;
 		}

 		public function getUserID():String {
-			if(!callWrapper(AIRSteam_GetUserID)) return "";
+			if(!callWrapper(AIRSteam_GetUserID, [])) return "";
 			return readStringResponse();
 		}

+		public function getAppID():uint {
+			if(!callWrapper(AIRSteam_GetAppID, [])) return 0;
+			return readIntResponse();
+		}
+
 		public function getPersonaName():String {
-			if(!callWrapper(AIRSteam_GetPersonaName)) return "";
+			if(!callWrapper(AIRSteam_GetPersonaName, [])) return "";
 			return readStringResponse();
 		}

@@ -265,91 +372,108 @@
 			return true;
 		}

-		public function setAchievement(id:String):Boolean {
-			if(!callWrapper(AIRSteam_SetAchievement, [id])) return false;
-			return readBoolResponse();
-		}
-
-		public function clearAchievement(id:String):Boolean {
-			if(!callWrapper(AIRSteam_ClearAchievement, [id])) return false;
-			return readBoolResponse();
-		}
-
-		public function isAchievement(id:String):Boolean {
-			if(!callWrapper(AIRSteam_IsAchievement, [id])) return false;
-			return readBoolResponse();
-		}
-
-		public function getStatInt(id:String):int {
-			if(!callWrapper(AIRSteam_GetStatInt, [id])) return 0;
+		/* stats/achievements */
+		public function requestStats():Boolean {
+			if(!callWrapper(AIRSteam_RequestStats, [])) return false;
+			return readBoolResponse();
+		}
+
+		public function setAchievement(name:String):Boolean {
+			if(!callWrapper(AIRSteam_SetAchievement, [name])) return false;
+			return readBoolResponse();
+		}
+
+		public function clearAchievement(name:String):Boolean {
+			if(!callWrapper(AIRSteam_ClearAchievement, [name])) return false;
+			return readBoolResponse();
+		}
+
+		public function isAchievement(name:String):Boolean {
+			if(!callWrapper(AIRSteam_IsAchievement, [name])) return false;
+			return readBoolResponse();
+		}
+
+		public function getStatInt(name:String):int {
+			if(!callWrapper(AIRSteam_GetStatInt, [name])) return 0;
 			return readIntResponse();
 		}

-		public function getStatFloat(id:String):Number {
-			if(!callWrapper(AIRSteam_GetStatFloat, [id])) return 0.0;
+		public function getStatFloat(name:String):Number {
+			if(!callWrapper(AIRSteam_GetStatFloat, [name])) return 0.0;
 			return readFloatResponse();
 		}

-		public function setStatInt(id:String, value:int):Boolean {
-			if(!callWrapper(AIRSteam_SetStatInt, [id, value])) return false;
-			return readBoolResponse();
-		}
-
-		public function setStatFloat(id:String, value:Number):Boolean {
-			if(!callWrapper(AIRSteam_SetStatFloat, [id, value])) return false;
+		public function setStatInt(name:String, value:int):Boolean {
+			if(!callWrapper(AIRSteam_SetStatInt, [name, value])) return false;
+			return readBoolResponse();
+		}
+
+		public function setStatFloat(name:String, value:Number):Boolean {
+			if(!callWrapper(AIRSteam_SetStatFloat, [name, value])) return false;
 			return readBoolResponse();
 		}

 		public function storeStats():Boolean {
-			if(!callWrapper(AIRSteam_StoreStats)) return false;
-			return readBoolResponse();
-		}
-
-		public function resetAllStats(bAchievementsToo:Boolean):Boolean {
-			if(!callWrapper(AIRSteam_ResetAllStats, [bAchievementsToo])) return false;
-			return readBoolResponse();
-		}
-
+			if(!callWrapper(AIRSteam_StoreStats, [])) return false;
+			return readBoolResponse();
+		}
+
+		public function resetAllStats(achievementsToo:Boolean):Boolean {
+			if(!callWrapper(AIRSteam_ResetAllStats, [achievementsToo])) return false;
+			return readBoolResponse();
+		}
+
+		/* cloud */
 		public function getFileCount():int {
-			if(!callWrapper(AIRSteam_GetFileCount)) return 0;
+			if(!callWrapper(AIRSteam_GetFileCount, [])) return 0;
 			return readIntResponse();
 		}

-		public function getFileSize(fileName:String):int {
-			if(!callWrapper(AIRSteam_GetFileSize, [fileName])) return 0;
+		public function getFileSize(name:String):int {
+			if(!callWrapper(AIRSteam_GetFileSize, [name])) return 0;
 			return readIntResponse();
 		}

-		public function fileExists(fileName:String):Boolean {
-			if(!callWrapper(AIRSteam_FileExists, [fileName])) return false;
-			return readBoolResponse();
-		}
-
-		public function fileWrite(fileName:String, data:ByteArray):Boolean {
-			if(!callWrapper(AIRSteam_FileWrite, [fileName, data])) return false;
-			return readBoolResponse();
-		}
-
-		public function fileRead(fileName:String, data:ByteArray):Boolean {
-			if(!callWrapper(AIRSteam_FileRead, [fileName])) return false;
+		public function fileExists(name:String):Boolean {
+			if(!callWrapper(AIRSteam_FileExists, [name])) return false;
+			return readBoolResponse();
+		}
+
+		public function fileWrite(name:String, data:ByteArray):Boolean {
+			if(!callWrapper(AIRSteam_FileWrite, [name, data])) return false;
+			return readBoolResponse();
+		}
+
+		public function fileRead(name:String, data:ByteArray):Boolean {
+			if(!callWrapper(AIRSteam_FileRead, [name])) return false;

 			var success:Boolean = readBoolResponse();
 			if(success) {
-				var content:String = readStringResponse();
-				data.writeUTFBytes(content);
+				var response:ByteArray = readResponse() as ByteArray;
+				data.writeBytes(response);
 				data.position = 0;
 			}

-			return success;
-		}
-
-		public function fileDelete(fileName:String):Boolean {
-			if(!callWrapper(AIRSteam_FileDelete, [fileName])) return false;
-			return readBoolResponse();
+			return true;
+		}
+
+		public function fileDelete(name:String):Boolean {
+			if(!callWrapper(AIRSteam_FileDelete, [name])) return false;
+			return readBoolResponse();
+		}
+
+		public function fileShare(name:String):Boolean {
+			if(!callWrapper(AIRSteam_FileShare, [name])) return false;
+			return readBoolResponse();
+		}
+
+		public function fileShareResult():String {
+			if(!callWrapper(AIRSteam_FileShareResult, [])) return "";
+			return readStringResponse();
 		}

 		public function isCloudEnabledForApp():Boolean {
-			if(!callWrapper(AIRSteam_IsCloudEnabledForApp)) return false;
+			if(!callWrapper(AIRSteam_IsCloudEnabledForApp, [])) return false;
 			return readBoolResponse();
 		}

@@ -357,5 +481,251 @@
 			if(!callWrapper(AIRSteam_SetCloudEnabledForApp, [enabled])) return false;
 			return readBoolResponse();
 		}
+
+		public function getQuota():Array {
+			if(!callWrapper(AIRSteam_GetQuota, [])) return null;
+			return readResponse() as Array;
+		}
+
+		/* ugc/workshop */
+		public function UGCDownload(handle:String, priority:int):Boolean {
+			if(!callWrapper(AIRSteam_UGCDownload, [handle, priority])) return false;
+			return readBoolResponse();
+		}
+
+		public function UGCRead(handle:String, size:int, offset:uint, data:ByteArray):Boolean {
+			if(!callWrapper(AIRSteam_UGCRead, [handle, size, offset, data])) return false;
+			var success:Boolean = readBoolResponse();
+
+			if(success) {
+				var response:ByteArray = readResponse() as ByteArray;
+				data.writeBytes(response);
+				data.position = 0;
+			}
+
+			return true;
+		}
+
+		public function getUGCDownloadProgress(handle:String):Array {
+			if(!callWrapper(AIRSteam_GetUGCDownloadProgress, [handle])) return null;
+			return readResponse() as Array;
+		}
+
+		public function getUGCDownloadResult(handle:String):DownloadUGCResult {
+			if(!callWrapper(AIRSteam_GetUGCDownloadResult, [handle])) return null;
+			return readResponse() as DownloadUGCResult;
+		}
+
+		public function publishWorkshopFile(name:String, preview:String, appId:uint, title:String, description:String, visibility:uint, tags:Array, fileType:uint):Boolean {
+			if(!callWrapper(AIRSteam_PublishWorkshopFile, [name, preview, appId, title, description, visibility, tags, fileType])) return false;
+			return readBoolResponse();
+		}
+
+		public function publishWorkshopFileResult():String {
+			if(!callWrapper(AIRSteam_PublishWorkshopFileResult, [])) return "";
+			return readStringResponse();
+		}
+
+		public function deletePublishedFile(file:String):Boolean {
+			if(!callWrapper(AIRSteam_DeletePublishedFile, [file])) return false;
+			return readBoolResponse();
+		}
+
+		public function getPublishedFileDetails(file:String):Boolean {
+			if(!callWrapper(AIRSteam_GetPublishedFileDetails, [file])) return false;
+			return readBoolResponse();
+		}
+
+		public function getPublishedFileDetailsResult(file:String):FileDetailsResult {
+			if(!callWrapper(AIRSteam_GetPublishedFileDetailsResult, [file])) return null;
+			return readResponse() as FileDetailsResult;
+		}
+
+		public function enumerateUserPublishedFiles(startIndex:uint):Boolean {
+			if(!callWrapper(AIRSteam_EnumerateUserPublishedFiles, [startIndex])) return false;
+			return readBoolResponse();
+		}
+
+		public function enumerateUserPublishedFilesResult():UserFilesResult {
+			if(!callWrapper(AIRSteam_EnumerateUserPublishedFilesResult, [])) return null;
+			return readResponse() as UserFilesResult;
+		}
+
+		public function enumeratePublishedWorkshopFiles(type:uint, start:uint, count:uint, days:uint, tags:Array, userTags:Array):Boolean {
+			if(!callWrapper(AIRSteam_EnumeratePublishedWorkshopFiles, [type, start, count, days, tags, userTags])) return false;
+			return readBoolResponse();
+		}
+
+		public function enumeratePublishedWorkshopFilesResult():WorkshopFilesResult {
+			if(!callWrapper(AIRSteam_EnumeratePublishedWorkshopFilesResult, [])) return null;
+			return readResponse() as WorkshopFilesResult;
+		}
+
+		public function enumerateUserSubscribedFiles(startIndex:uint):Boolean {
+			if(!callWrapper(AIRSteam_EnumerateUserSubscribedFiles, [startIndex])) return false;
+			return readBoolResponse();
+		}
+
+		public function enumerateUserSubscribedFilesResult():SubscribedFilesResult {
+			if(!callWrapper(AIRSteam_EnumerateUserSubscribedFilesResult, [])) return null;
+			return readResponse() as SubscribedFilesResult;
+		}
+
+		public function enumerateUserSharedWorkshopFiles(steamID:String, start:uint, required:Array, excluded:Array):Boolean {
+			if(!callWrapper(AIRSteam_EnumerateUserSharedWorkshopFiles, [steamID, start, required, excluded])) return false;
+			return readBoolResponse();
+		}
+
+		public function enumerateUserSharedWorkshopFilesResult():UserFilesResult {
+			if(!callWrapper(AIRSteam_EnumerateUserSharedWorkshopFilesResult, [])) return null;
+			return readResponse() as UserFilesResult;
+		}
+
+		public function enumeratePublishedFilesByUserAction(action:uint, startIndex:uint):Boolean {
+			if(!callWrapper(AIRSteam_EnumeratePublishedFilesByUserAction, [action, startIndex])) return false;
+			return readBoolResponse();
+		}
+
+		public function enumeratePublishedFilesByUserActionResult():FilesByUserActionResult {
+			if(!callWrapper(AIRSteam_EnumeratePublishedFilesByUserActionResult, [])) return null;
+			return readResponse() as FilesByUserActionResult;
+		}
+
+		public function subscribePublishedFile(file:String):Boolean {
+			if(!callWrapper(AIRSteam_SubscribePublishedFile, [file])) return false;
+			return readBoolResponse();
+		}
+
+		public function unsubscribePublishedFile(file:String):Boolean {
+			if(!callWrapper(AIRSteam_UnsubscribePublishedFile, [file])) return false;
+			return readBoolResponse();
+		}
+
+		public function createPublishedFileUpdateRequest(file:String):String {
+			if(!callWrapper(AIRSteam_CreatePublishedFileUpdateRequest, [file])) return "";
+			return readStringResponse();
+		}
+
+		public function updatePublishedFileFile(handle:String, file:String):Boolean {
+			if(!callWrapper(AIRSteam_UpdatePublishedFileFile, [handle, file])) return false;
+			return readBoolResponse();
+		}
+
+		public function updatePublishedFilePreviewFile(handle:String, preview:String):Boolean {
+			if(!callWrapper(AIRSteam_UpdatePublishedFilePreviewFile, [handle, preview])) return false;
+			return readBoolResponse();
+		}
+
+		public function updatePublishedFileTitle(handle:String, title:String):Boolean {
+			if(!callWrapper(AIRSteam_UpdatePublishedFileTitle, [handle, title])) return false;
+			return readBoolResponse();
+		}
+
+		public function updatePublishedFileDescription(handle:String, description:String):Boolean {
+			if(!callWrapper(AIRSteam_UpdatePublishedFileDescription, [handle, description])) return false;
+			return readBoolResponse();
+		}
+
+		public function updatePublishedFileSetChangeDescription(handle:String, changeDesc:String):Boolean {
+			if(!callWrapper(AIRSteam_UpdatePublishedFileSetChangeDescription, [handle, changeDesc])) return false;
+			return readBoolResponse();
+		}
+
+		public function updatePublishedFileVisibility(handle:String, visibility:uint):Boolean {
+			if(!callWrapper(AIRSteam_UpdatePublishedFileVisibility, [handle, visibility])) return false;
+			return readBoolResponse();
+		}
+
+		public function updatePublishedFileTags(handle:String, tags:Array):Boolean {
+			if(!callWrapper(AIRSteam_UpdatePublishedFileTags, [handle, tags])) return false;
+			return readBoolResponse();
+		}
+
+		public function commitPublishedFileUpdate(handle:String):Boolean {
+			if(!callWrapper(AIRSteam_CommitPublishedFileUpdate, [handle])) return false;
+			return readBoolResponse();
+		}
+
+		public function getPublishedItemVoteDetails(file:String):Boolean {
+			if(!callWrapper(AIRSteam_GetPublishedItemVoteDetails, [file])) return false;
+			return readBoolResponse();
+		}
+
+		public function getPublishedItemVoteDetailsResult():ItemVoteDetailsResult {
+			if(!callWrapper(AIRSteam_GetPublishedItemVoteDetailsResult, [])) return null;
+			return readResponse() as ItemVoteDetailsResult;
+		}
+
+		public function updateUserPublishedItemVote(file:String, upvote:Boolean):Boolean {
+			if(!callWrapper(AIRSteam_UpdateUserPublishedItemVote, [file, upvote])) return false;
+			return readBoolResponse();
+		}
+
+		public function setUserPublishedFileAction(file:String, action:uint):Boolean {
+			if(!callWrapper(AIRSteam_SetUserPublishedFileAction, [file, action])) return false;
+			return readBoolResponse();
+		}
+
+		/* overlay */
+		public function activateGameOverlay(dialog:String):Boolean {
+			if(!callWrapper(AIRSteam_ActivateGameOverlay, [dialog])) return false;
+			return readBoolResponse();
+		}
+
+		public function activateGameOverlayToUser(dialog:String, steamId:String):Boolean {
+			if(!callWrapper(AIRSteam_ActivateGameOverlayToUser, [dialog, steamId])) return false;
+			return readBoolResponse();
+		}
+
+		public function activateGameOverlayToWebPage(url:String):Boolean {
+			if(!callWrapper(AIRSteam_ActivateGameOverlayToWebPage, [url])) return false;
+			return readBoolResponse();
+		}
+
+		public function activateGameOverlayToStore(appId:uint, flag:uint):Boolean {
+			if(!callWrapper(AIRSteam_ActivateGameOverlayToStore, [appId, flag])) return false;
+			return readBoolResponse();
+		}
+
+		public function activateGameOverlayInviteDialog(steamIdLobby:String):Boolean {
+			if(!callWrapper(AIRSteam_ActivateGameOverlayInviteDialog, [steamIdLobby])) return false;
+			return readBoolResponse();
+		}
+
+		public function isOverlayEnabled():Boolean {
+			if(!callWrapper(AIRSteam_IsOverlayEnabled, [])) return false;
+			return readBoolResponse();
+		}
+
+		/* DLC / subscriptions */
+		public function isSubscribedApp(appId:uint):Boolean {
+			if(!callWrapper(AIRSteam_IsSubscribedApp, [appId])) return false;
+			return readBoolResponse();
+		}
+
+		public function isDLCInstalled(appId:uint):Boolean {
+			if(!callWrapper(AIRSteam_IsDLCInstalled, [appId])) return false;
+			return readBoolResponse();
+		}
+
+		public function getDLCCount():int {
+			if(!callWrapper(AIRSteam_GetDLCCount, [])) return 0;
+			return readIntResponse();
+		}
+
+		public function installDLC(appId:uint):Boolean {
+			if(!callWrapper(AIRSteam_InstallDLC, [appId])) return false;
+			return readBoolResponse();
+		}
+
+		public function uninstallDLC(appId:uint):Boolean {
+			if(!callWrapper(AIRSteam_UninstallDLC, [appId])) return false;
+			return readBoolResponse();
+		}
+
+		public function DLCInstalledResult():uint {
+			if(!callWrapper(AIRSteam_DLCInstalledResult, [])) return 0;
+			return readIntResponse();
+		}
 	}
 }


Add .json extension to config files.

Add .json extension to config files.

--- exporter/src/main/as/flump/export/Exporter.as
+++ exporter/src/main/as/flump/export/Exporter.as
@@ -12,6 +12,7 @@
 import flash.events.Event;
 import flash.events.MouseEvent;
 import flash.filesystem.File;
+import flash.net.FileFilter;
 import flash.net.SharedObject;
 import flash.utils.IDataOutput;

@@ -93,7 +94,8 @@
                 updatePublisher();
                 updateWindowTitle(false);
             });
-            file.browseForOpen("Open Flump Configuration");
+            file.browseForOpen("Open Flump Configuration", [
+                new FileFilter("Flump config (*.json)", "*.json") ]);
         });
         fileMenuItem.submenu.addItemAt(new NativeMenuItem("Sep", /*separator=*/true), 2);

@@ -121,6 +123,11 @@
         function saveAs (..._) :void {
             var file :File = new File();
             file.addEventListener(Event.SELECT, function (..._) :void {
+                // Ensure the filename ends with .json
+                if (!StringUtil.endsWith(file.name.toLowerCase(), ".json")) {
+                    file = file.parent.resolvePath(file.name + ".json");
+                }
+
                 _confFile = file;
                 trace("Conf file is now " + _confFile.nativePath);
                 _settings.data["CONF_FILE"] = _confFile.nativePath;
@@ -135,7 +142,7 @@
         });

         function updateWindowTitle (modified :Boolean) :void {
-            var name :String = (_confFile != null) ? _confFile.name : "Untitled";
+            var name :String = (_confFile != null) ? _confFile.name.replace(/\.json$/i, "") : "Untitled";
             if (modified) name += "*";
             _win.title = name;
         };