Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/mx/src/mx/controls/treeClasses/DefaultDataDescriptor.as
+++ frameworks/projects/mx/src/mx/controls/treeClasses/DefaultDataDescriptor.as
@@ -39,6 +39,11 @@
  *  @see mx.controls.MenuBar
  *  @see mx.controls.PopUpMenuButton
  *  @see mx.controls.Tree
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class DefaultDataDescriptor implements ITreeDataDescriptor2, IMenuDataDescriptor
 {
@@ -46,6 +51,11 @@

     /**
      *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function DefaultDataDescriptor()
     {
@@ -68,6 +78,11 @@
      *  @param node The node object currently being evaluated.
      *  @param model The collection that contains the node; ignored by this class.
      *  @return An object containing the children nodes.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function getChildren(node:Object, model:Object = null):ICollectionView
     {
@@ -168,6 +183,11 @@
      *  @param model The collection that contains the node; ignored by this class.
      *
      *  @return true if this node currently has children.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function hasChildren(node:Object, model:Object = null):Boolean
     {
@@ -202,6 +222,11 @@
      *  @param model The collection that contains the node; ignored by this class.
      *
      *  @return true if this node is non-terminating.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function isBranch(node:Object, model:Object = null):Boolean
     {
@@ -252,6 +277,11 @@
      *  @param node The node object currently being evaluated.
      *  @param model The collection that contains the node; ignored by this class.
      *  @return The node.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function getData(node:Object, model:Object = null):Object
     {
@@ -292,6 +322,11 @@
      *  @param model The entire collection that this node is a part of.
      *
      *  @return true if successful.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function addChildAt(parent:Object, newChild:Object, index:int, model:Object = null):Boolean
     {
@@ -367,6 +402,11 @@
      *  @param model The entire collection that this node is a part of.
      *
      *  @return true if successful.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function removeChildAt(parent:Object, child:Object, index:int, model:Object = null):Boolean
     {
@@ -427,6 +467,11 @@
      *
      *  @return  The value of the type attribute or field,
      *  or the empty string if there is no such field.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function getType(node:Object):String
     {
@@ -456,6 +501,11 @@
      *  @return The value of the node's enabled
      *  attribute or field, or true if there is no such
      *  entry or the value is not false.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function isEnabled(node:Object):Boolean
     {
@@ -488,6 +538,11 @@
      *
      *  @param node The node for which to set the status.
      *  @param value Whether the node is enabled.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function setEnabled(node:Object, value:Boolean):void
     {
@@ -516,6 +571,11 @@
      *  @return The value of the node's toggled
      *  attribute or field, or false if there is no such
      *  entry.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function isToggled(node:Object):Boolean
     {
@@ -547,6 +607,11 @@
      *
      *  @param node The node for which to set the status.
      *  @param value Whether the node is toggled.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function setToggled(node:Object, value:Boolean):void
     {
@@ -575,6 +640,11 @@
      *  @return The value of the node's groupName
      *  attribute or field, or an empty string if there is no such
      *  entry.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function getGroupName(node:Object):String
     {
@@ -597,6 +667,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function getHierarchicalCollectionAdaptor(hierarchicalData:ICollectionView,
                                                 uidFunction:Function,
@@ -611,6 +686,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function getNodeDepth(node:Object, iterator:IViewCursor, model:Object = null):int
     {
@@ -621,6 +701,11 @@

     /**
      *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function getParent(node:Object, collection:ICollectionView, model:Object = null):Object
     {


Updated Tween ASDoc comments

Updated Tween ASDoc comments

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

--- flare.animate/flare/animate/Tween.as
+++ flare.animate/flare/animate/Tween.as
@@ -65,7 +65,6 @@
 		 * Creates a new Tween with the specified parameters.
 		 * @param target the target object
 		 * @param duration the duration of the tween, in seconds
-		 * @param delay the starting delay, in seconds
 		 * @param values the properties to tween and their target values
 		 * @param remove a display list removal flag (for
 		 *  DisplayObject target objects


handle_error

--- faye-client-as/src/net/faye/transport/TWebSocket.as
+++ faye-client-as/src/net/faye/transport/TWebSocket.as
@@ -84,14 +84,12 @@
 			connect();
 		}

-
 		private var _state:int = -1;
 		private var _socket:WebSocket;
 		private var _ever_connected:Boolean;
 		private var _tmp_socket:WebSocket;

 		public function connect():void {
-			trace('wetsocket#connect');
 			if (_state == -1) {
 				_state = UNCONNECTED;
 			}
@@ -179,15 +177,13 @@
 			_defer.set_deferred_status('unknown');

 			if (wasConnected) {
-				trace('wasConnected');
-
+				handle_error(_pending_envelopes, true);
 			} else if (_ever_connected) {
-				trace('ever_connected');
+				handle_error(_pending_envelopes);
 			} else {
 				_defer.set_deferred_status('failed');
 			}
 		}
-

 		public override function close():void {
 			_socket.close();


Transferred from the Adobe Open Source Subversion Repository

Revision: 10766
Author:   gruehle@adobe.com
Date:     2009-09-30T22:55:55.205927Z

Log Message:
-----------
Re-commit compiler errors for other theme's styles feature. If Style metadata has a "themes" attribute, the style is only valid if that theme is applied.

The Spark theme is applied by default. The halo theme can be specified as a compiler argument or by selecting the "MX Only" component set in Builder.

All other themes need to be applied using theme+= instead of theme=. If you use theme= you will get warnings about styles used in CSS selectors, and errors if you use any theme-specific style as an attribute on an MXML tag.

By default, styles that aren't valid for the current theme are errors. These can be changed to warnings with the report-invalid-styles-as-warnings compiler option.

QE notes: Expect test breakage
Doc notes: The new policy for themes needs to be documented.
Bugs: none yet, but I'm sure there will be some...
Reviewer: Ryan
Tests run: checkintests, cyclone
Is noteworthy for integration: Yes

Modified Paths:
--------------
<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/ToolTip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/builder/ComponentBuilder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StylesContainer.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VideoDisplay.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/MxmlDocument.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/DefaultsConfigurator.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ApplicationBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/halo/defaults.css</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/themes/Spark/spark.css</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/controls/CalendarLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SkinStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/CompilerConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/InterfaceCompiler.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ApplicationControlBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/BasicTests.css</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/DeclarationHandler.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ToolTipBorder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/reflect/Type.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/MxmlConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/reflect/TypeTable.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/SparkSkinsClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/ImplementationCompiler.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/MxmlConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler_en.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/AttributeHandler.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FXGCompiler.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/SkinnableDataContainerSkin.mxml</path>

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

--- frameworks/projects/mx/src/mx/controls/ButtonBar.as
+++ frameworks/projects/mx/src/mx/controls/ButtonBar.as
@@ -23,6 +23,7 @@
 import mx.controls.buttonBarClasses.ButtonBarButton;
 import mx.core.ClassFactory;
 import mx.core.EdgeMetrics;
+import mx.core.FlexVersion;
 import mx.core.IFlexDisplayObject;
 import mx.core.IUIComponent;
 import mx.core.mx_internal;
@@ -362,6 +363,23 @@

         addEventListener(ChildExistenceChangedEvent.CHILD_REMOVE,
                          childRemoveHandler);
+
+        if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_0)
+        {
+            var typeSelector:CSSStyleDeclaration =
+                styleManager.getStyleDeclaration("mx.controls.ButtonBar");
+
+            if (typeSelector)
+            {
+                if (typeSelector.getStyle("borderSkin") === undefined)
+                {
+                    var globalSelector:CSSStyleDeclaration =
+                        styleManager.getStyleDeclaration("global");
+                    typeSelector.setStyle("borderSkin",
+                        globalSelector.getStyle("borderSkin"));
+                }
+            }
+        }
     }

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


修复发送字符串时多发了前缀的 bug

修复发送字符串时多发了前缀的 bug

--- as3/com/netease/protobuf/WriteUtils.as
+++ as3/com/netease/protobuf/WriteUtils.as
@@ -59,7 +59,7 @@
 				plb = new PostposeLengthBuffer
 			}
 			const i:uint = plb.beginBlock()
-			plb.writeUTF(value)
+			plb.writeUTFBytes(value)
 			plb.endBlock(i)
 			if (plb != output) {
 				plb.toNormal(output)


handle stencil related GPU render states properly

--- src/aerys/minko/render/resource/Context3DResource.as
+++ src/aerys/minko/render/resource/Context3DResource.as
@@ -12,35 +12,44 @@

 	public final class Context3DResource
 	{
-		private var _context				: Context3D					= null;
-
-		private var _enableErrorChecking	: Boolean					= false;
-
-		private var _rttTarget				: TextureBase				= null;
-		private var _rttDepthAndStencil		: Boolean					= false;
-		private var _rttAntiAliasing		: int						= 0;
-		private var _rttSurfaceSelector		: int						= 0;
-		private var _rectangle				: Rectangle					= null;
-
-		private var _depthMask				: Boolean					= false;
-		private var _passCompareMode		: String					= null;
-
-		private var _program				: Program3D					= null;
-
-		private var _blendingSource			: String					= null;
-		private var _blendingDestination	: String					= null;
-
-		private var _triangleCulling		: String					= null;
-
-		private var _vertexBuffers			: Vector.<VertexBuffer3D>	= new Vector.<VertexBuffer3D>(8, true);
-		private var _vertexBuffersOffsets	: Vector.<int>				= new Vector.<int>(8, true);
-		private var _vertexBuffersFormats	: Vector.<String>			= new Vector.<String>(8, true);
-		private var _textures				: Vector.<TextureBase>		= new Vector.<TextureBase>(8, true);
-
-		private var _colorMaskRed			: Boolean					= false;
-		private var _colorMaskGreen			: Boolean					= false;
-		private var _colorMaskBlue			: Boolean					= false;
-		private var _colorMaskAlpha			: Boolean					= false;
+		private var _context				                : Context3D;
+
+		private var _enableErrorChecking	                : Boolean;
+
+		private var _rttTarget			                	: TextureBase;
+		private var _rttDepthAndStencil	                	: Boolean;
+		private var _rttAntiAliasing	                	: int;
+		private var _rttSurfaceSelector		                : int;
+		private var _rectangle				                : Rectangle;
+
+		private var _depthMask			                	: Boolean;
+		private var _passCompareMode	                	: String;
+
+		private var _program			                	: Program3D;
+
+		private var _blendingSource		                	: String;
+		private var _blendingDestination                	: String;
+
+		private var _triangleCulling	                	: String;
+
+		private var _vertexBuffers			                : Vector.<VertexBuffer3D>;
+		private var _vertexBuffersOffsets	                : Vector.<int>;
+		private var _vertexBuffersFormats	                : Vector.<String>;
+		private var _textures				                : Vector.<TextureBase>;
+
+		private var _colorMaskRed			                : Boolean;
+		private var _colorMaskGreen			                : Boolean;
+		private var _colorMaskBlue			                : Boolean;
+		private var _colorMaskAlpha	                		: Boolean;
+
+        private var _stencilRefNum                          : uint;
+        private var _stencilReadMask                        : uint;
+        private var _stencilWriteMask                       : uint;
+        private var _stencilTriangleFace                    : String;
+        private var _stencilCompareMode                     : String;
+        private var _stencilActionOnBothPass                : String;
+        private var _stencilActionOnDepthFail               : String;
+        private var _stencilActionOnDepthPassStencilFail    : String;

 		public function get enabledErrorChecking() : Boolean
 		{
@@ -58,7 +67,17 @@
 		public function Context3DResource(context : Context3D)
 		{
 			_context = context;
-		}
+
+            initialize();
+		}
+
+        private function initialize() : void
+        {
+            _vertexBuffers = new Vector.<VertexBuffer3D>(8, true);
+            _vertexBuffersOffsets = new Vector.<int>(8, true);
+            _vertexBuffersFormats = new Vector.<String>(8, true);
+            _textures = new Vector.<TextureBase>(8, true);
+        }

 		public function clear(red		: Number	= 0.0,
 							  green		: Number	= 0.0,
@@ -303,7 +322,17 @@
 												 readMask	: uint 	= 255,
 												 writeMask	: uint 	= 255) : Context3DResource
 		{
-			_context.setStencilReferenceValue(refNum, readMask, writeMask);
+            if (refNum != _stencilRefNum
+                || readMask != _stencilReadMask
+                || writeMask != _stencilWriteMask
+                )
+            {
+                _context.setStencilReferenceValue(refNum, readMask, writeMask);
+
+                _stencilRefNum = refNum;
+                _stencilReadMask = readMask;
+                _stencilWriteMask = writeMask;
+            }

 			return this;
 		}
@@ -313,14 +342,28 @@
 										  actionOnBothPass				: String = 'keep',
 										  actionOnDepthFail				: String = 'keep',
 										  actionOnDepthPassStencilFail	: String = 'keep') : Context3DResource
-		{
-			_context.setStencilActions(
-				triangleFace,
-				compareMode,
-				actionOnBothPass,
-				actionOnDepthFail,
-				actionOnDepthPassStencilFail
-			);
+		{
+            if (triangleFace != _stencilTriangleFace
+                || compareMode != _stencilCompareMode
+                || actionOnBothPass != _stencilActionOnBothPass
+                || actionOnDepthFail != _stencilActionOnDepthFail
+                || actionOnDepthPassStencilFail != _stencilActionOnDepthPassStencilFail
+            )
+            {
+    			_context.setStencilActions(
+    				triangleFace,
+    				compareMode,
+    				actionOnBothPass,
+    				actionOnDepthFail,
+    				actionOnDepthPassStencilFail
+    			);
+
+                _stencilTriangleFace = triangleFace;
+                _stencilCompareMode = compareMode;
+                _stencilActionOnBothPass = actionOnBothPass;
+                _stencilActionOnDepthFail = actionOnDepthFail;
+                _stencilActionOnDepthPassStencilFail = actionOnDepthPassStencilFail;
+            }

 			return this;
 		}


Retransform the video when resized, so we still get slid into view in Firefox plain reloads or w/e

--- src/CameraMan.as
+++ src/CameraMan.as
@@ -97,11 +97,6 @@
             videoface = new Video(cam.width, cam.height);
             videoface.attachCamera(cam);

-            var mirror:Matrix = new Matrix();
-            mirror.scale(-1, 1);
-            mirror.translate(cam.width, 0);
-            videoface.transform.matrix = mirror;
-
             this.addChild(videoface);
         }

@@ -127,6 +122,11 @@
             trace("Camera size is " + cam.width + ", " + cam.height);
             videoface.width = cam.width;
             videoface.height = cam.height;
+
+            var mirror:Matrix = new Matrix();
+            mirror.scale(-1, 1);
+            mirror.translate(cam.width, 0);
+            videoface.transform.matrix = mirror;
         }

         public function callback(eventname:String, ... args) : void {


241 Set now handles aliasing properly

241 Set now handles aliasing properly

--- raw/src/org/yellcorp/sequence/Set.as
+++ raw/src/org/yellcorp/sequence/Set.as
@@ -74,12 +74,25 @@
     {
         var item:*;

-        if (_length != other._length) return false;
-
-        for each (item in dict)
-            if (!other.contains(item)) return false;
-
-        return true;
+        if (this === other)
+        {
+            return true;
+        }
+        else if (_length != other._length)
+        {
+            return false;
+        }
+        else
+        {
+            for each (item in dict)
+            {
+                if (!other.contains(item))
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
     }

     /**
@@ -113,8 +126,13 @@
     public function addIterable(iterable:*):void
     {
         var item:*;
-        for each (item in iterable)
-            add(item);
+        if (this !== iterable)
+        {
+            for each (item in iterable)
+            {
+                add(item);
+            }
+        }
     }

     /**
@@ -147,13 +165,20 @@
     public function removeIterable(iterable:*):void
     {
         var item:*;
-        for each (item in iterable)
-            remove(item);
+        if (this === iterable)
+        {
+            clear();
+        }
+        else
+        {
+            for each (item in iterable)
+                remove(item);
+        }
     }

     /**
      * Removes some element from the Set and returns it.  Exactly which
-     * element is returned is undefined, as the Set is unordered.
+     * element is returned is not defined, as the Set is unordered.
      *
      * @return An element from the Set, or null if the Set is
      *         empty.
@@ -179,11 +204,18 @@
     {
         var item:*;

-        for each (item in dict)
-            if (!test.contains(item))
-                return false;
-
-        return true;
+        if (this === test)
+        {
+            return true;
+        }
+        else
+        {
+            for each (item in dict)
+                if (!test.contains(item))
+                    return false;
+
+            return true;
+        }
     }

     /**
@@ -276,7 +308,10 @@
     public static function union(a:Set, b:Set):Set
     {
         var newSet:Set = a.clone();
-        newSet.addIterable(b.dict);
+
+        if (a !== b)
+            newSet.addIterable(b.dict);
+
         return newSet;
     }

@@ -287,9 +322,13 @@
     public static function difference(a:Set, b:Set):Set
     {
         var newSet:Set = new Set();
-        for each (var e:* in a.dict)
-        {
-            if (!b.contains(e)) newSet.add(e);
+
+        if (a !== b)
+        {
+            for each (var e:* in a.dict)
+            {
+                if (!b.contains(e)) newSet.add(e);
+            }
         }
         return newSet;
     }
@@ -302,11 +341,19 @@
     public static function intersection(a:Set, b:Set):Set
     {
         var item:*;
-        var newSet:Set = new Set();
-
-        for each (item in a.dict)
-            if (b.contains(item))
-                newSet.add(item);
+        var newSet:Set;
+
+        if (a === b)
+        {
+            return a.clone();
+        }
+        else
+        {
+            newSet = new Set();
+            for each (item in a.dict)
+                if (b.contains(item))
+                    newSet.add(item);
+        }

         return newSet;
     }
@@ -321,9 +368,12 @@
         var item:*;
         var newSet:Set = a.clone();

-        for each (item in b.dict)
-            if (!newSet.remove(item))
-                newSet.add(item);
+        if (a !== b)
+        {
+            for each (item in b.dict)
+                if (!newSet.remove(item))
+                    newSet.add(item);
+        }

         return newSet;
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 5026
Author:   pfarland@adobe.com
Date:     2009-02-20T20:27:07.892548Z

Log Message:
-----------
Changing pseudo-selector matching by allowing an object to decide whether its state matches a pseudo-selector. This allows top level components like FxApplication to decide whether a pseudo-selector matches its document state OR its skin state.

Also modified StyleManager data structure to allow multiple identical selectors to exist per subject while retaining declaration order. This allows programmatic addition of CSSStyleDeclaration's with identical selectors.

Finally, added preparation for qualified vs unqualified class names in type selectors. This is not yet enabled.

QA: Yes, please retest SDK-19127
Doc: Not yet.
Checkintests: Pass
mustella: AdvancedCSS, and other component style testsuites such as Button and MenuBar passed.
Review: Discussed pseudo-selector approach with Glenn. Other API changes will be part of final PARB review.
Bugs:
SDK-19127 - [Advanced CSS] Pseudo Selectors do not work when you change the "currentState" property of an FxApplication.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSSelector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IAdvancedStyleClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSCondition.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleManager3.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>

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

--- frameworks/projects/framework/src/mx/styles/CSSSelector.as
+++ frameworks/projects/framework/src/mx/styles/CSSSelector.as
@@ -195,7 +195,7 @@
         if (kind == CSSSelectorKind.TYPE_SELECTOR
             || kind == CSSSelectorKind.CONDITIONAL_SELECTOR)
         {
-            if (value == "*" || value == "" || object.isAssignableToType(value))
+            if (value == "*" || value == "" || object.isTypeSelectorMatch(value))
             {
                 match = true;
             }
@@ -230,7 +230,7 @@
                 var parent:IAdvancedStyleClient = object.styleParent;
                 while (parent != null)
                 {
-                    if (parent.isAssignableToType(ancestor.value)
+                    if (parent.isTypeSelectorMatch(ancestor.value)
                         || "*" == ancestor.value)
                     {
                         match = ancestor.isMatch(parent);


using WeakMap

using WeakMap


What we've been needing all this time is a Program class, really

--- raw/src/org/yellcorp/lib/layout/Layout.as
+++ raw/src/org/yellcorp/lib/layout/Layout.as
@@ -220,14 +220,14 @@

     private var registers:Vector.<Number>;

-    private var virtualMeasureProgram:Vector.<ASTNode>;
-    private var measureProgram:Vector.<ASTNode>;
+    private var virtualMeasureProgram:Program;
+    private var measureProgram:Program;

     private var virtualSettersByTarget:Dictionary;
-    private var virtualUpdateProgram:Vector.<SetVirtualProps>;
-    private var updateProgram:Vector.<ASTNode>;
-
-    private var measuredUpdateProgram:Vector.<ASTNode>;
+    private var virtualUpdateProgram:Program;
+    private var updateProgram:Program;
+
+    private var measuredUpdateProgram:Program;

     private var _nodeFactories:Object;

@@ -245,11 +245,11 @@
         constrainCount = new Dictionary(true);
         registers = new Vector.<Number>();

-        virtualMeasureProgram = new Vector.<ASTNode>();
+        virtualMeasureProgram = new Program();
         measureProgram = null;

         virtualSettersByTarget = new Dictionary();
-        virtualUpdateProgram = new Vector.<SetVirtualProps>();
+        virtualUpdateProgram = new Program();
         updateProgram = null;
         measuredUpdateProgram = null;
     }
@@ -276,7 +276,7 @@
         var storeNode:ASTNode = new SetRegister(registers, regIndex, measureNode);
         var calculateNode:ASTNode = nodeFactory.calculate(regIndex, relative, relativeVirtualProp);

-        virtualMeasureProgram.push(storeNode);
+        virtualMeasureProgram.nodes.push(storeNode);
         measureProgram = null;

         var existingSetter:SetVirtualProps = virtualSettersByTarget[target];
@@ -291,7 +291,7 @@
         {
             virtualSettersByTarget[target] = existingSetter =
                 new SetVirtualProps(target, targetVirtualProp, calculateNode);
-            virtualUpdateProgram.push(existingSetter);
+            virtualUpdateProgram.nodes.push(existingSetter);
         }
         incrementConstraint(target);
     }
@@ -305,7 +305,7 @@
     public function measure():void
     {
         if (!measureProgram) compileMeasureProgram();
-        run(measureProgram);
+        measureProgram.run();
         measuredUpdateProgram = null;
     }

@@ -313,17 +313,21 @@
     {
         if (!measureProgram) measure();
         if (!updateProgram) compileUpdateProgram();
-        run(measuredUpdateProgram || updateProgram);
+
+        if (measuredUpdateProgram)
+            measuredUpdateProgram.run();
+        else
+            updateProgram.run();
     }

     public function optimize():void
     {
         if (!measureProgram) measure();
         if (!updateProgram) compileUpdateProgram();
-        measuredUpdateProgram = copyProgram(updateProgram);
-        filterProgram(measuredUpdateProgram, new ReadOnlyEvaluator());
-        filterProgram(measuredUpdateProgram, new ArithmeticConstFolder());
-        filterProgram(measuredUpdateProgram, new ArithmeticOptimizer());
+        measuredUpdateProgram = updateProgram.clone();
+        measuredUpdateProgram.filter(new ReadOnlyEvaluator());
+        measuredUpdateProgram.filter(new ArithmeticConstFolder());
+        measuredUpdateProgram.filter(new ArithmeticOptimizer());
     }

     public function dumpPrograms(linebuf:Array):void
@@ -338,7 +342,7 @@
         dumpAST(dumper, measureProgram, linebuf);

         linebuf.push(DUMP_SEPARATOR, "virtualUpdateProgram:");
-        dumpAST(dumper, Vector.<ASTNode>(virtualUpdateProgram), linebuf);
+        dumpAST(dumper, virtualUpdateProgram, linebuf);

         linebuf.push(DUMP_SEPARATOR, "updateProgram:");
         dumpAST(dumper, updateProgram, linebuf);
@@ -349,28 +353,28 @@

     private function compileMeasureProgram():void
     {
-        measureProgram = copyProgram(virtualMeasureProgram);
-        filterProgram(virtualMeasureProgram, virtualGetResolver);
-        filterProgram(measureProgram, propertyTransformer);
+        measureProgram = virtualMeasureProgram.clone();
+        measureProgram.filter(virtualGetResolver);
+        measureProgram.filter(propertyTransformer);
     }

     private function compileUpdateProgram():void
     {
         resolveVirtualSetters();
-        filterProgram(updateProgram, virtualGetResolver);
-        filterProgram(updateProgram, new Max0SpanSetters());
+        updateProgram.filter(virtualGetResolver);
+        updateProgram.filter(new Max0SpanSetters());
         if (rounding)
         {
-            filterProgram(updateProgram, new RoundSetters());
-        }
-        filterProgram(updateProgram, propertyTransformer);
+            updateProgram.filter(new RoundSetters());
+        }
+        updateProgram.filter(propertyTransformer);
     }

     private function resolveVirtualSetters():void
     {
         var vset:SetVirtualProps;
-        updateProgram = new Vector.<ASTNode>();
-        for each (vset in virtualUpdateProgram)
+        updateProgram = new Program();
+        for each (vset in virtualUpdateProgram.nodes)
         {
             resolveVirtualSetter(vset);
         }
@@ -380,6 +384,7 @@
     {
         var properties:int = vset.vprop0 | vset.vprop1;
         var target:Object = vset.object;
+        var programNodes:Vector.<ASTNode> = updateProgram.nodes;

         var a:ASTNode;
         var b:ASTNode;
@@ -399,14 +404,14 @@
         {
         case MIN:
             // target.axis = a
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, _axis, a)
             );
             break;

         case MID:
             // target.axis = a - target.span * .5
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, _axis,
                     new Subtract(
                         a,
@@ -421,7 +426,7 @@

         case MAX:
             // target.axis = a - object.span
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, _axis,
                     new Subtract(
                         a,
@@ -433,7 +438,7 @@

         case SPAN:
             // object.span = a
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, span, a)
             );
             break;
@@ -443,7 +448,7 @@
             // b is mid
             // target.axis = a
             // target.span = (b - a) * 2
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, _axis, a),
                 new SetRuntimeProp(target, span,
                     new Multiply(
@@ -459,7 +464,7 @@
             // b is max
             // target.axis = a
             // target.span = b - a
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, _axis, a),
                 new SetRuntimeProp(target, span,
                     new Subtract(b, a)
@@ -472,7 +477,7 @@
             // b is span
             // target.axis = a
             // target.span = b
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, _axis, a),
                 new SetRuntimeProp(target, span, b)
             );
@@ -483,7 +488,7 @@
             // b is max
             // target.axis = (2 * a) - b
             // target.span = 2 * (b - a)
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, _axis,
                     new Subtract(
                         new Multiply(
@@ -510,7 +515,7 @@
             // b is span
             // target.axis = a - (b * .5)
             // target.span = b
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, _axis,
                      new Subtract(
                         a,
@@ -529,7 +534,7 @@
             // b is span
             // target.axis = a - b
             // target.span = b
-            updateProgram.push(
+            programNodes.push(
                 new SetRuntimeProp(target, _axis,
                     new Subtract(
                         a,
@@ -570,46 +575,63 @@
         return f;
     }

-    private static function run(program:Vector.<ASTNode>):void
-    {
-        var node:ASTNode;
-        for each (node in program)
+    private static function dumpAST(dumper:ASTDumper, program:Program, out:Array):void
+    {
+        if (program)
+        {
+            dumper.clear();
+            program.filter(dumper);
+            out.push.apply(out, dumper.lines);
+        }
+        else
+        {
+            out.push("null");
+        }
+    }
+}
+
+
+class Program
+{
+    public var nodes:Vector.<ASTNode>;
+
+    public function Program(length:int = 0)
+    {
+        if (length > 0)
+        {
+            nodes = new Vector.<ASTNode>(length, true);
+        }
+        else
+        {
+            nodes = new Vector.<ASTNode>();
+        }
+    }
+
+    public function filter(astFilter:ASTFilter):void
+    {
+        for (var i:int = 0; i < nodes.length; i++)
+        {
+            nodes[i] = astFilter.filter(nodes[i]);
+        }
+    }
+
+    public function clone():Program
+    {
+        var c:Program = new Program(nodes.length);
+        var deepCopier:DeepCopier = new DeepCopier();
+        for (var i:int = 0; i < nodes.length; i++)
+        {
+            c.nodes[i] = deepCopier.filter(nodes[i]);
+        }
+        return c;
+    }
+
+    public function run():void
+    {
+        for each (var node:ASTNode in nodes)
         {
             node.eval();
         }
-    }
-
-    private static function dumpAST(dumper:ASTDumper, program:Vector.<ASTNode>, out:Array):void
-    {
-        if (program)
-        {
-            dumper.clear();
-            filterProgram(program, dumper);
-            out.push.apply(out, dumper.lines);
-        }
-        else
-        {
-            out.push("null");
-        }
-    }
-
-    private static function filterProgram(program:Vector.<ASTNode>, filter:ASTFilter):void
-    {
-        for (var i:int = 0; i < program.length; i++)
-        {
-            program[i] = filter.filter(program[i]);
-        }
-    }
-
-    private static function copyProgram(program:Vector.<ASTNode>):Vector.<ASTNode>
-    {
-        var copy:Vector.<ASTNode> = new Vector.<ASTNode>(program.length, true);
-        var deepCopier:DeepCopier = new DeepCopier();
-        for (var i:int = 0; i < program.length; i++)
-        {
-            copy[i] = deepCopier.filter(program[i]);
-        }
-        return copy;
     }
 }


Fix 477764 - Cleaning up abcdump some (r+edwsmith)

--- utils/abcdump.as
+++ utils/abcdump.as
@@ -1,3 +1,5 @@
+/* -*- tab-width: 4 -*- */
+/* vi: set ts=4 sw=4 expandtab: (add to ~/.vimrc: set modeline modelines=5) */
 /* ***** BEGIN LICENSE BLOCK *****
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  *
@@ -35,492 +37,48 @@
  *
  * ***** END LICENSE BLOCK ***** */

-
-
 package abcdump
 {
 	import flash.utils.ByteArray
 	import avmplus.System
-
+
+	include "abc-constants.as"
+
+	var usage = [
+	"Displays the contents of abc or swf files",
+	"",
+	"Usage:",
+	"",
+	"    abcdump [options] file ...",
+	"",
+	"Each file can be an ABC or SWF/SWC format file",
+	"",
+	"Options:",
+	"",
+	" -a   Extract the ABC blocks from the SWF/SWC, but do not",
+	"      otherwise display their contents.  The file names are",
+	"      of the form file<n>.abc where \"file\" is the name",
+	"      of the input file minus the .swf/.swc extension;",
+	"      and <n> is omitted if it is 0.",
+	"",
+	" -i   Print information about the ABC, but do not dump the",
+	"      byte code.",
+	].join("\n");
+
 	const TAB = "  "
-
-	// method flags
-	const NEED_ARGUMENTS:int = 		0x01
-	const NEED_ACTIVATION:int = 	0x02
-	const NEED_REST:int = 			0x04
-	const HAS_OPTIONAL:int = 		0x08
-	const IGNORE_REST:int = 		0x10
-	const NATIVE:int =				0x20
-    const HAS_ParamNames:int =      0x80
-
-	const CONSTANT_Utf8					:int = 0x01
-	const CONSTANT_Int					:int = 0x03
-	const CONSTANT_UInt					:int = 0x04
-	const CONSTANT_PrivateNs			:int = 0x05 // non-shared namespace
-	const CONSTANT_Double				:int = 0x06
-	const CONSTANT_Qname				:int = 0x07 // o.ns::name, ct ns, ct name
-	const CONSTANT_Namespace			:int = 0x08
-	const CONSTANT_Multiname			:int = 0x09 // o.name, ct nsset, ct name
-	const CONSTANT_False				:int = 0x0A
-	const CONSTANT_True					:int = 0x0B
-	const CONSTANT_Null					:int = 0x0C
-	const CONSTANT_QnameA				:int = 0x0D // o.@ns::name, ct ns, ct attr-name
-	const CONSTANT_MultinameA			:int = 0x0E // o.@name, ct attr-name
-	const CONSTANT_RTQname				:int = 0x0F // o.ns::name, rt ns, ct name
-	const CONSTANT_RTQnameA				:int = 0x10 // o.@ns::name, rt ns, ct attr-name
-	const CONSTANT_RTQnameL				:int = 0x11 // o.ns::[name], rt ns, rt name
-	const CONSTANT_RTQnameLA			:int = 0x12 // o.@ns::[name], rt ns, rt attr-name
-	const CONSTANT_NameL				:int = 0x13	// o.[], ns=public implied, rt name
-	const CONSTANT_NameLA				:int = 0x14 // o.@[], ns=public implied, rt attr-name
-	const CONSTANT_NamespaceSet			:int = 0x15
-	const CONSTANT_PackageNs			:int = 0x16
-	const CONSTANT_PackageInternalNs	:int = 0x17
-	const CONSTANT_ProtectedNs			:int = 0x18
-	const CONSTANT_StaticProtectedNs	:int = 0x19
-	const CONSTANT_StaticProtectedNs2	:int = 0x1a
-	const CONSTANT_MultinameL           :int = 0x1B
-	const CONSTANT_MultinameLA          :int = 0x1C
-	const CONSTANT_TypeName             :int = 0x1D
-
-	const constantKinds:Array = [ "0", "utf8", "2",
-		"int", "uint", "private", "double", "qname", "namespace",
-		"multiname", "false", "true", "null", "@qname", "@multiname", "rtqname",
-		"@rtqname", "[qname]", "@[qname]", "[name]", "@[name]", "nsset"
-	]
-
-	const TRAIT_Slot		:int = 0x00
-	const TRAIT_Method		:int = 0x01
-	const TRAIT_Getter		:int = 0x02
-	const TRAIT_Setter		:int = 0x03
-	const TRAIT_Class		:int = 0x04
-	const TRAIT_Function	:int = 0x05
-	const TRAIT_Const		:int = 0x06
-
-	const traitKinds:Array = [
-		"var", "function", "function get", "function set", "class", "function", "const"
-	]
-
-	const OP_bkpt:int = 0x01
-	const OP_nop:int = 0x02
-	const OP_throw:int = 0x03
-	const OP_getsuper:int = 0x04
-	const OP_setsuper:int = 0x05
-	const OP_dxns:int = 0x06
-	const OP_dxnslate:int = 0x07
-	const OP_kill:int = 0x08
-	const OP_label:int = 0x09
-	const OP_ifnlt:int = 0x0C
-	const OP_ifnle:int = 0x0D
-	const OP_ifngt:int = 0x0E
-	const OP_ifnge:int = 0x0F
-	const OP_jump:int = 0x10
-	const OP_iftrue:int = 0x11
-	const OP_iffalse:int = 0x12
-	const OP_ifeq:int = 0x13
-	const OP_ifne:int = 0x14
-	const OP_iflt:int = 0x15
-	const OP_ifle:int = 0x16
-	const OP_ifgt:int = 0x17
-	const OP_ifge:int = 0x18
-	const OP_ifstricteq:int = 0x19
-	const OP_ifstrictne:int = 0x1A
-	const OP_lookupswitch:int = 0x1B
-	const OP_pushwith:int = 0x1C
-	const OP_popscope:int = 0x1D
-	const OP_nextname:int = 0x1E
-	const OP_hasnext:int = 0x1F
-	const OP_pushnull:int = 0x20
-	const OP_pushundefined:int = 0x21
-	const OP_pushconstant:int = 0x22
-	const OP_nextvalue:int = 0x23
-	const OP_pushbyte:int = 0x24
-	const OP_pushshort:int = 0x25
-	const OP_pushtrue:int = 0x26
-	const OP_pushfalse:int = 0x27
-	const OP_pushnan:int = 0x28
-	const OP_pop:int = 0x29
-	const OP_dup:int = 0x2A
-	const OP_swap:int = 0x2B
-	const OP_pushstring:int = 0x2C
-	const OP_pushint:int = 0x2D
-	const OP_pushuint:int = 0x2E
-	const OP_pushdouble:int = 0x2F
-	const OP_pushscope:int = 0x30
-	const OP_pushnamespace:int = 0x31
-	const OP_hasnext2:int = 0x32
-	const OP_newfunction:int = 0x40
-	const OP_call:int = 0x41
-	const OP_construct:int = 0x42
-	const OP_callmethod:int = 0x43
-	const OP_callstatic:int = 0x44
-	const OP_callsuper:int = 0x45
-	const OP_callproperty:int = 0x46
-	const OP_returnvoid:int = 0x47
-	const OP_returnvalue:int = 0x48
-	const OP_constructsuper:int = 0x49
-	const OP_constructprop:int = 0x4A
-	const OP_callsuperid:int = 0x4B
-	const OP_callproplex:int = 0x4C
-	const OP_callinterface:int = 0x4D
-	const OP_callsupervoid:int = 0x4E
-	const OP_callpropvoid:int = 0x4F
-	const OP_applytype:int = 0x53
-	const OP_newobject:int = 0x55
-	const OP_newarray:int = 0x56
-	const OP_newactivation:int = 0x57
-	const OP_newclass:int = 0x58
-	const OP_getdescendants:int = 0x59
-	const OP_newcatch:int = 0x5A
-	const OP_findpropstrict:int = 0x5D
-	const OP_findproperty:int = 0x5E
-	const OP_finddef:int = 0x5F
-	const OP_getlex:int = 0x60
-	const OP_setproperty:int = 0x61
-	const OP_getlocal:int = 0x62
-	const OP_setlocal:int = 0x63
-	const OP_getglobalscope:int = 0x64
-	const OP_getscopeobject:int = 0x65
-	const OP_getproperty:int = 0x66
-	const OP_getouterscope:int = 0x67
-	const OP_initproperty:int = 0x68
-	const OP_setpropertylate:int = 0x69
-	const OP_deleteproperty:int = 0x6A
-	const OP_deletepropertylate:int = 0x6B
-	const OP_getslot:int = 0x6C
-	const OP_setslot:int = 0x6D
-	const OP_getglobalslot:int = 0x6E
-	const OP_setglobalslot:int = 0x6F
-	const OP_convert_s:int = 0x70
-	const OP_esc_xelem:int = 0x71
-	const OP_esc_xattr:int = 0x72
-	const OP_convert_i:int = 0x73
-	const OP_convert_u:int = 0x74
-	const OP_convert_d:int = 0x75
-	const OP_convert_b:int = 0x76
-	const OP_convert_o:int = 0x77
-	const OP_coerce:int = 0x80
-	const OP_coerce_b:int = 0x81
-	const OP_coerce_a:int = 0x82
-	const OP_coerce_i:int = 0x83
-	const OP_coerce_d:int = 0x84
-	const OP_coerce_s:int = 0x85
-	const OP_astype:int = 0x86
-	const OP_astypelate:int = 0x87
-	const OP_coerce_u:int = 0x88
-	const OP_coerce_o:int = 0x89
-	const OP_negate:int = 0x90
-	const OP_increment:int = 0x91
-	const OP_inclocal:int = 0x92
-	const OP_decrement:int = 0x93
-	const OP_declocal:int = 0x94
-	const OP_typeof:int = 0x95
-	const OP_not:int = 0x96
-	const OP_bitnot:int = 0x97
-	const OP_concat:int = 0x9A
-	const OP_add_d:int = 0x9B
-	const OP_add:int = 0xA0
-	const OP_subtract:int = 0xA1
-	const OP_multiply:int = 0xA2
-	const OP_divide:int = 0xA3
-	const OP_modulo:int = 0xA4
-	const OP_lshift:int = 0xA5
-	const OP_rshift:int = 0xA6
-	const OP_urshift:int = 0xA7
-	const OP_bitand:int = 0xA8
-	const OP_bitor:int = 0xA9
-	const OP_bitxor:int = 0xAA
-	const OP_equals:int = 0xAB
-	const OP_strictequals:int = 0xAC
-	const OP_lessthan:int = 0xAD
-	const OP_lessequals:int = 0xAE
-	const OP_greaterthan:int = 0xAF
-	const OP_greaterequals:int = 0xB0
-	const OP_instanceof:int = 0xB1
-	const OP_istype:int = 0xB2
-	const OP_istypelate:int = 0xB3
-	const OP_in:int = 0xB4
-	const OP_increment_i:int = 0xC0
-	const OP_decrement_i:int = 0xC1
-	const OP_inclocal_i:int = 0xC2
-	const OP_declocal_i:int = 0xC3
-	const OP_negate_i:int = 0xC4
-	const OP_add_i:int = 0xC5
-	const OP_subtract_i:int = 0xC6
-	const OP_multiply_i:int = 0xC7
-	const OP_getlocal0:int = 0xD0
-	const OP_getlocal1:int = 0xD1
-	const OP_getlocal2:int = 0xD2
-	const OP_getlocal3:int = 0xD3
-	const OP_setlocal0:int = 0xD4
-	const OP_setlocal1:int = 0xD5
-	const OP_setlocal2:int = 0xD6
-	const OP_setlocal3:int = 0xD7
-	const OP_debug:int = 0xEF
-	const OP_debugline:int = 0xF0
-	const OP_debugfile:int = 0xF1
-	const OP_bkptline:int = 0xF2
-
-	const opNames = [
-	    "OP_0x00       ",
-	    "bkpt          ",
-	    "nop           ",
-	    "throw         ",
-	    "getsuper      ",
-	    "setsuper      ",
-	    "dxns          ",
-	    "dxnslate      ",
-	    "kill          ",
-	    "label         ",
-	    "OP_0x0A       ",
-	    "OP_0x0B       ",
-	    "ifnlt         ",
-	    "ifnle         ",
-	    "ifngt         ",
-	    "ifnge         ",
-	    "jump          ",
-	    "iftrue        ",
-	    "iffalse       ",
-	    "ifeq          ",
-	    "ifne          ",
-	    "iflt          ",
-	    "ifle          ",
-	    "ifgt          ",
-	    "ifge          ",
-	    "ifstricteq    ",
-	    "ifstrictne    ",
-	    "lookupswitch  ",
-	    "pushwith      ",
-	    "popscope      ",
-	    "nextname      ",
-	    "hasnext       ",
-	    "pushnull      ",
-	    "pushundefined ",
-	    "pushconstant  ",
-	    "nextvalue     ",
-	    "pushbyte      ",
-	    "pushshort     ",
-	    "pushtrue      ",
-	    "pushfalse     ",
-	    "pushnan       ",
-	    "pop           ",
-	    "dup           ",
-	    "swap          ",
-	    "pushstring    ",
-	    "pushint       ",
-	    "pushuint      ",
-	    "pushdouble    ",
-	    "pushscope     ",
-	    "pushnamespace ",
-	    "hasnext2      ",
-	    "OP_0x33       ",
-	    "OP_0x34       ",
-	    "OP_0x35       ",
-	    "OP_0x36       ",
-	    "OP_0x37       ",
-	    "OP_0x38       ",
-	    "OP_0x39       ",
-	    "OP_0x3A       ",
-	    "OP_0x3B       ",
-	    "OP_0x3C       ",
-	    "OP_0x3D       ",
-	    "OP_0x3E       ",
-	    "OP_0x3F       ",
-	    "newfunction   ",
-	    "call          ",
-	    "construct     ",
-	    "callmethod    ",
-	    "callstatic    ",
-	    "callsuper     ",
-	    "callproperty  ",
-	    "returnvoid    ",
-	    "returnvalue   ",
-	    "constructsuper",
-	    "constructprop ",
-	    "callsuperid   ",
-	    "callproplex   ",
-	    "callinterface ",
-	    "callsupervoid ",
-	    "callpropvoid  ",
-	    "applytype     ",
-	    "OP_0x51       ",
-	    "OP_0x52       ",
-	    "OP_0x53       ",
-	    "OP_0x54       ",
-	    "newobject     ",
-	    "newarray      ",
-	    "newactivation ",
-	    "newclass      ",
-	    "getdescendants",
-	    "newcatch      ",
-	    "OP_0x5B       ",
-	    "OP_0x5C       ",
-	    "findpropstrict",
-	    "findproperty  ",
-	    "finddef       ",
-	    "getlex        ",
-	    "setproperty   ",
-	    "getlocal      ",
-	    "setlocal      ",
-	    "getglobalscope",
-	    "getscopeobject",
-	    "getproperty   ",
-	    "getouterscope ",
-	    "initproperty  ",
-	    "OP_0x69       ",
-	    "deleteproperty",
-	    "OP_0x6A       ",
-	    "getslot       ",
-	    "setslot       ",
-	    "getglobalslot ",
-	    "setglobalslot ",
-	    "convert_s     ",
-	    "esc_xelem     ",
-	    "esc_xattr     ",
-	    "convert_i     ",
-	    "convert_u     ",
-	    "convert_d     ",
-	    "convert_b     ",
-	    "convert_o     ",
-	    "checkfilter   ",
-	    "OP_0x79       ",
-	    "OP_0x7A       ",
-	    "OP_0x7B       ",
-	    "OP_0x7C       ",
-	    "OP_0x7D       ",
-	    "OP_0x7E       ",
-	    "OP_0x7F       ",
-	    "coerce        ",
-	    "coerce_b      ",
-	    "coerce_a      ",
-	    "coerce_i      ",
-	    "coerce_d      ",
-	    "coerce_s      ",
-	    "astype        ",
-	    "astypelate    ",
-	    "coerce_u      ",
-	    "coerce_o      ",
-	    "OP_0x8A       ",
-	    "OP_0x8B       ",
-	    "OP_0x8C       ",
-	    "OP_0x8D       ",
-	    "OP_0x8E       ",
-	    "OP_0x8F       ",
-	    "negate        ",
-	    "increment     ",
-	    "inclocal      ",
-	    "decrement     ",
-	    "declocal      ",
-	    "typeof        ",
-	    "not           ",
-	    "bitnot        ",
-	    "OP_0x98       ",
-	    "OP_0x99       ",
-	    "concat        ",
-	    "add_d         ",
-	    "OP_0x9C       ",
-	    "OP_0x9D       ",
-	    "OP_0x9E       ",
-	    "OP_0x9F       ",
-	    "add           ",
-	    "subtract      ",
-	    "multiply      ",
-	    "divide        ",
-	    "modulo        ",
-	    "lshift        ",
-	    "rshift        ",
-	    "urshift       ",
-	    "bitand        ",
-	    "bitor         ",
-	    "bitxor        ",
-	    "equals        ",
-	    "strictequals  ",
-	    "lessthan      ",
-	    "lessequals    ",
-	    "greaterthan   ",
-	    "greaterequals ",
-	    "instanceof    ",
-	    "istype        ",
-	    "istypelate    ",
-	    "in            ",
-	    "OP_0xB5       ",
-	    "OP_0xB6       ",
-	    "OP_0xB7       ",
-	    "OP_0xB8       ",
-	    "OP_0xB9       ",
-	    "OP_0xBA       ",
-	    "OP_0xBB       ",
-	    "OP_0xBC       ",
-	    "OP_0xBD       ",
-	    "OP_0xBE       ",
-	    "OP_0xBF       ",
-	    "increment_i   ",
-	    "decrement_i   ",
-	    "inclocal_i    ",
-	    "declocal_i    ",
-	    "negate_i      ",
-	    "add_i         ",
-	    "subtract_i    ",
-	    "multiply_i    ",
-	    "OP_0xC8       ",
-	    "OP_0xC9       ",
-	    "OP_0xCA       ",
-	    "OP_0xCB       ",
-	    "OP_0xCC       ",
-	    "OP_0xCD       ",
-	    "OP_0xCE       ",
-	    "OP_0xCF       ",
-	    "getlocal0     ",
-	    "getlocal1     ",
-	    "getlocal2     ",
-	    "getlocal3     ",
-	    "setlocal0     ",
-	    "setlocal1     ",
-	    "setlocal2     ",
-	    "setlocal3     ",
-	    "OP_0xD8       ",
-	    "OP_0xD9       ",
-	    "OP_0xDA       ",
-	    "OP_0xDB       ",
-	    "OP_0xDC       ",
-	    "OP_0xDD       ",
-	    "OP_0xDE       ",
-	    "OP_0xDF       ",
-	    "OP_0xE0       ",
-	    "OP_0xE1       ",
-	    "OP_0xE2       ",
-	    "OP_0xE3       ",
-	    "OP_0xE4       ",
-	    "OP_0xE5       ",
-	    "OP_0xE6       ",
-	    "OP_0xE7       ",
-	    "OP_0xE8       ",
-	    "OP_0xE9       ",
-	    "OP_0xEA       ",
-	    "OP_0xEB       ",
-	    "OP_0xEC       ",
-	    "OP_0xED       ",
-	    "OP_0xEE       ",
-	    "debug         ",
-	    "debugline     ",
-	    "debugfile     ",
-	    "bkptline      ",
-	    "timestamp     ",
-	    "OP_0xF4       ",
-	    "verifypass    ",
-	    "alloc         ",
-	    "mark          ",
-	    "wb            ",
-	    "prologue      ",
-	    "sendenter     ",
-	    "doubletoatom  ",
-	    "sweep         ",
-	    "codegenop     ",
-	    "verifyop      ",
-	    "decode        "
-	];

 	var totalSize:int
 	var opSizes:Array = new Array(256)
+
+	function dumpPrint(s) {
+	    if (!(doExtractAbc || doExtractInfo))
+		    print(s);
+    }
+
+	function infoPrint(s) {
+	    if (doExtractInfo || !doExtractAbc)
+		    print(s);
+	}

 	class Multiname
 	{
@@ -623,28 +181,28 @@

 		function dump(abc:Abc, indent:String, attr:String="")
 		{
-			print("")
+			dumpPrint("")

 			if (metadata) {
 				for each (var md in metadata)
-					print(indent+md)
+					dumpPrint(indent+md)
 			}

-			print(indent+attr+format())
+			dumpPrint(indent+attr+format())
 			if (code)
 			{
-				print(indent+"{")
+				dumpPrint(indent+"{")
 				var oldindent = indent
 				indent += TAB
 				if (flags & NEED_ACTIVATION) {
-					print(indent+"activation {")
+					dumpPrint(indent+"activation {")
 					activation.dump(abc, indent+TAB, "")
-					print(indent+"}")
+					dumpPrint(indent+"}")
 				}
-				print(indent+"// local_count="+local_count+
-					  " max_scope=" + max_scope +
-					  " max_stack=" + max_stack +
-					  " code_len=" + code.length)
+				dumpPrint(indent+"// local_count="+local_count+
+					      " max_scope=" + max_scope +
+					      " max_stack=" + max_stack +
+					      " code_len=" + code.length)
 				code.position = 0
 				var labels:LabelInfo = new LabelInfo()
 				while (code.bytesAvailable > 0)
@@ -655,8 +213,8 @@
 					var opcode = code.readUnsignedByte()

 					if (opcode == OP_label || ((code.position-1) in labels)) {
-						print(indent)
-						print(indent + labels.labelFor(code.position-1) + ": ")
+						dumpPrint(indent)
+						dumpPrint(indent + labels.labelFor(code.position-1) + ": ")
 					}

 					s += opNames[opcode]
@@ -794,9 +352,9 @@
 					var size:int = code.position - start
 					totalSize += size
 					opSizes[opcode] = int(opSizes[opcode]) + size
-					print(s)
+					dumpPrint(s)
 				}
-				print(oldindent+"}\n")
+				dumpPrint(oldindent+"}\n")
 			}
 		}

@@ -838,14 +396,13 @@
 		}
 		function dump(abc:Abc, indent:String, attr:String="")
 		{
-
 			if (kind == TRAIT_Const || kind == TRAIT_Slot)
 			{
 				if (metadata) {
 					for each (var md in metadata)
-						print(indent+md)
+						dumpPrint(indent+md)
 				}
-				print(indent+attr+format())
+				dumpPrint(indent+attr+format())
 				return
 			}

@@ -853,10 +410,10 @@

 			var ct:Traits = value
 			var it:Traits = ct.itraits
-			print('')
+			dumpPrint('')
 			if (metadata) {
 				for each (var md in metadata)
-					print(indent+md)
+					dumpPrint(indent+md)
 			}
 			var def:String;
 			if (it.flags & CLASS_FLAG_interface)
@@ -869,17 +426,17 @@
 					def = "final " + def;

 			}
-			print(indent+attr+def+" "+name+" extends "+it.base)
+			dumpPrint(indent+attr+def+" "+name+" extends "+it.base)
 			var oldindent = indent
 			indent += TAB
 			if (it.interfaces.length > 0)
-				print(indent+"implements "+it.interfaces)
-			print(oldindent+"{")
+				dumpPrint(indent+"implements "+it.interfaces)
+			dumpPrint(oldindent+"{")
 			it.init.dump(abc,indent)
 			it.dump(abc,indent)
 			ct.dump(abc,indent,"static ")
 			ct.init.dump(abc,indent,"static ")
-			print(oldindent+"}\n")
+			dumpPrint(oldindent+"}\n")
 		}
 	}

@@ -909,15 +466,6 @@
 		}
 	}

-	const ATTR_final			:int = 0x01; // 1=final, 0=virtual
-	const ATTR_override         :int = 0x02; // 1=override, 0=new
-    const ATTR_metadata         :int = 0x04; // 1=has metadata, 0=no metadata
-	const ATTR_public           :int = 0x08; // 1=add public namespace
-
-	const CLASS_FLAG_sealed		:int = 0x01;
-    const CLASS_FLAG_final		:int = 0x02;
-    const CLASS_FLAG_interface	:int = 0x04;
-
 	class Abc
 	{
 		private var data:ByteArray
@@ -951,7 +499,7 @@
 			this.data = data
 			magic = data.readInt()

-			print("magic " + magic.toString(16))
+			infoPrint("magic " + magic.toString(16))

 			if (magic != (46<<16|14) && magic != (46<<16|15) && magic != (46<<16|16))
 				throw new Error("not an abc file.  magic=" + magic.toString(16))
@@ -981,7 +529,8 @@
 			parseScriptInfos()
 			parseMethodBodies()

-			if (extractAbc==true) { data.writeFile(nextAbcFname()); }
+			if (doExtractAbc==true)
+			    data.writeFile(nextAbcFname());
 		}

 		function readU32():int
@@ -1027,7 +576,7 @@
 			for (i=1; i < n; i++)
 				doubles[i] = data.readDouble()

-			print("Cpool numbers size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
+			infoPrint("Cpool numbers size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
 			start = data.position

 			// strings
@@ -1036,7 +585,7 @@
 			for (i=1; i < n; i++)
 				strings[i] = data.readUTFBytes(readU32())

-			print("Cpool strings count "+ n +" size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
+			infoPrint("Cpool strings count "+ n +" size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
 			start = data.position

 			// namespaces
@@ -1062,7 +611,7 @@
 					break;
 				}

-			print("Cpool namespaces count "+ n +" size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
+			infoPrint("Cpool namespaces count "+ n +" size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
 			start = data.position

 			// namespace sets
@@ -1076,7 +625,7 @@
 					nsset[j] = namespaces[readU32()]
 			}

-			print("Cpool nssets count "+ n +" size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
+			infoPrint("Cpool nssets count "+ n +" size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
 			start = data.position

 			// multinames
@@ -1131,7 +680,7 @@
 					throw new Error("invalid kind " + data[data.position-1])
 				}

-			print("Cpool names count "+ n +" size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
+			infoPrint("Cpool names count "+ n +" size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
 			start = data.position

 			namespaces[0] = publicNs
@@ -1186,7 +735,7 @@
                     }
                 }
 			}
-			print("MethodInfo count " +method_count+ " size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
+			infoPrint("MethodInfo count " +method_count+ " size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
 		}

 		function parseMetadataInfos()
@@ -1229,7 +778,7 @@
 	        	m.id = -1
 	        	parseTraits(t)
 	        }
-			print("InstanceInfo size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
+			infoPrint("InstanceInfo size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
 		}

 		function parseTraits(t:Traits)
@@ -1300,7 +849,7 @@
 	        	t.init.kind = TRAIT_Method
 	        	parseTraits(t)
 			}
-			print("ClassInfo size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+"%")
+			infoPrint("ClassInfo size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+"%")
 		}

 		function parseScriptInfos()
@@ -1319,7 +868,7 @@
 				t.init.kind = TRAIT_Method
 	        	parseTraits(t)
 	        }
-			print("ScriptInfo size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
+			infoPrint("ScriptInfo size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
 		}

 		function parseMethodBodies()
@@ -1352,26 +901,26 @@
 	       		}
 	       		parseTraits(m.activation = new Traits)
 	        }
-			print("MethodBodies size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
+			infoPrint("MethodBodies size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
 		}

 		function dump(indent:String="")
 		{
-			for each (var t in scripts)
-			{
-				print(indent+t.name)
-				t.dump(this,indent)
-				t.init.dump(this,indent)
-			}
-
-			for each (var m in methods)
-			{
-				if (m.anon) {
-					m.dump(this,indent)
-				}
-			}
-
-			print("OPCODE\tSIZE\t% OF "+totalSize)
+		    for each (var t in scripts)
+		    {
+			    dumpPrint(indent+t.name)
+			    t.dump(this,indent)
+			    t.init.dump(this,indent)
+		    }
+
+		    for each (var m in methods)
+		    {
+			    if (m.anon) {
+				    m.dump(this,indent)
+			    }
+		    }
+
+			infoPrint("OPCODE\tSIZE\t% OF "+totalSize)
 			var done = []
 			for (;;)
 			{
@@ -1388,7 +937,7 @@
 				if (max == -1)
 					break;
 				done[max] = 1;
-				print(opNames[max]+"\t"+int(opSizes[max])+"\t"+int(100*opSizes[max]/totalSize)+"%")
+				infoPrint(opNames[max]+"\t"+int(opSizes[max])+"\t"+int(100*opSizes[max]/totalSize)+"%")
 			}
 		}
 	}
@@ -1530,9 +1079,9 @@
 		function Swf(data:ByteArray)
 		{
 			this.data = data
-			print("size "+decodeRect())
-			print("frame rate "+(data.readUnsignedByte()<<8|data.readUnsignedByte()))
-			print("frame count "+data.readUnsignedShort())
+			infoPrint("size "+decodeRect())
+			infoPrint("frame rate "+(data.readUnsignedByte()<<8|data.readUnsignedByte()))
+			infoPrint("frame count "+data.readUnsignedShort())
 			decodeTags()
 		}

@@ -1548,14 +1097,14 @@
 	            if (((length = h & 0x3F) == 0x3F))
 	                length = data.readInt();

-				print(tagNames[type]+" "+length+"b "+int(100*length/data.length)+"%")
+				infoPrint(tagNames[type]+" "+length+"b "+int(100*length/data.length)+"%")
 				switch (type)
 				{
 				case 0: return
 				case stagDoABC2:
 					var pos1:int = data.position
 					data.readInt()
-					print("\nabc name "+readString())
+					infoPrint("\nabc name "+readString())
 					length -= (data.position-pos1)
 					// fall through
 				case stagDoABC:
@@ -1563,7 +1112,7 @@
 					data2.endian = "littleEndian"
 					data.readBytes(data2,0,length)
 					new Abc(data2).dump("  ")
-					print("")
+					infoPrint("")
 					break
 				default:
 					data.position += length
@@ -1657,16 +1206,16 @@

 	function help()
 	{
-		print('usage:  abcdump [-x] file...')
-		print('Displays the contents of an abc or swf file(s)')
-		print('  -a  writes out the abc contained within the swf')
+		print(usage);
 		System.exit(1)
 	}

 	function processArg(arg:String)
 	{
 		if (arg == '-a')
-			extractAbc = true;
+			doExtractAbc = true;
+		else if (arg == '-i')
+			doExtractInfo = true;
 		else
 		{
 			print('Unknown option '+arg)
@@ -1684,18 +1233,23 @@
 	}

 	// main
-	var extractAbc = false
+	var doExtractAbc = false
+	var doExtractInfo = false
 	var currentFname = ''
 	var currentFcount = 0
 	for each (var file in System.argv)
 	{
-		if (file.indexOf('-')>=0)
+		if (file.indexOf('-')==0)
 		{
 			processArg(file)
 			continue
 		}

-		currentFname = file.split('.')[0]
+		var x;
+		if ((x = file.lastIndexOf(".swf")) != -1 || (x = file.lastIndexOf(".swc")) != -1)
+		    currentFname = file.substring(0,x);
+		else
+			currentFname = file;
 		var data:ByteArray = ByteArray.readFile(file)
 		data.endian = "littleEndian"
 		var version:uint = data.readUnsignedInt()
@@ -1717,7 +1271,7 @@
 			data.readBytes(udata,0,data.length-data.position)
 			var csize:int = udata.length
 			udata.uncompress()
-			print("decompressed swf "+csize+" -> "+udata.length)
+			infoPrint("decompressed swf "+csize+" -> "+udata.length)
 			udata.position = 0
 		    /*var swf:Swf =*/ new Swf(udata)
 			break


Fix xpath for hasProperty command

Fix xpath for hasProperty command

--- src/aerys/minko/type/xpath/XPathEvaluator.as
+++ src/aerys/minko/type/xpath/XPathEvaluator.as
@@ -346,7 +346,8 @@

 			while (operator == '.')
 			{
-				chunks.push(operator);
+				//chunks.push(operator);
+				chunks.push(lexer.getToken(true));
 				operator = lexer.getToken(true);
 			}

@@ -358,7 +359,8 @@
 			{
 				try
 				{
-					getValueObject(selection[i], chunks);
+					if (getValueObject(selection[i], chunks) == null)
+						removeFromSelection(i);
 				}
 				catch (e : Error)
 				{


Add a way to set the HTML text.
Oh yeah, links don't work unless the field is selectable. WHY?
Carbomb adobe.

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

--- src/as/com/threerings/flex/FlexUtil.as
+++ src/as/com/threerings/flex/FlexUtil.as
@@ -62,13 +62,21 @@
     /**
      * Create an uneditable/unselectable multiline Text widget with the specified text and width.
      */
-    public static function createText (text :String, width :int, style :String = null) :Text
+    public static function createText (
+        text :String, width :int, style :String = null, html :Boolean = false) :Text
     {
         var t :Text = new Text();
         t.styleName = style;
         t.width = width;
-        t.selectable = false;
-        t.text = text;
+        if (html) {
+            // I want selectable = false here too, but that makes links not work. They still
+            // have a hand cursor, you can still click the fucking things, but they don't
+            // work. WHY ADOBE WHY YOU RANCID PIEFUCKERS?
+            t.htmlText = text;
+        } else {
+            t.selectable = false;
+            t.text = text;
+        }
         return t;
     }


No spurious \n with stderr.

No spurious \n with stderr.

	* build-aux/base.as (stderr): Don't issue an additional \n.

--- build-aux/base.as
+++ build-aux/base.as
@@ -148,7 +148,11 @@
   do
     echo >&2 "$as_me: $i"
   done
-  echo >&2
+# This line is a nuisance in usual output, yet it makes sense in debug
+# output in RST files.  But the problem should be solved there
+# instead.
+#
+#  echo >&2
 }

 # verbose LINES


fix for IsoGroup

fix for IsoGroup

--- fp10/src/as3isolib/display/IsoGroup.as
+++ fp10/src/as3isolib/display/IsoGroup.as
@@ -141,6 +141,8 @@
 		///////////////////////////////////////////////////////////////////////
 		//	ISO GROUP
 		///////////////////////////////////////////////////////////////////////
+
+      public var renderer:ISceneLayoutRenderer = new SimpleSceneLayoutRenderer();

 		/**
 		 * @inheritDoc
@@ -154,7 +156,8 @@
 				if (!bSizeSetExplicitly)
 					calculateSizeFromChildren();

-				var renderer:ISceneLayoutRenderer = new SimpleSceneLayoutRenderer();
+				if (!renderer)
+               renderer = new SimpleSceneLayoutRenderer();
 				renderer.renderScene(this);

 				bIsInvalidated = false;


Transferred from the Adobe Open Source Subversion Repository

Revision: 12469
Author:   jimurphy@adobe.com
Date:     2009-12-03T22:04:16.560316Z

Log Message:
-----------
fix offsets for FB.  Convert line ending from lf to crlf in svn for the proects directory only.  When checking project files in, be sure to save you files this way.  Another update to make sure happens is set the svn properties svn:eol-style = native and svn:mime-type = text/plain (these have been updated on theses files as well)

QE notes: make sure the proper class is selected
Doc notes: no
Bugs: http://bugs.adobe.com/jira/browse/SDK-24498
Reviewer:
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
133 paths were modified

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

--- frameworks/projects/framework/src/mx/validators/NumberValidatorDomainType.as
+++ frameworks/projects/framework/src/mx/validators/NumberValidatorDomainType.as
@@ -54,4 +54,4 @@
 	 */
 	public static const REAL:String = "real";
 }
-}+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 88
Author:   open-source-svn-admin@adobe.com
Date:     2008-01-03T22:47:56.499469Z

Log Message:
-----------
Perforce Change 191925 by proberts@proberts-laptop-flex on 2008/01/03 16:47:12 Severity: ignore Details: doc additions/clean up for FlexNativeMenu. Also FLEXDOCS-320 (update documentation for FlexNativeMenuEvent.MENU_SHOW to explain that the index, label, and item properties are null) Affected files ...

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/in/air/air_version.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/Consumer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/NoChannelAvailableError.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/rpc/src/mx/messaging/channels/DirectHTTPChannel.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/frameworks/projects/rpc/src/mx/messaging/config/ServerConfig.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/rpc/src/mx/messaging/channels/StreamingConnectionHandler.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/HTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/MessagingError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/InvalidChannelError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/AbstractProducer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/MessageSerializationError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/config/ConfigMap.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/Channel.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/rpc/src/mx/messaging/channels/SecureStreamingAMFChannel.as</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/rpc/src/mx/messaging/channels/StreamingHTTPChannel.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/rpc/src/mx/messaging/AbstractConsumer.as</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/rpc/src/mx/messaging/channels/SecureStreamingHTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXContext.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/AMFChannel.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/rpc/src/mx/messaging/channels/PollingChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/lib/flex-messaging-common.jar</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/NetConnectionChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/mxml/RemoteObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/SecureAMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/StreamingAMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/Grammar.jj</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ConsumerMessageDispatcher.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/SecureHTTPChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/InvalidDestinationError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXResult.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/AbstractMessageStore.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/errors/MessageSerializationError.as
+++ frameworks/projects/rpc/src/mx/messaging/errors/MessageSerializationError.as
@@ -1,21 +1,14 @@
-/*************************************************************************
- *
- * ADOBE CONFIDENTIAL
- * __________________
- *
- *  [2002] - [2007] Adobe Systems Incorporated
- *  All Rights Reserved.
- *
- * NOTICE:  All information contained herein is, and remains
- * the property of Adobe Systems Incorporated and its suppliers,
- * if any.  The intellectual and technical concepts contained
- * herein are proprietary to Adobe Systems Incorporated
- * and its suppliers and may be covered by U.S. and Foreign Patents,
- * patents in process, and are protected by trade secret or copyright law.
- * Dissemination of this information or reproduction of this material
- * is strictly forbidden unless prior written permission is obtained
- * from Adobe Systems Incorporated.
- */
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.messaging.errors
 {

@@ -59,4 +52,4 @@
     public var fault:ErrorMessage;
 }

-}+}


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

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


formatting; unused import

formatting; unused import

--- exporter/src/main/as/flump/xfl/XflMovie.as
+++ exporter/src/main/as/flump/xfl/XflMovie.as
@@ -3,14 +3,13 @@

 package flump.xfl {

-import flump.display.Movie;
+import com.threerings.util.Set;
+import com.threerings.util.Sets;
+import com.threerings.util.XmlUtil;
+
 import flump.mold.KeyframeMold;
 import flump.mold.LayerMold;
 import flump.mold.MovieMold;
-
-import com.threerings.util.Set;
-import com.threerings.util.Sets;
-import com.threerings.util.XmlUtil;

 public class XflMovie
 {
@@ -57,7 +56,7 @@
             }
         } else {
             for each (var layerEl :XML in layerEls) {
-                var layerType:String = XmlUtil.getStringAttr(layerEl, "layerType", "");
+                var layerType :String = XmlUtil.getStringAttr(layerEl, "layerType", "");
                 if ((layerType != "guide") && (layerType != "folder")) {
                     movie.layers.unshift(XflLayer.parse(lib, location, layerEl, false));
                 }


minor code cleanup

minor code cleanup

--- src/AIR/ChildBrowser/src/blackberry/polarmobile/childbrowser/ChildBrowser.as
+++ src/AIR/ChildBrowser/src/blackberry/polarmobile/childbrowser/ChildBrowser.as
@@ -1,25 +1,25 @@
+/**
+ * Author: Shane Jonas
+ * Child Browser Implimentation for the Playbook
+ */
+
 package blackberry.polarmobile.childbrowser
 {
-
-    import json.JSON;
-
+    // flash
     import flash.geom.Rectangle;
     import flash.display.Stage;
     import flash.events.MouseEvent;
     import flash.display.Sprite;
     import flash.events.StageOrientationEvent;

-    import qnx.locale.LocaleManager;
+    // qnx
     import qnx.media.QNXStageWebView;
     import qnx.ui.buttons.IconButton;
     import qnx.ui.skins.buttons.OutlineButtonSkinBlack;

+    // webworks
     import webworks.extension.DefaultExtension;

-    /**
-     * Author: Shane Jonas
-     *
-     */

     public class ChildBrowser extends DefaultExtension
     {
@@ -29,14 +29,20 @@
         private var bgshape:Sprite;
         private var browserHeight;

+        //icons
         [Embed(source="assets/close.png")]
         public static var Close:Class;
-
         [Embed(source="assets/refresh.png")]
         public static var Refresh:Class;

-        public function ChildBrowser() {
+        public function ChildBrowser()
+        {
             super();
+        }
+
+        override public function getFeatureList():Array
+        {
+            return new Array ("blackberry.polarmobile.childbrowser");
         }

         private function initBG()
@@ -47,20 +53,17 @@
             webView.stage.addChildAt(bgshape, 0);
         }

-        override public function getFeatureList():Array {
-            return new Array ("blackberry.polarmobile.childbrowser");
-        }

         public function loadURL(url:String)
         {
-            browserHeight = webView.stage.stageHeight - 50
+            browserHeight = webView.stage.stageHeight - 50;
             initBG();

             //only ever create one web view
             if (childWebView == null)
             {
-                childWebView = new QNXStageWebView("ChildBrowser")
-                childWebView.stage = webView.stage
+                childWebView = new QNXStageWebView("ChildBrowser");
+                childWebView.stage = webView.stage;
                 childWebView.viewPort = new Rectangle(0,50,webView.stage.stageWidth,browserHeight);
             }

@@ -75,14 +78,15 @@
           childWebView.loadURL(url);

           //build buttons
-          this.initUI()
+          this.initUI();

           // events
           webView.stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, onOrientationChange);

         }

-        private function onOrientationChange(event:StageOrientationEvent){
+        private function onOrientationChange(event:StageOrientationEvent)
+        {
             removeUI();
             initBG();
             initUI();
@@ -149,12 +153,14 @@
           closeButton.setIcon(new Close());
           closeButton.setSize(266, 50);
           closeButton.setPosition(-5, 0);
-          closeButton.setSkin(new OutlineButtonSkinBlack())
+          closeButton.setSkin(new OutlineButtonSkinBlack());
           closeButton.addEventListener(MouseEvent.CLICK, closeCLICK);
           addChild(closeButton);
         }

-        private function addRefresh(){
+        //refresh button
+        private function addRefresh()
+        {
           refreshButton = new IconButton();
           refreshButton.setIcon(new Refresh());
           refreshButton.setSize(266, 50);
@@ -165,18 +171,19 @@
         }

         // UI Buttons
-        private function initUI(){
-          addClose()
-          addRefresh()
+        private function initUI()
+        {
+          addClose();
+          addRefresh();
         }

         // our own addChild implementation
-        // (maps back to stage of WebWorkAppTemplate.as; no explicit typing)
+        // maps back to stage of WebWorkAppTemplate.as
         private function addChild(obj)
         {
           webView.stage.addChild(obj);
           //always set added obj's to top
-          webView.stage.setChildIndex(obj, webView.stage.numChildren -1)
+          webView.stage.setChildIndex(obj, webView.stage.numChildren -1);
         }

         private function removeChild(obj)


removed a trace

removed a trace

--- src/flexlib/css/CSSPropertyInjector.as
+++ src/flexlib/css/CSSPropertyInjector.as
@@ -238,8 +238,6 @@
             {
                 styles.push( propName );
             }
-
-            trace( styles, "\n" );
         }

         if ( target != null )


removed unnecessary variable

removed unnecessary variable

--- frameworks/projects/XML/src/main/flex/XMLList.as
+++ frameworks/projects/XML/src/main/flex/XMLList.as
@@ -664,8 +664,7 @@
 		COMPILE::JS
 		public function setChild(elementName:*, elements:Object):void
 		{
-			var len:int = _xmlArray.length;
-			if(len == 1)
+			if(_xmlArray.length == 1)
 				_xmlArray[0].setChild(elementName,elements);

 		}


- change: rolled back multiline CSS property parser changes

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

--- src/reprise/css/propertyparsers/Font.as
+++ src/reprise/css/propertyparsers/Font.as
@@ -42,7 +42,7 @@
 			textTransform : {parser : strToStringProperty, inheritable : true},
 			letterSpacing : {parser : strToFloatProperty, inheritable : true},
 			leading : {parser : strToIntProperty, inheritable : true},
-			multiline : {parser : parseMultiline, transition : BooleanTransitionVO},
+			multiline : {parser : strToBoolProperty, transition : BooleanTransitionVO},
 			wordWrap : {parser : strToStringProperty},
 			selectable : {parser : strToBoolProperty, transition : BooleanTransitionVO},
 			fontVariant : {parser : strToStringProperty},
@@ -70,11 +70,6 @@
 			return strToBoolProperty(val, file, ['fix']);
 		}

-		private static function parseMultiline(val:String, file:String) : CSSProperty
-		{
-			return strToBoolProperty(val, file, ['multiline']);
-		}
-
 		private static function parseRasterizeDeviceFonts(
 			val:String, file:String) : CSSProperty
 		{