Transferred from the Adobe Open Source Subversion Repository

Revision: 18514
Author:   dthakkar@adobe.com
Date:     2010-11-10T00:38:39.528767Z

Log Message:
-----------
QE notes: Some testcases in spark formatters are failing because of behavior change. These testcases are excluded prior to submission. Globalization QE team has been informed about this.
Doc notes: Spark Formatters ASDocs are updated and also added samples for the spark formatters.
Bugs: SDK-28145, SDK-28345 ,SDK-28320 ,SDK-28287,SDK-28314
Reviewer: Gordon , Craig, Masa, Xie
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/AdvancedStyleClient.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/globalization/MatchingCollatorExample.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/NumberValidatorTestScript.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/CurrencyValidatorTestScript.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/NumberValidatorTests.mxml</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/formatters</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/CurrencyValidatorTests.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/CollatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/NumberFormatter.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/formatters/examples/NumberFormatterExample1.mxml</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/supportClasses/NumberBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/BasicTests.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/formatters/examples/CurrencyFormatterExample1.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/CurrencyFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/DateTimeFormatter.as</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/globalization</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/bundles/en_US/validators.properties</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/SortingCollator.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/globalization/SortingCollatorExample.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/StringTools.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/globalization/StringToolsExample.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/validators/IValidator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/BasicTests-config.xml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses/NumberValidatorBase.as</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/spark-manifest.xml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses/GlobalizationValidatorBase.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/formatters/examples/NumberFormatterExample2.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/formatters/examples/CurrencyFormatterExample2.mxml</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/NumberValidator.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/CurrencyValidator.as</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/formatters/examples</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/validators/Validator.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses/GlobalizationUtils.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/GlobalizationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/formatters/IFormatter.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/asdoc/en_US/spark/formatters/examples/DateTimeFormatterExample.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/LastOperationStatus.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/supportClasses/NumberFormatterBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/MatchingCollator.as</path>

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

--- frameworks/projects/spark/src/spark/globalization/MatchingCollator.as
+++ frameworks/projects/spark/src/spark/globalization/MatchingCollator.as
@@ -25,18 +25,19 @@
  *  flash.globalization.Collator.
  *  Therefore the locale-specific string comparison is provided by the
  *  flash.globalization.Collator.
- *  However this MatchingCollator class can be used in MXML declartions, uses
+ *  However, this MatchingCollator class can be used in MXML declartions, uses
  *  the locale style for the requested Locale ID name, and has methods and
  *  properties that are bindable.
- *  Additionally events are generated if there is an error or warning
+ *  Additionally, LastOperationStatus  is set, if there is an error or warning
  *  generated by the flash.globalization class.

  *
- *
The flash.globalization.Collator class use the underlying operating
+ *
The flash.globalization.Collator class uses the underlying operating
  *  system for the formatting functionality and to supply the locale
  *  specific data.
  *  On some operating systems, the flash.globalization classes are
- *  unsupported, this wrapper class provides a fallback functionality in
- *  this case.

+ *  unsupported, this wrapper class provides a fallback functionality.

+ *
+ *  @includeExample examples/MatchingCollatorExample.mxml
  *
  *  @see flash.globalization.Collator
  */
@@ -74,26 +75,28 @@
      *  The locale style can be set in several ways:

      *
      *

-     *
Inheriting the style from a UIComponent by calling the
+     *
Inheriting the style from a UIComponent by calling the
      *          UIComponent's addStyleClient method.

      *
By using the class in an MXML declaration and inheriting the
      *          locale from the document that contains the declaration.
      *  <listing version="3.0">
+     *  Example:
      *  <fx:Declarations>
-     *         <s:StringTools id="st" />
+     *         <s:MatchingCollator id="mc" />
      *  </fx:Declarations>
      *  </listing>
      *

      *
By using an MXML declaration and specifying the locale value
      *              in the list of assignments.
      *  <listing version="3.0">
+     *  Example:
      *  <fx:Declarations>
-     *      <s:StringTools id="st_turkish" locale="tr-TR" />
+     *      <s:MatchingCollator id="mc_France" locale="fr-FR" />
      *  </fx:Declarations>
      *  </listing>
      *

      *
Calling the setStyle method, e.g.
-     *              st.setStyle("locale", "tr-TR")

+     *              mc.setStyle("locale", "fr-FR")

      *

      *
      *
If the locale style is not set by one of the above techniques,
@@ -105,10 +108,10 @@
      *

      *
      *  @see flash.globalization.Collator
+     *  @langversion 3.0
      *  @playerversion Flash 10.1
-     *  @langversion 3.0
+     *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
-     *  @productversion Flash CS5
      */
     public function MatchingCollator()
     {


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

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

 package mx.skins.spark
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 6225
Author:   mhorn@adobe.com
Date:     2009-04-23T20:35:07.562769Z

Log Message:
-----------
ASdoc updates

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/StepperIncrButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DateChooserTodayIndicatorSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/PopUpButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/SliderTrackHighlightSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/TextInputBorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ProgressIndeterminateSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DateChooserSelectionIndicatorSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DateChooserNextMonthSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/TabSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ScrollBarTrackSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DataGridHeaderSeparatorSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/AccordionHeaderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ButtonBarMiddleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/StepperDecrButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ProgressBarTrackSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DateChooserNextYearSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/SliderThumbSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DateChooserRollOverIndicatorSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/LinkButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ProgressBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/RadioButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/PanelBorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/EditableComboBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DateChooserPrevMonthSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ButtonBarFirstButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ProgressMaskSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/SliderTrackSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ScrollBarDownButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ComboBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ColorPickerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/BorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DateChooserPrevYearSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DefaultButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ButtonBarLastButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ScrollBarThumbSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/MenuItemSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ScrollBarUpButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/MenuSeparatorSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DataGridHeaderBackgroundSkin.mxml</path>

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

--- frameworks/projects/sparkskins/src/mx/skins/spark/ProgressMaskSkin.as
+++ frameworks/projects/sparkskins/src/mx/skins/spark/ProgressMaskSkin.as
@@ -16,7 +16,7 @@
 import mx.skins.ProgrammaticSkin;

 /**
- *  The skin for the mask of the ProgressBar's determinate and indeterminate bars.
+ *  The Spark skin for the mask of the Halo ProgressBar component's determinate and indeterminate bars.
  *  The mask defines the area in which the progress bar or
  *  indeterminate progress bar is displayed.
  *  By default, the mask defines the progress bar to be inset 1 pixel from the track.


fix widevine issue on MAC

fix widevine issue on MAC

--- plugins/wvPlugin/src/com/widevine/WvNetConnection.as
+++ plugins/wvPlugin/src/com/widevine/WvNetConnection.as
@@ -11,6 +11,7 @@
 	import flash.external.ExternalInterface;
 	import flash.net.NetConnection;
 	import flash.net.Responder;
+	import flash.utils.setTimeout;

 	public class WvNetConnection extends NetConnection
 	{
@@ -79,9 +80,13 @@
 				//trace("(Handling Wv RTMP stream:" + command);
 			}
 			if (doConnect(command) != 0) {
-				//dispatchEvent(new NetStatusEvent("netStatus", obj));
-				//throw new Error("doConnect() failed");
-				dispatchEvent(new Event(DO_CONNECT_FAILED));
+				setTimeout(function():void{
+					if (doConnect(command) != 0) {
+						//dispatchEvent(new NetStatusEvent("netStatus", obj));
+						//throw new Error("doConnect() failed");
+						dispatchEvent(new Event(DO_CONNECT_FAILED));
+					}
+				},1500);
 			}
 		}
 		///////////////////////////////////////////////////////////////////////////


DataBindings.add(dataProvider) will throw an error if dataProvider is already bound

--- src/aerys/minko/type/data/DataBindings.as
+++ src/aerys/minko/type/data/DataBindings.as
@@ -29,7 +29,10 @@

 		public function add(dataProvider : IDataProvider) : DataBindings
 		{
-			var dataDescriptor : Object = dataProvider.dataDescriptor;
+			if (_bindings[dataProvider])
+				throw new Error('This data provider is already bound.');
+
+			var dataDescriptor 	: Object 	= dataProvider.dataDescriptor;

 			dataProvider.changed.add(dataProviderChangedHandler);

@@ -245,7 +248,7 @@
 				setProperty(propertyName, key !== NO_KEY ? source[key] : source);
 		}

-		private function signalChange(propertyName : String,
+		private function signalChange(propertyName 	: String,
 									  newValue		: Object) : void
 		{
 			getPropertyChangedSignal(propertyName).execute(this, propertyName, newValue);


Add empty "clone" method to Cloner class.

--- dolly-framework/src/main/actionscript/dolly/Cloner.as
+++ dolly-framework/src/main/actionscript/dolly/Cloner.as
@@ -1,6 +1,7 @@
 package dolly {
 public class Cloner {
-	public function Cloner() {
+	public static function clone(source:*):* {
+		return null;
 	}
 }
-}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 2796
Author:   jimurphy@adobe.com
Date:     2008-08-11T14:31:56.866734Z

Log Message:
-----------
Merged 3.0.x revisions [2767,2780,2784] -> trunk

Modified Paths:
--------------
<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/framework/src/mx/managers/SystemManager.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.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/framework/src/mx/controls/PopUpButton.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/controls/Menu.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/modules/compiler/src/java/flex2/tools/Compc.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as</path>

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

--- frameworks/projects/mx/src/mx/controls/PopUpButton.as
+++ frameworks/projects/mx/src/mx/controls/PopUpButton.as
@@ -35,6 +35,7 @@
 import mx.events.ListEvent;
 import mx.events.MenuEvent;
 import mx.events.FlexMouseEvent;
+import mx.events.MarshalMouseEvent;
 import mx.managers.IFocusManagerComponent;
 import mx.managers.PopUpManager;
 import mx.styles.ISimpleStyleClient;
@@ -483,6 +484,10 @@

             _popUp.addEventListener(FlexMouseEvent.MOUSE_WHEEL_OUTSIDE,
                                     popMouseDownOutsideHandler);
+            _popUp.addEventListener(MarshalMouseEvent.MOUSE_DOWN,
+                                    popMouseDownOutsideHandler);
+            _popUp.addEventListener(MarshalMouseEvent.MOUSE_WHEEL,
+                                    popMouseDownOutsideHandler);

             _popUp.owner = this;

@@ -1113,21 +1118,27 @@
     /**
      *  @private
      */
-    private function popMouseDownOutsideHandler(event:MouseEvent):void
-    {
-        // for automated testing, since we're generating this event and
-        // can only set localX and localY, transpose those coordinates
-        // and use them for the test point.
-        var p:Point = event.target.localToGlobal(new Point(event.localX,
-                                                           event.localY));
-        if (hitTestPoint(p.x, p.y, true))
-        {
-            // do nothing
-        }
-        else
-        {
+    private function popMouseDownOutsideHandler(event:Event):void
+    {
+        if (event is MouseEvent)
+        {
+            // for automated testing, since we're generating this event and
+            // can only set localX and localY, transpose those coordinates
+            // and use them for the test point.
+            var mouseEvent:MouseEvent = MouseEvent(event);
+            var p:Point = event.target.localToGlobal(new Point(mouseEvent.localX,
+                                                               mouseEvent.localY));
+            if (hitTestPoint(p.x, p.y, true))
+            {
+                // do nothing
+            }
+            else
+            {
+                close();
+            }
+        }
+        else if (event is MarshalMouseEvent)
             close();
-        }
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 5770
Author:   gruehle@adobe.com
Date:     2009-03-30T20:58:54.529722Z

Log Message:
-----------
Add [Alternative] metadata to the Halo components that have a Gumbo replacement.

Bugs: SDK-20190
QA notes: none
Doc notes: Additional ASDoc comments added for many of the classes. These should all be reviewed.
Reviewer: Chet

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TileList.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/controls/HSlider.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/effects/Zoom.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ToggleButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/HBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ViewStack.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButtonGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ControlBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Cubic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Fade.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/effects/RemoveChildAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/TweenEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeRight.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/VBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Glow.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/framework/src/mx/effects/easing/Quartic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Box.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeLeft.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ApplicationControlBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Quintic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Tween.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Tile.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Quadratic.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/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/AddChildAction.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/framework/src/mx/effects/WipeDown.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/SetPropertyAction.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/framework/src/mx/containers/Canvas.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Blur.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/LinkBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Text.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HorizontalList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeUp.as</path>

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

--- frameworks/projects/mx/src/mx/controls/RadioButton.as
+++ frameworks/projects/mx/src/mx/controls/RadioButton.as
@@ -62,6 +62,8 @@
 [IconFile("RadioButton.png")]

 [ResourceBundle("controls")]
+
+[Alternative(replacement="spark.components.RadioButton", since="4.0")]

 /**
  *  The RadioButton control lets the user make a single choice


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

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

 package mx.rpc
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 5220
Author:   chaase@adobe.com
Date:     2009-03-10T15:55:06.496289Z

Log Message:
-----------
New Transform effects to handle correctly doing Move, Rotate, and Scale operations simultaneously. Also, added keyframe capabilities to new effects system (necessary for the transform effects, shouldn't affect operation of other effects). Fixed various issues with effects/transition infrastructure as necessary. Added transform utility functions to UIComponent, AdvancedLayoutFeatures, and GraphicElement.

QE Notes: This will break existing new effects tests due to changes in core Animation and AnimationEvent classes, QE is disabling them for now and will add them back in as changes are made.
Doc Notes: None
Bugs:
Reviewer: Ely (transform utilities) and Jason (the rest)
tests: checkintests, Mustella tests/Effects, tests/ListDataEffects

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/TransformOffsets.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/CompositeEffect.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/KeyFrame.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/mxml-2009-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/PropertyChanges.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate3D.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/effectClasses</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale3D.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/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateColorInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxRotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxMoveInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/effectClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/AnimationEvent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate3D.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/MotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/AnimationProperty.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove3D.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/spark/src/spark/effects/Move3D.as
+++ frameworks/projects/spark/src/spark/effects/Move3D.as
@@ -0,0 +1,101 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 spark.effects
+{
+import mx.effects.IEffectInstance;
+
+import spark.effects.effectClasses.AnimateTransformInstance;
+
+/**
+ * This class is a utility wrapper around the AnimateTransform effect, exposing the
+ * properties that make sense for someone wishing to merely move a target object
+ * in 3D. An important difference between this TransformMove
+ * effect and the previous Move effect is that the x and y property specifications
+ * for TransformMove specify not absolute values of the x/y point on the target
+ * object, but rather the change in x/y that should occur to the center around
+ * which the overall transform is occuring. So if, for example, the
+ * autoCenterTransform property is set, then the from/to/by values
+ * in this effect will define how much to move the center of the target, not the
+ * (x,y) of the target.
+ *
+ *
Like all AnimateTransform-based effects, this effect will only work on subclasses
+ * of UIComponent and GraphicElement, as these effects depend on specific
+ * transform functions in those classes. Also, all of these effects run one single
+ * effect instance on any given target at a time, which means that they will
+ * share the transform center set by any of the contributing effects.

+ */
+public class AnimateTransformMove3D extends AnimateTransformMove
+{
+    include "../../mx/core/Version.as";
+
+    public function AnimateTransformMove3D(target:Object=null)
+    {
+        super(target);
+        instanceClass = AnimateTransformInstance;
+    }
+
+    //----------------------------------
+    //  zBy
+    //----------------------------------
+
+    [Inspectable(category="General", defaultValue="NaN")]
+
+    /**
+     *  Number of pixels by which to modify the z of the component.
+     *  Values may be negative.
+     */
+    public var zBy:Number;
+
+    //----------------------------------
+    //  zFrom
+    //----------------------------------
+
+    [Inspectable(category="General", defaultValue="NaN")]
+
+    /**
+     *  Initial z.
+     *  If omitted, Flex uses either the value in the start state,
+     *  if the effect is playing in a state transition, or the current
+     *  value in the target.
+     */
+    public var zFrom:Number;
+
+    //----------------------------------
+    //  zTo
+    //----------------------------------
+
+    [Inspectable(category="General", defaultValue="NaN")]
+
+    /**
+     *  Final z
+     *  If omitted, Flex uses either the value in the end state,
+     *  if the effect is playing in a state transition, or the current
+     *  value in the target.
+     */
+    public var zTo:Number;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     * @private
+     */
+   override protected function initInstance(instance:IEffectInstance):void
+    {
+        addMotionPath("translationZ", zFrom, zTo, zBy);
+        super.initInstance(instance);
+    }
+}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 5925
Author:   gruehle@adobe.com
Date:     2009-04-03T23:32:32.942708Z

Log Message:
-----------
A bunch of skin related work items and bug fixes.

Bugs:
SDK-19961 - The ControlBar default contentBackgroundColor in its Spark skin needs to be updated.
SDK-19659 - Indeterminate Halo ProgressBar with Gumbo skin draws over the border
SDK-19823 - Halo HSlider and VSlider with Gumbo skins dont look right when specifying track highlight
SDK-19767 - Halo ColorPicker with Spark skin draws stray lines when setting larger width/height
SDK-19764 - enabled and disabled Halo ColorPicker control with Gumbo skins look inconsistent
SDK-20152 - Spark FxPanel container doesnt look very wireframey
SDK-19591 - If you compile FxButtonBar with the wireframe skin, it does not use Wireframe FxToggleButtons
SDK-20151 - wireframe FxList skin item selection highlight looks inconsistent with Spark skins
SDK-20153 - scrollbar position on wireframe FxTextArea skin is inconsistent with scrollbar position on spark FxTextArea skin
SDK-19955 - Spark FxCheckBox skin includes reference to unused namespace, "geom"

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonBarFirstButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/PanelBorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/WireframeClasses.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/SliderTrackHighlightSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonBarMiddleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/TextAreaSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ProgressIndeterminateSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/defaults.css</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ProgressMaskSkin.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonBarLastButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/SparkSkinsClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ColorPickerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/PanelSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ButtonBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/PanelSkin.mxml</path>

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

--- frameworks/projects/wireframe/src/WireframeClasses.as
+++ frameworks/projects/wireframe/src/WireframeClasses.as
@@ -24,6 +24,10 @@
  */
 internal class WireframeClasses
 {
+	import spark.skins.wireframe.ButtonBarFirstButtonSkin; ButtonBarFirstButtonSkin;
+	import spark.skins.wireframe.ButtonBarLastButtonSkin; ButtonBarLastButtonSkin;
+	import spark.skins.wireframe.ButtonBarMiddleButtonSkin; ButtonBarMiddleButtonSkin;
+	import spark.skins.wireframe.ButtonBarSkin; ButtonBarSkin;
 	import spark.skins.wireframe.ButtonSkin; ButtonSkin;
 	import spark.skins.wireframe.CheckBoxSkin; CheckBoxSkin;
 	import spark.skins.wireframe.DefaultComplexItemRenderer; DefaultComplexItemRenderer;
@@ -36,6 +40,7 @@
 	import spark.skins.wireframe.HSliderTrackSkin; HSliderTrackSkin;
 	import spark.skins.wireframe.ListSkin; ListSkin;
 	import spark.skins.wireframe.NumericStepperSkin; NumericStepperSkin;
+	import spark.skins.wireframe.PanelSkin; PanelSkin;
 	import spark.skins.wireframe.RadioButtonSkin; RadioButtonSkin;
 	import spark.skins.wireframe.ScrollBarDownButtonSkin; ScrollBarDownButtonSkin;
 	import spark.skins.wireframe.ScrollBarLeftButtonSkin; ScrollBarLeftButtonSkin;


Catch errors when loading old SWF files. Fixes #8.

AVM1Movies are old and can't be opened, and now it catches that error and exits out instead of locking.

--- src/swf2png.as
+++ src/swf2png.as
@@ -60,7 +60,14 @@

 		//Event handler called when the swf is loaded. Sets it up and starts the export loop
 		private function startLoop(ev:Event):void {
-			loadedSwf = MovieClip(ev.target.content);
+			try {
+				loadedSwf = MovieClip(ev.target.content);
+			}
+			catch(err:Error) {
+				//AVM1 Movie not supported
+				exit(5);
+				return;
+			}
 			outputWidth = Math.ceil(ev.target.width);
 			outputHeight = Math.ceil(ev.target.height);
 			log("Loaded!");
@@ -276,6 +283,7 @@
 		}

 		private function exit(code:int=0):void {
+			log("Exit: " + code);
 			NativeApplication.nativeApplication.exit(code);
 		}
 	}


added dropdownStyle support

added dropdownStyle support

--- WeaveUI/src/weave/ui/CustomComboBox.as
+++ WeaveUI/src/weave/ui/CustomComboBox.as
@@ -21,7 +21,7 @@
 	import mx.controls.ComboBox;

 	/**
-	 * Added functionality: set selectedLabel()
+	 * Added functionality: set selectedLabel(), dropdownStyle
 	 *
 	 * @author adufilie
 	 */
@@ -31,6 +31,21 @@
 		{
 			minWidth = 0;
 			addEventListener(MouseEvent.MOUSE_DOWN, function(..._):void { setFocus(); });
+		}
+
+		/**
+		 * An object containing dropdown style values.
+		 */
+		public var dropdownStyle:Object = null;
+
+		override public function getStyle(styleProp:String):*
+		{
+			// this style property is retrieved in displayDropDown(), so we can intercept the request here to update the dropdown style.
+			if (styleProp == "openDuration" && dropdown)
+				for (var key:String in dropdownStyle)
+					dropdown.setStyle(key, dropdownStyle[key]);
+
+			return super.getStyle(styleProp);
 		}

 		/**


fix FrustumCulling planes computation and test algorithms

--- src/aerys/minko/type/math/Frustum.as
+++ src/aerys/minko/type/math/Frustum.as
@@ -189,12 +189,8 @@
 		private static const CULLING_SPHERE		: uint				= 0x00000001;
 		private static const CULLING_BOX		: uint				= 0x00000002;

-		private static const SPANNING			: uint				= 0x0000000f;
-
 		private static const TMP_NUMBERS_1		: Vector.<Number>	= new <Number>[];
 		private static const TMP_VECTOR4		: Vector4			= new Vector4();
-
-		private static const THICKNESS			: Number			= 0.0001;

 		private var _points			: Vector.<Vector4>				= null;
 		private var _planes			: Vector.<Plane>				= new <Plane>[
@@ -219,26 +215,6 @@
 			return _points;
 		}

-		/*public function updateFromDescription(fov	: Number,
-											  ratio	: Number,
-											  zNear	: Number,
-											  zFar 	: Number) : void
-		{
-			var	y_scale	: Number	= 1. / Math.tan(fov * .5);
-			var	x_scale	: Number	= y_scale / ratio;
-			var	m33		: Number	= zFar / (zFar - zNear);
-			var	m43		: Number	= -zNear * zFar / (zFar - zNear);
-
-			_planes[RIGHT].set(	-x_scale,	0,			1,			0).normalize();
-			_planes[LEFT].set(	x_scale,	0,			1,			0).normalize();
-			_planes[TOP].set(	0,			-y_scale,	1,			0).normalize();
-			_planes[BOTTOM].set(0,			y_scale,	1,			0).normalize();
-			_planes[NEAR].set(	0,			0,			m33,		-m43).normalize();
-			_planes[FAR].set(	0,			0,			1 - m33,	m43).normalize();
-
-			_points			= null;
-		}*/
-
 		/**
 		 * Update the frustum planes according to the specified project matrix.
 		 *
@@ -247,48 +223,50 @@
 		 */
 		public function updateFromMatrix(matrix : Matrix4x4) : void
 		{
+			matrix = matrix.clone().transpose();
+
 			var data	: Vector.<Number>	= matrix.getRawData(TMP_NUMBERS_1);

+			(_planes[LEFT] as Plane).set(
+				data[12] + data[0],
+				data[13] + data[1],
+				data[14] + data[2],
+				data[15] + data[3]
+			).normalize();
+
+			(_planes[TOP] as Plane).set(
+				data[12] - data[4],
+				data[13] - data[5],
+				data[14] - data[6],
+				data[15] - data[7]
+			).normalize();
+
 			(_planes[RIGHT] as Plane).set(
-				data[3] - data[0],
-				data[7] - data[4],
-				data[11] - data[8],
-				data[12] - data[15]
+				data[12] - data[0],
+				data[13] - data[1],
+				data[14] - data[2],
+				data[15] - data[3]
 			).normalize();
-
-			(_planes[LEFT] as Plane).set(
-				data[3] + data[0],
-				data[7] + data[4],
-				data[11] + data[8],
-				-data[15] - data[12]
+
+			(_planes[BOTTOM] as Plane).set(
+				data[12] + data[4],
+				data[13] + data[5],
+				data[14] + data[6],
+				data[15] + data[7]
 			).normalize();
-
-			(_planes[TOP] as Plane).set(
-				data[3] - data[1],
-				data[7] - data[5],
-				data[11] - data[9],
-				-data[13] - data[15]
+
+			(_planes[NEAR] as Plane).set(
+				data[8],
+				data[9],
+				data[10],
+				data[11]
 			).normalize();
-
-			(_planes[BOTTOM] as Plane).set(
-				data[3] + data[1],
-				data[7] + data[5],
-				data[11] + data[9],
-				-data[15] - data[13]
-			).normalize();
-
-			(_planes[NEAR] as Plane).set(
-				data[2],
-				data[6],
-				data[10],
-				-data[14]
-			).normalize();
-
+
 			(_planes[FAR] as Plane).set(
-				data[3] - data[2],
-				data[7] - data[6],
-				data[11] - data[10],
-				data[14] - data[15]
+				data[12] - data[8],
+				data[13] - data[9],
+				data[14] - data[10],
+				data[15] - data[11]
 			).normalize();

 			_points	= null;
@@ -309,7 +287,7 @@
 								   firstPlane	: uint		= 0) : uint
 		{
 			var result	: uint 		= 0;
-			var p 		: Plane	= null;
+			var p 		: Plane		= null;
 			var d		: Number	= 0.;

 			if (transform)
@@ -349,7 +327,6 @@
 			var radius	: Number	= sphere.radius;
 			var result	: int		= 0;
 			var p 		: Plane		= null;
-			var d 		: Number	= 0.;

 			if (!culling)
 				return INSIDE;
@@ -374,13 +351,12 @@
 			{
 				var planeIndex : uint = (i + firstPlane) % 6;

-				if (((CULLING_BOX << (planeIndex << 2)) & culling) == 0)
+				if (((CULLING_SPHERE << (planeIndex << 2)) & culling) == 0)
 					continue ;

 				p = _planes[planeIndex];
-				d = p._a * cx + p._b * cy + p._c * cz - p._d;
-
-				if (d + radius < 0.)
+
+				if (p._a * cx + p._b * cy + p._c * cz + p._d + radius < 0.)
 					return planeIndex;
 			}

@@ -402,7 +378,6 @@
 										firstPlane	: uint			= 0) : int
 		{
 			var result		: uint				= 0;
-			var count		: int				= 0;
 			var vertices	: Vector.<Number>	= box._vertices;
 			var p			: Plane				= null;

@@ -457,16 +432,14 @@
 				var pd	: Number	= p.d;

 				// test each vertex
-				count = (pa * x1 + pb * y1 + pc * z1 - pd > THICKNESS ? 1 : -1)
-					+ (pa * x2 + pb * y2 + pc * z2 - pd > THICKNESS ? 1 : -1)
-					+ (pa * x3 + pb * y3 + pc * z3 - pd > THICKNESS ? 1 : -1)
-					+ (pa * x4 + pb * y4 + pc * z4 - pd > THICKNESS ? 1 : -1)
-					+ (pa * x5 + pb * y5 + pc * z5 - pd > THICKNESS ? 1 : -1)
-					+ (pa * x6 + pb * y6 + pc * z6 - pd > THICKNESS ? 1 : -1)
-					+ (pa * x7 + pb * y7 + pc * z7 - pd > THICKNESS ? 1 : -1)
-				    + (pa * x8 + pb * y8 + pc * z8 - pd > THICKNESS ? 1 : -1);
-
-				if (count == -8)
+				if (pa * x1 + pb * y1 + pc * z1 + pd < 0.
+					&& pa * x2 + pb * y2 + pc * z2 + pd < 0.
+					&& pa * x3 + pb * y3 + pc * z3 + pd < 0.
+					&& pa * x4 + pb * y4 + pc * z4 + pd < 0.
+					&& pa * x5 + pb * y5 + pc * z5 + pd < 0.
+					&& pa * x6 + pb * y6 + pc * z6 + pd < 0.
+					&& pa * x7 + pb * y7 + pc * z7 + pd < 0.
+					&& pa * x8 + pb * y8 + pc * z8 + pd < 0.)
 					return planeIndex;
 			}

@@ -516,7 +489,6 @@
 			var radius		: Number			= boundingSphere.radius;
 			var result		: int				= 0;
 			var vertices	: Vector.<Number>	= boundingBox._vertices;
-			var count		: int				= 0;

 			if ((cullingMask & FrustumCulling.BOX) != 0 && transform != null)
 			{
@@ -568,13 +540,13 @@
 			for (var i : int = 0; i < 6; i++)
 			{
 				var planeIndex	: uint		= (i + firstPlane) % 6;
-				var p 			: Plane		= _planes[i];
+				var p 			: Plane		= _planes[planeIndex];
 				var d 			: Number	= 0;

 				// bounding sphere
-				if (((CULLING_SPHERE << (i << 2)) & cullingMask))
+				if (((CULLING_SPHERE << (planeIndex << 2)) & cullingMask))
 				{
-					d = p._a * cx + p._b * cy + p._c * cz - p._d;
+					d = p._a * cx + p._b * cy + p._c * cz + p._d;

 					if (d + radius < .0)
 						return planeIndex;
@@ -583,7 +555,7 @@
 				}

 				// bounding box
-				if ((CULLING_BOX << (i << 2)) & cullingMask)
+				if ((CULLING_BOX << (planeIndex << 2)) & cullingMask)
 				{
 					var pa	: Number	= p.a;
 					var pb	: Number	= p.b;
@@ -591,16 +563,14 @@
 					var pd	: Number	= p.d;

 					// test vertices
-					count = (pa * x1 + pb * y1 + pc * z1 - pd > THICKNESS ? 1 : -1)
-						+ (pa * x2 + pb * y2 + pc * z2 - pd > THICKNESS ? 1 : -1)
-						+ (pa * x3 + pb * y3 + pc * z3 - pd > THICKNESS ? 1 : -1)
-						+ (pa * x4 + pb * y4 + pc * z4 - pd > THICKNESS ? 1 : -1)
-						+ (pa * x5 + pb * y5 + pc * z5 - pd > THICKNESS ? 1 : -1)
-						+ (pa * x6 + pb * y6 + pc * z6 - pd > THICKNESS ? 1 : -1)
-						+ (pa * x7 + pb * y7 + pc * z7 - pd > THICKNESS ? 1 : -1)
-						+ (pa * x8 + pb * y8 + pc * z8 - pd > THICKNESS ? 1 : -1);
-
-					if (count == -8)
+					if (pa * x1 + pb * y1 + pc * z1 + pd < 0.
+						&& pa * x2 + pb * y2 + pc * z2 + pd < 0.
+						&& pa * x3 + pb * y3 + pc * z3 + pd < 0.
+						&& pa * x4 + pb * y4 + pc * z4 + pd < 0.
+						&& pa * x5 + pb * y5 + pc * z5 + pd < 0.
+						&& pa * x6 + pb * y6 + pc * z6 + pd < 0.
+						&& pa * x7 + pb * y7 + pc * z7 + pd < 0.
+						&& pa * x8 + pb * y8 + pc * z8 + pd < 0.)
 						return planeIndex;
 				}
 			}


Added renderTarget to Entity to specify an alternate BitmapData buffer to draw to. Added halfWidth, halfHeight, centerX, and centerY properties. Added addGraphic(), setHitboxTo(), and setOrigin() functions. Added moveBy() and moveTo() functions for movement & collision sweeping (good for fast moving objects).

--- net/flashpunk/Entity.as
+++ net/flashpunk/Entity.as
@@ -1,6 +1,8 @@
 package net.flashpunk
 {
+	import flash.display.BitmapData;
 	import flash.geom.Point;
+	import flash.geom.Rectangle;
 	import flash.utils.getQualifiedClassName;
 	import flash.utils.getDefinitionByName;
 	import net.flashpunk.masks.*;
@@ -52,6 +54,21 @@
 		public var originY:int;

 		/**
+		 * Optional callback for horizontal collision using moveTo() or moveBy().
+		 */
+		public var callbackX:Function;
+
+		/**
+		 * Optional callback for vertical collision using moveTo() or moveBy().
+		 */
+		public var callbackY:Function;
+
+		/**
+		 * The BitmapData target to draw the Entity to. Leave as null to render to the current screen buffer (default).
+		 */
+		public var renderTarget:BitmapData;
+
+		/**
 		 * Constructor. Can be usd to place the Entity and assign a graphic and mask.
 		 * @param	x			X position to place the Entity.
 		 * @param	y			Y position to place the Entity.
@@ -85,9 +102,7 @@
 		}

 		/**
-		 * Updates the Entity's graphic. If you override this for
-		 * update logic, remember to call super.update() if you're
-		 * using a Graphic type that animates (eg. Spritemap).
+		 * Updates the Entity.
 		 */
 		override public function update():void
 		{
@@ -110,7 +125,7 @@
 				else _point.x = _point.y = 0;
 				_camera.x = FP.camera.x;
 				_camera.y = FP.camera.y;
-				_graphic.render(_point, _camera);
+				_graphic.render(renderTarget ? renderTarget : FP.buffer, _point, _camera);
 			}
 		}

@@ -123,7 +138,7 @@
 		 */
 		public function collide(type:String, x:Number, y:Number):Entity
 		{
-			var e:Entity = FP._world._typeFirst[type];
+			var e:Entity = _world._typeFirst[type];
 			if (!collidable || !e) return null;

 			_x = this.x; _y = this.y;
@@ -300,7 +315,7 @@
 		 */
 		public function collideInto(type:String, x:Number, y:Number, array:Object):void
 		{
-			var e:Entity = FP._world._typeFirst[type];
+			var e:Entity = _world._typeFirst[type];
 			if (!collidable || !e) return;

 			_x = this.x; _y = this.y;
@@ -371,6 +386,26 @@
 		}

 		/**
+		 * Half the Entity's width.
+		 */
+		public function get halfWidth():Number { return width / 2; }
+
+		/**
+		 * Half the Entity's height.
+		 */
+		public function get halfHeight():Number { return height / 2; }
+
+		/**
+		 * The center x position of the Entity's hitbox.
+		 */
+		public function get centerX():Number { return x - originX + width / 2; }
+
+		/**
+		 * The center y position of the Entity's hitbox.
+		 */
+		public function get centerY():Number { return y - originY + height / 2; }
+
+		/**
 		 * The rendering layer of this Entity. Higher layers are rendered first.
 		 */
 		public function get layer():int { return _layer; }
@@ -426,6 +461,22 @@
 			if (_graphic == value) return;
 			_graphic = value;
 			if (value && value._assign != null) value._assign();
+		}
+
+		/**
+		 * Adds the graphic to the Entity via a Graphiclist.
+		 * @param	g		Graphic to add.
+		 */
+		public function addGraphic(g:Graphic):Graphic
+		{
+			if (graphic is Graphiclist) (graphic as Graphiclist).add(g);
+			else
+			{
+				var list:Graphiclist = new Graphiclist;
+				if (graphic) list.add(graphic);
+				graphic = list;
+			}
+			return g;
 		}

 		/**
@@ -441,6 +492,35 @@
 			this.height = height;
 			this.originX = originX;
 			this.originY = originY;
+		}
+
+		/**
+		 * Sets the Entity's hitbox to match that of the provided object.
+		 * @param	o		The object defining the hitbox (eg. an Image or Rectangle).
+		 */
+		public function setHitboxTo(o:Object):void
+		{
+			if (o is Image || o is Rectangle) setHitbox(o.width, o.height, -o.x, -o.y);
+			else
+			{
+				if (o.hasOwnProperty("width")) width = o.width;
+				if (o.hasOwnProperty("height")) height = o.height;
+				if (o.hasOwnProperty("originX") && !(o is Graphic)) originX = o.originX;
+				else if (o.hasOwnProperty("x")) originX = -o.x;
+				if (o.hasOwnProperty("originY") && !(o is Graphic)) originX = o.originY;
+				else if (o.hasOwnProperty("y")) originX = -o.y;
+			}
+		}
+
+		/**
+		 * Sets the origin of the Entity.
+		 * @param	x		X origin.
+		 * @param	y		Y origin.
+		 */
+		public function setOrigin(x:int = 0, y:int = 0):void
+		{
+			originX = x;
+			originY = y;
 		}

 		/**
@@ -498,6 +578,86 @@
 		{
 			var s:String = String(_class);
 			return s.substring(7, s.length - 1);
+		}
+
+		/**
+		 * Moves the Entity by the amount, retaining integer values for its x and y.
+		 * @param	x			Horizontal offset.
+		 * @param	y			Vertical offset.
+		 * @param	solidType	An optional collision type to stop flush against upon collision.
+		 * @param	sweep		If sweeping should be used (prevents fast-moving objects from going through solidType).
+		 */
+		public function moveBy(x:Number, y:Number, solidType:String = null, sweep:Boolean = false):void
+		{
+			_moveX += x;
+			_moveY += y;
+			x = Math.round(_moveX);
+			y = Math.round(_moveY);
+			_moveX -= x;
+			_moveY -= y;
+			if (solidType)
+			{
+				var sign:int, e:Entity;
+				if (x != 0)
+				{
+					if (sweep || collide(solidType, this.x + x, this.y))
+					{
+						sign = x > 0 ? 1 : -1;
+						while (x != 0)
+						{
+							if (collide(solidType, this.x + sign, this.y))
+							{
+								if (callbackX != null) callbackX();
+								break;
+							}
+							else
+							{
+								this.x += sign;
+								x -= sign;
+							}
+						}
+					}
+					else this.x += x;
+				}
+				if (y != 0)
+				{
+					if (sweep || collide(solidType, this.x, this.y + y))
+					{
+						sign = y > 0 ? 1 : -1;
+						while (y != 0)
+						{
+							if (collide(solidType, this.x, this.y + sign))
+							{
+								if (callbackY != null) callbackY();
+								break;
+							}
+							else
+							{
+								this.y += sign;
+								y -= sign;
+							}
+						}
+					}
+					else this.y += y;
+				}
+			}
+			else
+			{
+				this.x += x;
+				this.y += y;
+			}
+		}
+
+		/**
+		 * Moves the Entity to the position, retaining integer values for its x and y.
+		 * @param	x			X position.
+		 * @param	y			Y position.
+		 * @param	solidType	An optional collision type to stop flush against upon collision.
+		 * @param	sweep		If sweeping should be used (prevents fast-moving objects from going through solidType).
+		 */
+		public function moveTo(x:Number, y:Number, solidType:String = null, sweep:Boolean = false):void
+		{
+			moveBy(x - this.x, y - this.y, solidType, sweep);
 		}

 		// Entity information.
@@ -519,6 +679,8 @@
 		/** @private */ private var _mask:Mask;
 		/** @private */ private var _x:Number;
 		/** @private */ private var _y:Number;
+		/** @private */ private var _moveX:Number = 0;
+		/** @private */ private var _moveY:Number = 0;

 		// Rendering information.
 		/** @private */ internal var _graphic:Graphic;


adding string casting that was lost during cross-compiling

--- WeaveJS/src/weavejs/data/CSVParser.as
+++ WeaveJS/src/weavejs/data/CSVParser.as
@@ -255,6 +255,7 @@
 		 */
 		public function parseCSVToken(token:String):String
 		{
+			token = String(token);
 			var parsedToken:String = '';

 			var tokenLength:int = token.length;
@@ -294,6 +295,7 @@
 		 */
 		public function createCSVToken(str:String):String
 		{
+			str = String(str);
 			if (str == null)
 				str = '';


Make Streamer.registerStreamer public, and add a warning if an existing Streamer is replaced.

(In Who, we need to stream com.threerings.geom.Vector2, so we need a custom Streamer for it)

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

--- src/main/as/com/threerings/io/Streamer.as
+++ src/main/as/com/threerings/io/Streamer.as
@@ -21,13 +21,6 @@

 package com.threerings.io {

-import flash.utils.ByteArray;
-import flash.utils.Dictionary;
-
-import com.threerings.util.ByteEnum;
-import com.threerings.util.ClassUtil;
-import com.threerings.util.Enum;
-
 import com.threerings.io.streamers.ArrayStreamer;
 import com.threerings.io.streamers.ByteArrayStreamer;
 import com.threerings.io.streamers.ByteEnumStreamer;
@@ -36,9 +29,30 @@
 import com.threerings.io.streamers.NumberStreamer;
 import com.threerings.io.streamers.SetStreamer;
 import com.threerings.io.streamers.StringStreamer;
+import com.threerings.util.ByteEnum;
+import com.threerings.util.ClassUtil;
+import com.threerings.util.Enum;
+import com.threerings.util.Log;
+
+import flash.utils.ByteArray;
+import flash.utils.Dictionary;

 public class Streamer
 {
+    public static function registerStreamer (st :Streamer, ... extraJavaNames) :void
+    {
+        initStreamers();
+
+        extraJavaNames.unshift(st.getJavaClassName());
+        for each (var name :String in extraJavaNames) {
+            if (name in _byJName) {
+                log.warning("Existing Streamer replaced", "name", name,
+                    "cur", _byJName[name], "replacement", st);
+            }
+            _byJName[name] = st;
+        }
+    }
+
     public static function getStreamer (obj :Object) :Streamer
     {
         var jname :String;
@@ -128,14 +142,6 @@
         return "[Streamer(" + _jname + ")]";
     }

-    protected static function registerStreamer (st :Streamer, ... extraJavaNames) :void
-    {
-        _byJName[st.getJavaClassName()] = st;
-        for each (var name :String in extraJavaNames) {
-            _byJName[name] = st;
-        }
-    }
-
     /**
      * Initialize our streamers. This cannot simply be done statically
      * because we cannot instantiate a subclass when this class is still
@@ -147,6 +153,7 @@
             return;
         }
         _byJName = new Dictionary();
+
         for each (var c :Class in [ StringStreamer, NumberStreamer, ByteArrayStreamer ]) {
             registerStreamer(Streamer(new c()));
         }
@@ -161,5 +168,7 @@
     protected var _jname :String;

     protected static var _byJName :Dictionary;
+
+    protected static const log :Log = Log.getLog(Streamer);
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 1968
Author:   jimurphy@adobe.com
Date:     2008-06-05T15:31:56.961691Z

Log Message:
-----------
Merge 3.0.x revisions [1940,1954] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemHistoryButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemTree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/mac/AIR Integration Kit.tbz2</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumeration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/AIREvent.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FileEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/StatusBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/win/AIR Integration Kit.zip</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/ApplicationTitleBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeMenuEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMinimizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowRestoreButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/StatusBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/IWindow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemSizeDisplayMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeWindowBoundsEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/TitleBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowCloseButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as</path>

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

--- frameworks/projects/airframework/src/mx/core/windowClasses/TitleBar.as
+++ frameworks/projects/airframework/src/mx/core/windowClasses/TitleBar.as
@@ -42,7 +42,7 @@
  *  @see mx.core.Window
  *  @see mx.core.WindowedApplication
  *
- *  @productversion Apollo 1.0
+ *  @playerversion AIR 1.1
  */
 public class TitleBar extends UIComponent
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 18884
Author:   jasonsj@adobe.com
Date:     2010-12-01T01:01:18.896589Z

Log Message:
-----------
Use authorDensity in Mobile theme

QE notes: By default, 240 devices should still report as 240. Mustella known goods should not be affected.
Doc notes:
Bugs:
Reviewer: egeorgie
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderDataTip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as
@@ -14,7 +14,8 @@
 import flash.display.DisplayObject;
 import flash.display.Graphics;

-import spark.skins.mobile.supportClasses.MobileSkin;
+import mx.core.DeviceDensity;
+
 import spark.skins.mobile.supportClasses.SelectableButtonSkinBase;
 import spark.skins.mobile160.assets.CheckBox_down;
 import spark.skins.mobile160.assets.CheckBox_symbol;
@@ -53,9 +54,9 @@

         useChromeColor = true;

-        switch (targetDensity)
+        switch (authorDensity)
         {
-            case MobileSkin.PPI240:
+            case DeviceDensity.PPI_240:
             {
                 upIconClass = spark.skins.mobile240.assets.CheckBox_up;
                 upSelectedIconClass = spark.skins.mobile240.assets.CheckBox_up;


Transferred from the Adobe Open Source Subversion Repository

Revision: 18405
Author:   jasonsj@adobe.com
Date:     2010-11-02T13:43:03.191320Z

Log Message:
-----------
Added multiline and wordWrap to mobile TextArea skin. Mistakenly removed in 18385.

QE notes:
Doc notes:
Bugs:
SDK-28397 TextArea no longer wraps text
Reviewer:
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as
@@ -60,6 +60,8 @@
     {
         super.createChildren();

+        textDisplay.multiline = true;
+        textDisplay.wordWrap = true;
         textDisplay.addEventListener(Event.CHANGE, textDisplay_changeHandler);
         textDisplay.addEventListener(FlexEvent.VALUE_COMMIT, textDisplay_changeHandler);
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 19942
Author:   rfrishbe@adobe.com
Date:     2011-01-25T22:49:40.674586Z

Log Message:
-----------
Cleaning up some FIXMEs assigned to me in various locations.

Also exposing some private variables as mx_internal: messageText, labelText, and oldUnscaledWidth.

QE notes: -
Doc notes:
Bugs: SDK-29226
Reviewer: Eric
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ListSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as
@@ -142,7 +142,7 @@
      *
      *  In the constructor this is actually set based on the DPI.
      */
-    private var oldUnscaledWidth:Number;
+    mx_internal var oldUnscaledWidth:Number;

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 4486
Author:   chaase@adobe.com
Date:     2009-01-12T18:41:56.497953Z

Log Message:
-----------
Bitmap/shader transition feature, along with FxWipe and FxCrossFade, the two concrete effects based on this new shader-based transition infrastructure.

QE Notes: None
Doc Notes: None
Bugs:
Reviewer: Corey
Tests: checkintests, Mustella: Effects, gumbo/effects, ListDataEffects

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxCrossFade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxWipe.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxWipe.pbk</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateShaderTransitionInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimateShaderTransition.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxCrossFade.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxCrossFade.pbk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxWipeInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxWipe.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/WipeDirection.as</path>

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

--- frameworks/projects/spark/src/spark/effects/AnimateTransitionShader.as
+++ frameworks/projects/spark/src/spark/effects/AnimateTransitionShader.as
@@ -0,0 +1,190 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2008 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+package mx.effects
+{
+import flash.display.Bitmap;
+import flash.display.BitmapData;
+import flash.display.IBitmapDrawable;
+import flash.display.Shader;
+import flash.display.ShaderData;
+import flash.display.ShaderInput;
+import flash.display.Sprite;
+import flash.geom.Matrix;
+import flash.geom.Rectangle;
+import flash.utils.ByteArray;
+
+import mx.effects.effectClasses.FxAnimateShaderTransitionInstance;
+import mx.utils.ObjectUtil;
+
+/**
+ * This effect animates a transition between two bitmaps,
+ * one representing the start state (bitmapFrom), and
+ * the other representing the end state (bitmapTo).
+ *
+ *
The animation is performed by running a Pixel Bender shader,
+ * supplied by the shader property,
+ * using the two bitmaps as input. If either bitmap is
+ * not supplied, that value will be determined dynamically from
+ * either the appropriate state of the target in a transition or,
+ * if the effect is not running in a transition, from the
+ * target directly. If
+ * the effect is run in a transition and the target object either
+ * goes away or comes into existence during that state change,
+ * then a fully-transparent bitmap will be used to represent
+ * that object when it does not exist.

+ */
+public class FxAnimateShaderTransition extends FxAnimate
+{
+
+    public function FxAnimateShaderTransition(target:Object=null)
+    {
+        super(target);
+
+        instanceClass = FxAnimateShaderTransitionInstance;
+    }
+
+    /**
+     * The bitmap data representing the start state of this effect.
+     * If this property is not set, it will be calculated automatically
+     * when the effect is played by grabbing a snapshot of the target
+     * object, or by using a transparent bitmap if the object does not
+     * exist in the start state of a transition.
+     */
+    public var bitmapFrom:BitmapData;
+
+    /**
+     * The bitmap data representing the end state of this effect.
+     * If this property is not set, it will be calculated automatically
+     * when the effect is played by grabbing a snapshot of the target
+     * object, or by using a transparent bitmap if the object does not
+     * exist in the end state of a transition.
+     */
+    public var bitmapTo:BitmapData;
+
+    /**
+     * The bytecode that a Shader object will use
+     * for running the transition between the two bitmaps. This
+     * property can be represented as either a ByteArray or as a
+     * Class representing a ByteArray (which is what results
+     * when you embed a resource).
+     *
+     *
The shader can have arbitrary functionality and inputs, but
+     * must, at a minimum, have three image4 inputs.
+     * The first input, which can be named anything, should go
+     * unused by your shader code - it exists only to satisfy the
+     * Flash requirement of assigning a filtered object to the
+     * first input. Note that inputs that go completely unused in a
+     * shader kernel may be optimized out, so your kernel code should
+     * at least reference this input to keep it around.

+     *
+     *
There must be at least two other inputs
+     * named from and to and one
+     * float parameter named progress, where
+     * from/to are the before/after bitmaps, respectively,
+     * and progress is the elapsed fraction of
+     * the effect.

+     *
+     *
Also, there are two optional parameters, width
+     * and height, which if they exist in the shader
+     * will be automatically set to the width and height for the
+     * effect instance target.

+     *
+     *
See the Pixel Bender Toolkit documentation for more
+     * information on writing shaders for Flash.

+     *
+     * @example To play an effect that uses a fictional Pixel Bender pbj
+     * file MyShader.pbj, which takes a single direction
+     * parameter, the calling code could do this:
+     * @example <listing version="3.0">
+     *   [Embed(source="MyShader.pbj", mimeType="application/octet-stream")]
+     *   private var ShaderCodeClass:Class;
+     *   var shaderEffect = new FxAnimateShaderTransition();
+     *   shaderEffect.shaderCode = ShaderCodeClass;
+     *   shaderEffect.shaderProperties = {direction : 1};</listing>
+     * or in MXML code, this:<listing version="3.0">
+     *   <FxAnimateShaderTransition
+     *       shaderCode="@Embed(source="MyShader.pbj", mimeType="application/octet-stream")"
+     *       shaderProperties="{{direction : 1}}}"/>
+     * </listing>
+     *
+     * @see flash.display.Shader
+     */
+    public var shaderCode:Object;
+
+    /**
+     * A map of parameter name/value pairs that the shader
+     * will set its data values to prior to playing. For example,
+     * to set a parameter named direction in a
+     * shader with a Pixel Bender pbj file in Wipe.pbj, the calling
+     * code could do this:
+     * @example <listing version="3.0">
+     *   [Embed(source="Wipe.pbj", mimeType="application/octet-stream")]
+     *   private var WipeCodeClass:Class;
+     *   var shaderEffect = new FxAnimateShaderTransition();
+     *   shaderEffect.shaderCode = WipeCodeClass;
+     *   shaderEffect.shaderProperties = {direction : 1};</listing>
+     */
+    public var shaderProperties:Object;
+
+    /**
+     *  @private
+     */
+    override public function getAffectedProperties():Array /* of String */
+    {
+        // We track visible and parent so that we can automatically
+        // perform transitions from/to states where the target either
+        // does not exist or is not visible
+        return ["bitmap", "visible", "parent"];
+    }
+
+    override protected function getValueFromTarget(target:Object, property:String):*
+    {
+        if (property != "bitmap")
+            return super.getValueFromTarget(target, property);
+
+        // Return a null bitmap for non-visible targets
+        if (!target.visible || !target.parent)
+            return null;
+
+        var bounds:Rectangle = target.getBounds(target);
+        var bmData:BitmapData = new BitmapData(bounds.width, bounds.height, true, 0);
+        var m:Matrix = new Matrix();
+        m.translate(-bounds.x, -bounds.y);
+        bmData.draw(IBitmapDrawable(target), m);
+
+        return bmData;
+    }
+
+    /**
+     *  @private
+     */
+    override protected function initInstance(instance:IEffectInstance):void
+    {
+        super.initInstance(instance);
+
+        var animateShaderTransitionInstance:FxAnimateShaderTransitionInstance =
+            FxAnimateShaderTransitionInstance(instance);
+
+        animateShaderTransitionInstance.bitmapFrom = bitmapFrom;
+        animateShaderTransitionInstance.bitmapTo = bitmapTo;
+
+        // Iterate through the data properties of the original shader, copying
+        // each parameter to shaderCopy. Skip the 'input' parameters, as these
+        // will be set by the animation and we do not want a reference to the
+        // same common objects.
+        animateShaderTransitionInstance.shaderCode =
+            (shaderCode is ByteArray) ?
+            ByteArray(shaderCode) :
+            new shaderCode();
+        animateShaderTransitionInstance.shaderProperties = shaderProperties;
+    }
+}
+}


Address issue where failing to flush could result in inaccurate best effort results.

--- HLSPlugin/src/com/kaltura/hls/m2ts/M2TSFileHandler.as
+++ HLSPlugin/src/com/kaltura/hls/m2ts/M2TSFileHandler.as
@@ -87,6 +87,13 @@

 		public override function beginProcessFile(seek:Boolean, seekTime:Number):void
 		{
+			if(isBestEffort)
+			{
+				trace("Doing extra flush for best effort file handler");
+				_parser.flush();
+				_parser.clear();
+			}
+
 			// Decryption reset
 			if ( key )
 			{


Add escapeText to TextController. This should handle client-side text escaping.

--- Arguments/src/Controller/TextController.as
+++ Arguments/src/Controller/TextController.as
@@ -23,6 +23,15 @@
 		public function updateModelText(dta:DynamicTextArea):void{
 			dta.model.text = dta.text;
 		}
+		public function escapeText(s:String):String{
+			s.replace(/&/g, "&amp");
+			s.replace(/\"/g, "&quot");
+			//s.replace(/'/g, "'"); //This does not appear to be necessary
+			s.replace(/</g, "<");
+			s.replace(/>/g, ">");
+			s.replace(/&/, "%26");
+			return s;
+		}
 	}
 }


Fix bug when using uints in style to represent RGBA color

--- src/aerys/minko/render/shader/DynamicShader.as
+++ src/aerys/minko/render/shader/DynamicShader.as
@@ -1,6 +1,7 @@
 package aerys.minko.render.shader
 {
 	import aerys.minko.ns.minko;
+	import aerys.minko.render.renderer.state.RenderState;
 	import aerys.minko.render.ressource.TextureRessource;
 	import aerys.minko.render.shader.compiler.DebugCompiler;
 	import aerys.minko.render.shader.compiler.allocator.ParameterAllocation;
@@ -9,10 +10,8 @@
 	import aerys.minko.render.shader.node.leaf.StyleParameter;
 	import aerys.minko.render.shader.node.leaf.TransformParameter;
 	import aerys.minko.render.shader.node.leaf.WorldParameter;
-	import aerys.minko.render.renderer.state.RenderState;
 	import aerys.minko.scene.visitor.data.LocalData;
 	import aerys.minko.scene.visitor.data.StyleStack;
-	import aerys.minko.scene.visitor.data.LocalData;
 	import aerys.minko.type.math.Matrix4x4;
 	import aerys.minko.type.math.Vector4;
 	import aerys.minko.type.vertex.format.VertexComponent;
@@ -171,7 +170,7 @@
 			var offset	: uint	= paramAlloc._offset;
 			var size	: uint	= paramAlloc._parameter._size;

-			if (data is int || data is uint)
+			if (data is int)
 			{
 				var intData : int = data as int;

@@ -192,12 +191,41 @@
 				}
 				else if (size == 4)
 				{
+
 					constData[offset] = ((intData & 0xFF000000) >>> 24) / 255.;
 					constData[int(offset + 1)] = ((intData & 0x00FF0000) >>> 16) / 255.;
 					constData[int(offset + 2)] = ((intData & 0x0000FF00) >>> 8) / 255.;
 					constData[int(offset + 3)] = ((intData & 0x000000FF)) / 255.;
 				}
 			}
+			else if (data is uint)
+			{
+				var uintData : uint = data as uint;
+
+				if (size == 1)
+				{
+					constData[offset] = uintData;
+				}
+				else if (size == 2)
+				{
+					constData[offset] = ((uintData & 0xFFFF0000) >>> 16) / Number(0xffff);
+					constData[int(offset + 2)] = (uintData & 0x0000FFFF) / Number(0xffff);
+				}
+				else if (size == 3)
+				{
+					constData[offset] = ((uintData & 0xFF0000) >>> 16) / 255.;
+					constData[int(offset + 1)] = ((uintData & 0x00FF00) >>> 8) / 255.;
+					constData[int(offset + 2)] = (uintData & 0x0000FF) / 255.;
+				}
+				else if (size == 4)
+				{
+
+					constData[offset] = ((uintData & 0xFF000000) >>> 24) / 255.;
+					constData[int(offset + 1)] = ((uintData & 0x00FF0000) >>> 16) / 255.;
+					constData[int(offset + 2)] = ((uintData & 0x0000FF00) >>> 8) / 255.;
+					constData[int(offset + 3)] = ((uintData & 0x000000FF)) / 255.;
+				}
+			}
 			else if (data is Number)
 			{
 				if (size != 1)


Change constructor of SkinnedMesh to allow skinning keyframedmesh

--- src/aerys/minko/scene/node/mesh/SkinnedMesh.as
+++ src/aerys/minko/scene/node/mesh/SkinnedMesh.as
@@ -44,7 +44,7 @@
 		public function get jointNames()			: Vector.<String>		{ return _jointNames; }
 		public function get inverseBindMatrices()	: Vector.<Matrix3D>	{ return _inverseBindMatrices; }

-		public function SkinnedMesh(mesh				: Mesh,
+		public function SkinnedMesh(mesh				: IMesh,
 									skeletonReference	: IGroup,
 									skeletonRootName	: String,
 									bindShapeMatrix		: Matrix3D,


Change 20090121-hqm-6 by hqm@badtzmaru.home on 2009-01-21 20:41:04 EST
    in /Users/hqm/openlaszlo/trunk3
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary:  (LPP-7658) when mouse over edittext, cursor still an arrow

New Features:

Bugs Fixed: LPP-7658

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

Documentation:

Release Notes:

Details:

+ We don't want to be using the "autosize" flag on a textfield whose
height is supposed to be fixed.

Tests:

+ test case from bug report in swf9
+ calendar in swf9
+ amazon in swf9

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

--- WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.as
@@ -166,12 +166,6 @@
             this.fontstyle = args.fontstyle;
             textclip.background = false;

-            // multiline text fields are left justified
-            if (args.multiline) {
-                textclip.autoSize = TextFieldAutoSize.LEFT;
-            }
-
-
             // To compute our width:
             // + if text is multiline:
             //    if no width is supplied, use parent width
@@ -192,6 +186,9 @@
             // using LzNode args directly
             if (! this.owner.hassetheight) {
                 this.sizeToHeight = true;
+                if (args.multiline) {
+                    textclip.autoSize = TextFieldAutoSize.LEFT;
+                }
             } else if (args['height'] != null) {
                 // Does setting height of the text object do the right thing in swf9?
                 textclip.height = args.height;


fixed bug where null keyType was becoming "null"

--- WeaveJS/src/weavejs/data/key/QKeyManager.as
+++ WeaveJS/src/weavejs/data/key/QKeyManager.as
@@ -114,7 +114,7 @@
 		 */
 		public function getQKeys_range(keyType:String, keyStrings:Array, iStart:uint, iEnd:uint, output:*):void
 		{
-			keyType = String(keyType);
+			keyType = keyType == null ? null : String(keyType);

 			// get mapping of key strings to QKey weak references
 			var map_localName_qkey:Object = map_keyType_localName_qkey.map.get(keyType);


Reworked time buttons

Reworked time buttons

--- src/Displays/DTime.as
+++ src/Displays/DTime.as
@@ -71,6 +71,7 @@
 				startPlaying();
 				derock = 0;
 			}, "Play at 10x speed", new Key("N"));
+			fastButton.X -= fastButton.fullWidth;
 			add(fastButton);

 			pauseButton = new GraphicButton(playButton.X, playButton.Y, _pause_sprite, function pause():void {
@@ -79,7 +80,6 @@
 				playing = 0;
 				derock = 0;
 			}, "Pause", new Key("SPACE"));
-			pauseButton.X -= playButton.fullWidth;
 			pauseButton.exists = false;
 			add(pauseButton);

@@ -103,7 +103,7 @@
 			add(rewindButton);
 			rewindButton.exists = false;

-			rFastButton = new GraphicButton(rewindButton.X, rewindButton.Y, _reverse_fast_sprite, function reverseFast():void {
+			rFastButton = new GraphicButton(rewindButton.X + rewindButton.fullWidth, rewindButton.Y, _reverse_fast_sprite, function reverseFast():void {
 				if (!derock) return;

 				ticksPerSec = 20;
@@ -122,13 +122,17 @@
 			stopButton.setExists(U.state.time.moment > 0);
 			backstepButton.setExists(U.state.time.moment > 0);

-			playButton.setExists((playing != 1) != (ticksPerSec != 2));
+
+			playButton.setExists(playing != 1);
+			playButton.X = stepButton.X - playButton.fullWidth * (playing == 1 ? 2 : 1);
 			fastButton.setExists(!playButton.exists);

-			rewindButton.setExists(((playing != -1) != (ticksPerSec != 2)) && U.state.time.moment > 0);
+			rewindButton.setExists(playing != -1 && U.state.time.moment > 0);
+			rewindButton.X = backstepButton.X + backstepButton.fullWidth + (playing == -1 ? rewindButton.fullWidth : 0);
 			rFastButton.setExists(!rewindButton.exists && U.state.time.moment > 0);

 			pauseButton.setExists(playing != 0);
+			pauseButton.X = playing == 1 ? playButton.X + playButton.fullWidth : rewindButton.X - pauseButton.fullWidth;

 			derock++;
 		}


Made puts method of printer public.

Made puts method of printer public.

--- src/as3spec/Printer.as
+++ src/as3spec/Printer.as
@@ -114,7 +114,7 @@
 		  }
 		}

-		private function puts(s : String) : void {
+		public function puts(s : String) : void {
 		  if(printTrace) trace('[as3spec] ' + s);
 		}


Optimise the initialise method of the particle class

--- src/org/flintparticles/threeD/particles/Particle3D.as
+++ src/org/flintparticles/threeD/particles/Particle3D.as
@@ -33,7 +33,6 @@
 	import org.flintparticles.common.particles.Particle;
 	import org.flintparticles.common.particles.ParticleFactory;
 	import org.flintparticles.threeD.geom.Quaternion;
-	import org.flintparticles.threeD.geom.Vector3DUtils;

 	import flash.geom.Vector3D;

@@ -111,12 +110,12 @@
 		public function Particle3D()
 		{
 			super();
-			position = Vector3DUtils.getPoint( 0, 0, 0 );
-			projectedPosition = Vector3DUtils.getPoint( 0, 0, 0 );
-			faceAxis = Vector3DUtils.getVector( 1, 0, 0 );
-			velocity = Vector3DUtils.getVector( 0, 0, 0 );
+			position = new Vector3D( 0, 0, 0, 1 );
+			projectedPosition = new Vector3D( 0, 0, 0, 1 );
+			faceAxis = new Vector3D( 1, 0, 0, 0 );
+			velocity = new Vector3D( 0, 0, 0, 0 );
 			rotation = new Quaternion( 1, 0, 0, 0 );
-			angVelocity = Vector3DUtils.getVector( 0, 0, 0 );
+			angVelocity = new Vector3D( 0, 0, 0, 0 );
 		}

 		/**
@@ -125,12 +124,32 @@
 		override public function initialize():void
 		{
 			super.initialize();
-			Vector3DUtils.resetPoint( position, 0, 0, 0 );
-			Vector3DUtils.resetPoint( projectedPosition, 0, 0, 0 );
-			Vector3DUtils.resetVector( faceAxis, 1, 0, 0 );
-			Vector3DUtils.resetVector( velocity, 0, 0, 0 );
-			rotation.reset( 1, 0, 0, 0 );
-			Vector3DUtils.resetVector( angVelocity, 0, 0, 0 );
+
+			position.x = 0;
+			position.y = 0;
+			position.z = 0;
+
+			projectedPosition.x = 0;
+			projectedPosition.y = 0;
+			projectedPosition.z = 0;
+
+			faceAxis.x = 1;
+			faceAxis.y = 0;
+			faceAxis.z = 0;
+
+			velocity.x = 0;
+			velocity.y = 0;
+			velocity.z = 0;
+
+			rotation.w = 1;
+			rotation.x = 0;
+			rotation.y = 0;
+			rotation.z = 0;
+
+			angVelocity.x = 0;
+			angVelocity.y = 0;
+			angVelocity.z = 0;
+
 			sortID = -1;
 			zDepth = 0;
 		}


Fixed bug where getBase64Image was getting a bad bitmapdata object.
Replaced getBitmapDataFromComponent call to a call to
ImageSnapshot.captureImage().

Tested with weave_api_test.html by using the ImageService.

Change-Id: Ie0c35e499a4efd0afaf189bcf46a744d20a35687

--- WeaveUI/src/weave/utils/BitmapUtils.as
+++ WeaveUI/src/weave/utils/BitmapUtils.as
@@ -25,9 +25,12 @@
 	import flash.utils.ByteArray;

 	import mx.core.UIComponent;
+	import mx.graphics.ImageSnapshot;
 	import mx.graphics.codec.JPEGEncoder;
 	import mx.graphics.codec.PNGEncoder;
 	import mx.utils.Base64Encoder;
+
+	import weave.api.copySessionState;

 	/**
 	 * BitmapUtils
@@ -142,10 +145,12 @@
 		 */
 		public static function getBase64Image(component:UIComponent):String
 		{
-			var data:BitmapData = getBitmapDataFromComponent(component);
-			var byteArray:ByteArray = new ByteArray();
-			byteArray.writeObject(data.getPixels(data.rect));
+			// getBitmapDataFromComponent doesn't give a valid image that can be saved to disk
+//			var data:BitmapData = getBitmapDataFromComponent(component);
+//			var byteArray:ByteArray = new ByteArray();
+//			byteArray.writeObject(data.getPixels(data.rect));

+			var byteArray:ByteArray = ImageSnapshot.captureImage(component).data;
 			var encoder:Base64Encoder = new Base64Encoder();
 			encoder.encodeBytes(byteArray);


removed forced newline character at end of unIndent() result

Change-Id: Ifee338699414366c35b000553ca2c941282ff298

--- WeaveCore/src/weave/compiler/StandardLib.as
+++ WeaveCore/src/weave/compiler/StandardLib.as
@@ -219,7 +219,7 @@
 				// commit changes
 				lines[i] = spaces + line.substr(t);
 			}
-			return lines.join('\n') + '\n';
+			return lines.join('\n');
 		}

 		/**