Transferred from the Adobe Open Source Subversion Repository

Revision: 12662
Author:   rfrishbe@adobe.com
Date:     2009-12-08T20:09:58.468617Z

Log Message:
-----------
Fixing a bunch of bugs for video player:

- Adding a "complete" event to VideoDisplay/VideoPlayer for when the playback has finished
- Adding metadata to the video resources passed in to OSMF so that it knows we're dealing with Video objects and can help resolve ambiguous URLs in terms of media type.
- Fixed up some fullScreen logic so that it works on MX Application and with Applications with controlBars.  It now uses PopUpManager.addPopUp() and sets explicitWidth/explicitHeight.

QE notes: -
Doc notes: -
Bugs: SDK-24531, SDK-24487, SDK-24484, SDK-24593
Reviewer: Evtim
Tests run: checkintests
Is noteworthy for integration: Yes (new "complete" event)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/osmf/src/org/osmf/composition/CompositeTemporalTrait.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/osmf/src/org/osmf/traits/TemporalTrait.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/osmf/src/org/osmf/traits/ITemporal.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VideoDisplay.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/osmf/src/org/osmf/events/TimeEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/osmf/src/org/osmf/proxies/TemporalProxyElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/osmf/src/org/osmf/proxies/ListenerProxyElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/VideoPlayerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/osmf/src/org/osmf/media/MediaPlayer.as</path>

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

--- frameworks/projects/spark/src/spark/components/VideoPlayer.as
+++ frameworks/projects/spark/src/spark/components/VideoPlayer.as
@@ -27,6 +27,7 @@
 import mx.core.IVisualElementContainer;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
+import mx.managers.PopUpManager;
 import mx.utils.BitFlagUtil;

 import org.osmf.events.LoadEvent;
@@ -62,9 +63,21 @@
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 1.0
- *  @productversion OSMF 1.0
+ *  @productversion Flex 4
  */
 [Event(name="bytesLoadedChange",type="org.osmf.events.LoadEvent")]
+
+/**
+ *  Dispatched when the playhead reaches the duration for playable media.
+ *
+ *  @eventType org.osmf.events.TimeEvent.COMPLETE
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.0
+ *  @productversion Flex 4
+ */
+[Event(name="complete", type="org.osmf.events.TimeEvent")]

 /**
  *  Dispatched when the currentTime property of the MediaPlayer has changed.
@@ -74,8 +87,8 @@
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 1.0
- *  @productversion OSMF 1.0
- **/
+ *  @productversion Flex 4
+ */
 [Event(name="currentTimeChange",type="org.osmf.events.TimeEvent")]

 /**
@@ -86,7 +99,7 @@
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 1.0
- *  @productversion OSMF 1.0
+ *  @productversion Flex 4
  */
 [Event(name="durationChange", type="org.osmf.events.TimeEvent")]

@@ -98,7 +111,7 @@
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 1.0
- *  @productversion OSMF 1.0
+ *  @productversion Flex 4
  */
 [Event(name="mediaPlayerStateChange", type="org.osmf.events.MediaPlayerStateChangeEvent")]

@@ -1459,6 +1472,7 @@
             videoDisplay.addEventListener(LoadEvent.BYTES_LOADED_CHANGE, videoDisplay_bytesLoadedChangeHandler);
             videoDisplay.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoDisplay_mediaPlayerStateChangeHandler);
             videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, videoDisplay_durationChangeHandler);
+            videoDisplay.addEventListener(TimeEvent.COMPLETE, dispatchEvent);

             // just strictly for binding purposes
             videoDisplay.addEventListener("sourceChanged", dispatchEvent);
@@ -1742,6 +1756,7 @@
             videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, videoDisplay_bytesLoadedChangeHandler);
             videoDisplay.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoDisplay_mediaPlayerStateChangeHandler);
             videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, videoDisplay_durationChangeHandler);
+            videoDisplay.removeEventListener(TimeEvent.COMPLETE, dispatchEvent);

             // just strictly for binding purposes
             videoDisplay.removeEventListener("sourceChanged", dispatchEvent);
@@ -2086,11 +2101,9 @@
             beforeFullScreenInfo = {parent: this.parent,
                 x: this.x,
                 y: this.y,
-                width: this.getPreferredBoundsWidth(false),
-                height: this.getPreferredBoundsHeight(false),
-                includeInLayout: this.includeInLayout};
-
-            includeInLayout = false;
+                explicitWidth: this.explicitWidth,
+                explicitWidth: this.explicitWidth};
+
             pauseWhenHidden = false;

             // remove from old parent
@@ -2106,19 +2119,19 @@
                 parent.removeChild(this);
             }

-            // add to new parent
-            if (FlexGlobals.topLevelApplication is IVisualElementContainer)
-                IVisualElementContainer(FlexGlobals.topLevelApplication).addElement(this);
-            else
-                FlexGlobals.topLevelApplication.addChild(this);
+            // add as a popup
+            PopUpManager.addPopUp(this, FlexGlobals.topLevelApplication as DisplayObject);

             // Resize the component to be the full screen of the stage.
             // Push the component at (0,0).  It should be on top of everything
-            // at this point because it was added directly to the application.
+            // at this point because it was added as a popup
             setLayoutBoundsSize(stage.fullScreenWidth, stage.fullScreenHeight, true);
+            // set the explicit width/height to make sure this value sticks regardless
+            // of any other code or layout passes.  Calling setLayoutBoundsSize() before hand
+            // allows us to use postLayout width/height
+            this.explicitWidth = width;
+            this.explicitHeight = height;
             setLayoutBoundsPosition(0, 0, true);
-            invalidateSize();
-            invalidateDisplayList();

             // this is for video performance reasons, but sometimes the videoObject isn't there
             // if the source is null
@@ -2233,7 +2246,8 @@
         // reset it so we're re-included in the layout
         this.x = beforeFullScreenInfo.x;
         this.y = beforeFullScreenInfo.y;
-        this.setLayoutBoundsSize(beforeFullScreenInfo.width, beforeFullScreenInfo.height);
+        this.explicitWidth = beforeFullScreenInfo.explicitWidth;
+        this.explicitHeight = beforeFullScreenInfo.explicitHeight;

         // sometimes there's no video object currently or there might not've been a
         // video object when we went in to fullScreen mode.  There may be no videoObject
@@ -2245,23 +2259,13 @@
         }

         // remove from top level application:
-        if (parent is IVisualElementContainer)
-        {
-            var ivec:IVisualElementContainer = IVisualElementContainer(parent);
-            ivec.removeElement(this);
-        }
-        else
-        {
-            parent.removeChild(this);
-        }
+        PopUpManager.removePopUp(this);

         // add back to original parent
         if (beforeFullScreenInfo.parent is IVisualElementContainer)
             beforeFullScreenInfo.parent.addElementAt(this, beforeFullScreenInfo.childIndex);
         else
             beforeFullScreenInfo.parent.addChildAt(this, beforeFullScreenInfo.childIndex);
-
-        includeInLayout = beforeFullScreenInfo.includeInLayout;

         // want to update pauseWhenHidden, but can't do it here
         // b/c the AIR window thinks it's invisible at this point


Transferred from the Adobe Open Source Subversion Repository

Revision: 21593
Author:   aharui@adobe.com
Date:     2011-07-16T04:39:08.938529Z

Log Message:
-----------
Optimize Advanced CSS selector lookup.  Selectors are sorted into categories as they are registered so we can do quick elimination of some categories of selectors.

QE notes: New API in IAdvancedStyleClient
Doc notes: New API in IAdvancedStyleClient
Bugs: SDK-29880
Reviewer: Peter F
Tests run: Mustella Cyclone
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/styles/StyleProxy.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/styles/AdvancedStyleClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/styles/IStyleManager2.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/styles/IAdvancedStyleClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>

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

--- frameworks/projects/spark/src/spark/components/VideoPlayer.as
+++ frameworks/projects/spark/src/spark/components/VideoPlayer.as
@@ -1508,6 +1508,9 @@
      */
     override protected function getCurrentSkinState():String
     {
+        if (!videoDisplay || !videoDisplay.videoPlayer)
+            return null;
+
         var state:String = videoDisplay.videoPlayer.state;

         // now that we have our video player's current state (atleast the one we care about)


Transferred from the Adobe Open Source Subversion Repository

Revision: 19635
Author:   aharui@adobe.com
Date:     2011-01-07T00:25:18.039632Z

Log Message:
-----------
revert the layout changes from svn 18635.  Management feels that there isn't enough time to thoroughly test the changes.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/layoutClasses/PriorityQueue.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Application.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/SkinnableContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/BitmapImage.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/BasicLayout.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/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LinearLayoutVector.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/IContainerInvalidating.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ILayoutManagerContainerClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/IStyleManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ILayoutElement.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/gridClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Container.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/BitmapImage.as
+++ frameworks/projects/spark/src/spark/primitives/BitmapImage.as
@@ -946,9 +946,6 @@
             measuredHeight = !isNaN(_preliminaryHeight) && (previousHeight == 0) ?
                 _preliminaryHeight : previousHeight;

-            if (parent)
-                parent.dispatchEvent(new FlexEvent(FlexEvent.MEASURED_SIZE_PRELIMINARY, true, true));
-
             return;
         }

@@ -1721,9 +1718,6 @@

         dispatchEvent(event);

-        if (parent)
-            parent.dispatchEvent(new FlexEvent(FlexEvent.MEASURED_SIZE_FINAL, true, true));
-
         // Remove any event listeners from load-event dispatcher.
         clearLoadingContent();
     }


- asdoc test added missing apache header to SampleExperimental.as test file

--- asdoc/test/doc_src/SampleExperimental.as
+++ asdoc/test/doc_src/SampleExperimental.as
@@ -1,3 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
 package
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

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

--- frameworks/projects/automation/src/mx/automation/events/MarshalledAutomationEvent.as
+++ frameworks/projects/automation/src/mx/automation/events/MarshalledAutomationEvent.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


fix TransformController.updateTransformList() to avoid instanciating new vectors and use Vector.length = 0 instead

--- src/aerys/minko/scene/controller/TransformController.as
+++ src/aerys/minko/scene/controller/TransformController.as
@@ -368,14 +368,15 @@
             var oldWorldToLocalTransform    : Vector.<Matrix4x4>    = _worldToLocalTransforms;

             _nodeToId = new Dictionary(true);
-            _transforms = new <Matrix4x4>[];
-            _flags = new <uint>[];
-            _localToWorldTransforms = new <Matrix4x4>[];
-            _worldToLocalTransforms = new <Matrix4x4>[];
-            _numChildren = new <uint>[];
-            _firstChildId = new <uint>[];
-            _idToNode = new <ISceneNode>[];
-            _parentId = new <int>[-1];
+            _transforms.length = 0;
+            _flags.length = 0;
+            _localToWorldTransforms.length = 0;
+            _worldToLocalTransforms.length = 0;
+            _numChildren.length = 0;
+            _firstChildId.length = 0;
+            _idToNode.length = 0;
+            _parentId.length = 1;
+            _parentId[0] = -1;

             while (nodes.length)
             {


Change 20080923-maxcarlson-M by maxcarlson@Bank on 2008-09-23 12:26:55 PDT
    in /Users/maxcarlson/openlaszlo/trunk-clean
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Hand merge r11151 from pagan-deities to trunk

Bugs Fixed: LPP-7030 - Accessibility APIs broken

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

Details: Update accessibility APIs to use a per-sprite hash of properties.

Tests: See LPP-7030

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

--- WEB-INF/lps/lfc/kernel/swf/LzSprite.as
+++ WEB-INF/lps/lfc/kernel/swf/LzSprite.as
@@ -15,6 +15,7 @@
 var LzSprite = function(newowner, isroot) {
     if (newowner == null) return this;
     this.owner = newowner;
+    this._accProps = {};

     if (isroot) {
         this.isroot = true;
@@ -64,7 +65,7 @@
     ,history: true
 }

-/**
+/** Turns accessibility on by showing/hiding the global yellow flash focusrect
   * @param Boolean accessible
   */
 LzSprite.prototype.setAccessible = function(accessible) {
@@ -72,15 +73,21 @@
 }

 LzSprite.prototype.__setAAProperty = function (aaprop, val, btnval, mc) {
-    if (mc._accProps == null) mc._accProps = {};
-    mc._accProps[aaprop] = val;
-
-    if ((mc = this.__LZbuttonRef.but)){
-        if (mc._accProps == null) mc._accProps = {};
-        mc._accProps[aaprop] = btnval;
+    this._accProps[aaprop] = val;
+
+    mc._accProps = this._accProps;
+
+    if (this.__LZbuttonRef.but) {
+        this.__LZbuttonRef.but._accProps = this._accProps;
     }
     //LzBrowser.updateAccessibility();
 }
+
+/**
+  * @access private
+  * A cache of accessibility properties
+  */
+LzSprite.prototype._accProps = null;

 /**
   * Activate/inactivate children for accessibility
@@ -769,6 +776,8 @@
         if (this.showhandcursor == false) mc.but.useHandCursor = false;

         this.__LZbuttonRef = mc;
+        // Set accessibility props
+        this.__LZbuttonRef.but._accProps = this._accProps;
         this.setButtonSize = this._setButtonSize;
         this.setButtonSize( "width" , this.width );
         this.setButtonSize( "height" , this.height );


Transferred from the Adobe Open Source Subversion Repository

Revision: 6257
Author:   smgilson@adobe.com
Date:     2009-04-24T21:28:52.430843Z

Log Message:
-----------
ASDoc edits for effects

QE Notes: None
Doc Notes: None
Bugs: -
checkintests: passed

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/IAnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/IEaser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/RepeatBehavior.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EasingFraction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/Power.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/IInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/NumberInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/RGBInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/HSBInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/ArrayInterpolator.as</path>

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

--- frameworks/projects/spark/src/spark/effects/Scale.as
+++ frameworks/projects/spark/src/spark/effects/Scale.as
@@ -20,6 +20,7 @@
  *  in the x and y directions around the transform center.
  *  A scale of 2.0 means the object has been magnified by a factor of 2,
  *  and a scale of 0.5 means the object has been reduced by a factor of 2.
+ *  A scale value of 0.0 is invalid.
  *
  *  <p>Like all AnimateTransform-based effects, this effect will only work on subclasses
  *  of UIComponent and GraphicElement, as these effects depend on specific
@@ -82,6 +83,7 @@

     /**
      *  The starting scale factor in the y direction.
+     *  A scale value of 0.0 is invalid.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -97,7 +99,8 @@
     [Inspectable(category="General", defaultValue="NaN")]

     /**
-     * The ending scale factor in the y direction.
+     *  The ending scale factor in the y direction.
+     *  A scale value of 0.0 is invalid.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -133,7 +136,8 @@
     [Inspectable(category="General", defaultValue="NaN")]

     /**
-     * The starting scale factor in the x direction.
+     *  The starting scale factor in the x direction.
+     *  A scale value of 0.0 is invalid.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -149,7 +153,8 @@
     [Inspectable(category="General", defaultValue="NaN")]

     /**
-     * The ending scale factor in the x direction.
+     *  The ending scale factor in the x direction.
+     *  A scale value of 0.0 is invalid.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -165,11 +170,11 @@
     [Inspectable(category="General", defaultValue="NaN")]

     /**
-     * The factor by which to scale the object in the x direction.
-     * This is an optional parameter that can be used instead of one
-     * of the other from/to values to specify the delta to add to the
-     * from value or to derive the from value by subtracting from the
-     * to value.
+     *  The factor by which to scale the object in the x direction.
+     *  This is an optional parameter that can be used instead of one
+     *  of the other from/to values to specify the delta to add to the
+     *  from value or to derive the from value by subtracting from the
+     *  to value.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


fixed null pointer error

fixed null pointer error

--- WeaveData/src/weave/utils/ColumnUtils.as
+++ WeaveData/src/weave/utils/ColumnUtils.as
@@ -389,8 +389,12 @@
 			// get all the data values in the same order as the common keys
 			for (var cIndex:int = 0; cIndex < columns.length; cIndex++)
 			{
-				var dt:Class = dataType || DataType.getClass(column.getMetadata(ColumnMetadata.DATA_TYPE));
-				column = columns[cIndex];
+				column = columns[cIndex];
+
+				var dt:Class = dataType;
+				if (!dt && column)
+					dt = DataType.getClass(column.getMetadata(ColumnMetadata.DATA_TYPE));
+
 				var values:Array = [];
 				for (var kIndex:int = 0; kIndex < keys.length; kIndex++)
 				{


Added TODO: figure out when event should be cloned.
Restored the "write-once" comment that got lost.

git-svn-id: 3635f658cd63696bbccf5e31eb8660aa893cf08d@18 6e9afafe-9be5-11de-811b-9ff18243e0fd

--- src/com/robertpenner/signals/Signal.as
+++ src/com/robertpenner/signals/Signal.as
@@ -83,7 +83,8 @@
 			var event:IEvent = eventObject as IEvent;
 			if (event)
 			{
-				if (!event.target) event.target = this.target;
+				//TODO: figure out when the event should be cloned
+				if (!event.target) event.target = this.target; // write-once
 				event.currentTarget = this.target;
 				event.signal = this;
 			}


修复遗漏的分号

修复遗漏的分号

--- src/as/MP3Core.as
+++ src/as/MP3Core.as
@@ -122,7 +122,7 @@
             // 保证length和positionPct赋值正确。
             onPlayTimer();
             stop();
-            setState(S_END)
+            setState(S_END);
         }

         private function onPlayTimer(e:TimerEvent = null) {
@@ -260,7 +260,7 @@
                 context:SoundLoaderContext = new SoundLoaderContext(bufferTime, true);

             this.url = url;
-            setState(S_PREBUFFER)
+            setState(S_PREBUFFER);
             s.load(req, context);
         }

@@ -273,7 +273,7 @@
                 sc.addEventListener(Event.SOUND_COMPLETE, onPlayComplete);
                 setState(S_PLAYING);

-                playerTimer = new Timer(TIMER_INTERVAL)
+                playerTimer = new Timer(TIMER_INTERVAL);
                 playerTimer.addEventListener(TimerEvent.TIMER, onPlayTimer);
                 playerTimer.start();
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 19940
Author:   chiedozi@adobe.com
Date:     2011-01-25T22:15:05.923796Z

Log Message:
-----------
Removing Flash @playerversion tags from ASDocs for ViewNavigator components

QE notes:
Doc notes:
Bugs: SDK-29208
Reviewer: Ryan
Tests run:
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigatorApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewReturnObject.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorAction.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/events/ViewNavigatorEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as
@@ -27,7 +27,6 @@
  * @see spark.components.ViewNavigatorApplication
  *
  *  @langversion 3.0
- *  @playerversion Flash 10
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
@@ -42,7 +41,6 @@
      *  Constructor.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
@@ -63,7 +61,6 @@
      * The navigator for the application.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */


Added getTinyClassName().

Added getTinyClassName().

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

--- src/as/com/threerings/util/ClassUtil.as
+++ src/as/com/threerings/util/ClassUtil.as
@@ -17,6 +17,13 @@
         var dex :int = s.lastIndexOf(".");
         s = s.substring(dex + 1); // works even if dex is -1
         return s.replace("::", ".");
+    }
+
+    public static function tinyClassName (obj :Object) :String
+    {
+        var s :String = getClassName(obj);
+        var dex :int = s.lastIndexOf(".");
+        return s.substring(dex + 1); // works even if dex is -1
     }

     /**


:fire:

:fire:

--- index.as
+++ index.as
@@ -4509,50 +4509,6 @@
       }
     }
   }
-
-  // } else if gpu_mode == 3 {
-  //   // VRAM read mode, scanline active
-  //   // Treat end of mode 3 as end of scanline
-  //   if gpu_mode_clock >= 172 {
-  //     // Enter HBLANK
-  //     gpu_mode_clock = 0;
-  //     gpu_mode = 0;
-  //
-  //     // Render Scanline
-  //     gpu_render_scanline();
-  //   }
-  // } else if gpu_mode == 0 {
-  //   // HBLANK
-  //   // After the last hblank, render screen data
-  //   if gpu_mode_clock >= 204 {
-  //     gpu_mode_clock = 0;
-  //     gpu_line += 1;
-  //
-  //     if gpu_line == 144 {
-  //       // Enter VBLANK
-  //       gpu_mode = 1;
-  //
-  //       // Present rendered screen data
-  //       // sdl_render();
-  //       // TODO: gpu_present();
-  //     } else {
-  //       gpu_mode = 2;
-  //     }
-  //   }
-  // } else if gpu_mode == 1 {
-  //   // VBLANK
-  //   // VBLANK lasts for 10 lines
-  //   if gpu_mode_clock >= 456 {
-  //     gpu_mode_clock = 0;
-  //     gpu_line += 1;
-  //
-  //     if gpu_line > 153 {
-  //       // Restart scanning (back to the top)
-  //       gpu_mode = 2;
-  //       gpu_line = 0;
-  //     }
-  //   }
-  // }
 }

 def gpu_read(address: uint16): uint8 {


Updated ASDOC comments for the GridColumn.sortCompareType to be more descriptive.

--- frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
@@ -1451,7 +1451,20 @@
     private var _sortCompareType:String;

     /**
-     *  @inheritDoc
+	 *  The sortCompareType defines the valid constant values for the
+	 *  sortCompareType property of the SortField and GridColumn.
+	 *
+	 *
Use the constants in ActionsScript, as the following example shows:

+	 *

+	 *    column.sortCompareType = SortFieldCompareTypes.NUMERIC;
+	 *

+	 *
+	 *
In MXML, use the String value of the constants, as the following example shows:

+	 *

+	 *    <s:GridColumn sortCompareType="numeric" />
+	 *

+	 *
+     *  @see spark.collections.SortFieldCompareTypes
      *
      *  @langversion 3.0
      *  @playerversion Flash 11.8


improve PAT/PMT parsing

improve PAT/PMT parsing

more compliant with the spec
partial merge from https://github.com/r0ro/HLSprovider/commit/a881bdce2fa7f820e1ad87d6f400b16711963cec
prepare for multiple audio track support
all testing streams are still working fine after this change

--- src/org/mangui/HLS/muxing/TS.as
+++ src/org/mangui/HLS/muxing/TS.as
@@ -318,14 +318,14 @@
 			// Parse the PES, split by Packet ID.
 			switch (pid) {
 				case _patId:
-					todo -= _readPAT();
+					todo -= _readPAT(stt);
           if (_patParsed == false) {
              _patParsed = true;
              Log.debug("TS: PAT found.PMT PID:" + _pmtId);
           }
 					break;
 				case _pmtId:
-					todo -= _readPMT();
+					todo -= _readPMT(stt);
 			    if(_pmtParsed == false) {
 			      _pmtParsed = true;
 			      Log.debug("TS: PMT found.AVC,AAC,MP3 PIDs:" + _avcId + "," + _aacId + "," + _mp3Id);
@@ -373,49 +373,73 @@

 		/** Read the Program Association Table. **/
-		private function _readPAT():Number {
+		private function _readPAT(stt:uint):Number {
+			var pointerField:uint = 0;
+			if (stt) {
+				pointerField = _data.readUnsignedByte();
+				// skip alignment padding
+				_data.position += pointerField;
+			}
+			// skip table id
+			_data.position += 1;
+			// get section length
+			var sectionLen:uint = _data.readUnsignedShort() & 0x3FF;
 			// Check the section length for a single PMT.
-			_data.position += 3;
-			if(_data.readUnsignedByte() > 13) {
+			if (sectionLen > 13) {
 				throw new Error("Multiple PMT entries are not supported.");
 			}
 			// Grab the PMT ID.
 			_data.position += 7;
 			_pmtId = _data.readUnsignedShort() & 8191;
-			return 13;
+			return 13 + pointerField;
 		};

 		/** Read the Program Map Table. **/
-		private function _readPMT():Number {
+		private function _readPMT(stt:uint):Number {
+			var pointerField:uint = 0;
+			if (stt) {
+				pointerField = _data.readUnsignedByte();
+				// skip alignment padding
+				_data.position += pointerField;
+			}
+			// skip table id
+			_data.position += 1;
 			// Check the section length for a single PMT.
-			_data.position += 3;
-			var len:uint = _data.readByte();
+			var len:uint = _data.readUnsignedShort() & 0x3FF;
 			var read:uint = 13;
-			_data.position += 8;
-			var pil:Number = _data.readByte();
+			_data.position += 7;
+			// skip program info
+			var pil:uint = _data.readUnsignedShort() & 0x3FF;
 			_data.position += pil;
 			read += pil;
 			// reset fallback PIDs before parsing PMT
 			_aacFallbackId = _avcFallbackId = _mp3FallbackId = -1;
 			// Loop through the streams in the PMT.
 			while(read < len) {
+				// stream type
 				var typ:uint = _data.readByte();
-				var sid:uint = _data.readUnsignedShort() & 8191;
+				// stream pid
+				var sid:uint = _data.readUnsignedShort() & 0x1fff;
+				//Log.debug("type/pid:" + typ + "/" + sid);
 				if(typ == 0x0F) {
+				// ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)
           _aacId = _aacFallbackId = sid;
 				} else if (typ == 0x1B) {
+					// ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)
           _avcId = _avcFallbackId = sid;
 				} else if (typ == 0x03 || typ == 0x04) {
+					//    ISO/IEC 11172-3 (MPEG-1 audio)
+					// or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)
           _mp3Id = _mp3FallbackId = sid;
 				}
-				//  descriptor loop length
-				_data.position++;
-				var sel:uint = _data.readByte() & 0x3F;
+				//  es_info_length
+				var sel:uint = _data.readUnsignedShort() & 0xFFF;
 				_data.position += sel;
+				// loop to next stream
 				read += sel + 5;
 			}
-			return len;
+			return len + pointerField;
 		};
 	}
 }


修复text format导致unknown字段失踪的bug

修复text format导致unknown字段失踪的bug

--- as3/com/netease/protobuf/TextFormat.as
+++ as3/com/netease/protobuf/TextFormat.as
@@ -531,6 +531,7 @@
 			}
 			const normalBuffer:ByteArray = new ByteArray
 			buffer.toNormal(normalBuffer)
+			normalBuffer.position = 0
 			message.mergeFrom(normalBuffer)
 		}


now registering column stats as disposable children of the columns

Change-Id: I218d79c436b2128e8fa2706d590408e891fc5eb8

--- WeaveData/src/weave/data/StatisticsCache.as
+++ WeaveData/src/weave/data/StatisticsCache.as
@@ -92,8 +92,10 @@
 		}
 	}
 }
+import weave.api.core.IDisposableObject;
 import weave.api.data.IColumnWrapper;
 import weave.api.data.IStatisticsCache;
+import weave.api.registerDisposableChild;
 import weave.api.registerLinkableChild;
 import weave.core.SessionManager;

@@ -101,6 +103,7 @@
 {
 	public function ColumnStatisticsWrapper(columnWrapper:IColumnWrapper, statsCache:IStatisticsCache)
 	{
+		registerDisposableChild(columnWrapper, this);
 		this.columnWrapper = columnWrapper;
 		this.statsCache = statsCache;
 		columnWrapper.addImmediateCallback(this, getStats);
@@ -226,6 +229,7 @@
 {
 	public function ColumnStatistics(column:IAttributeColumn)
 	{
+		registerDisposableChild(column, this);
 		this.column = column;
 	}


Transferred from the Adobe Open Source Subversion Repository

Revision: 20015
Author:   klin@adobe.com
Date:     2011-01-31T17:51:43.656103Z

Log Message:
-----------
Add ASDoc example and copyright header for RuntimeDPIProvider. No code changes.

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

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/asdoc/en_US/mx/core/examples/RuntimeDPIProviderExample.as</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/asdoc/en_US/mx/core/examples/views</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/asdoc/en_US/mx/core/examples/views/RuntimeDPIProviderAppView.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/RuntimeDPIProvider.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/asdoc/en_US/mx/core/examples/RuntimeDPIProviderApp.mxml</path>

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

--- frameworks/projects/framework/asdoc/en_US/mx/core/examples/RuntimeDPIProviderExample.as
+++ frameworks/projects/framework/asdoc/en_US/mx/core/examples/RuntimeDPIProviderExample.as
@@ -0,0 +1,27 @@
+package
+{
+import flash.system.Capabilities;
+
+import mx.core.DPIClassification;
+import mx.core.RuntimeDPIProvider;
+
+public class RuntimeDPIProviderExample extends RuntimeDPIProvider
+{
+    public function RuntimeDPIProviderExample()
+    {
+    }
+
+    override public function get runtimeDPI():Number
+    {
+        // A tablet reporting an incorrect DPI of 240.
+        if (Capabilities.screenDPI == 240 &&
+            Capabilities.screenResolutionX == 600 &&
+            Capabilities.screenResolutionY == 1024)
+        {
+            return DPIClassification.DPI_160;
+        }
+
+        return super.runtimeDPI;
+    }
+}
+}


segment buffering - comment added

segment buffering - comment added

--- KalturaHLSPlugin/src/KalturaHLSPlugin.as
+++ KalturaHLSPlugin/src/KalturaHLSPlugin.as
@@ -73,8 +73,9 @@
         {
 			if ( e.resource && e.resource == _pluginResource ) {
 				e.target.removeEventListener(MediaFactoryEvent.PLUGIN_LOAD, onOSMFPluginLoaded);
-				if (segmentBuffer != -1)
-					HLSManifestParser.MAX_SEG_BUFFER = segmentBuffer;
+				if (segmentBuffer != -1){
+					HLSManifestParser.MAX_SEG_BUFFER = segmentBuffer; // if passed by JS, update static MAX_SEG_BUFFER with the new value
+				}
 				dispatchEvent( new KPluginEvent (KPluginEvent.KPLUGIN_INIT_COMPLETE) );
 			}


forceCrop workaround support added

forceCrop workaround support added

--- KalturaHLSPlugin/src/KalturaHLSPlugin.as
+++ KalturaHLSPlugin/src/KalturaHLSPlugin.as
@@ -18,10 +18,9 @@
 	import org.osmf.media.MediaResourceBase;
 	import org.osmf.media.PluginInfo;
 	import org.osmf.media.PluginInfoResource;
+	import org.osmf.net.httpstreaming.HLSHTTPStreamDownloader;
+	import org.osmf.net.httpstreaming.HLSHTTPStreamSource;
 	import org.puremvc.as3.interfaces.IFacade;
-
-	import org.osmf.net.httpstreaming.HLSHTTPStreamSource;
-	import org.osmf.net.httpstreaming.HLSHTTPStreamDownloader;

 	public class KalturaHLSPlugin extends Sprite implements IPluginFactory, IPlugin
 	{
@@ -38,6 +37,9 @@
 		private var _maxBitrate:int = -1; // maximum bitrate allowed for ABR while the video is playing (will be passed by JS at initial state)
 		private var _prefBitrate:int = -1; // prefared bitrate - the video will start playing on this bitrate and stay fixed on it (will be passed by JS at initial state)

+		private var _forceCrop_Y:Number = 0.0; // force crop workaround for Chrome - a pan factor. Goes from -1 to 1. See StageVideo zoom/pan for details.
+		private var _forceCrop_zoom_Y:Number = 1.0; // force crop workaround for Chrome - a zoom factor. Goes from 1.0 to 8.0. See StageVideo zoom/pan for details.
+
 		private var _sendLogs:Boolean = false;

         public function KalturaHLSPlugin()
@@ -106,6 +108,22 @@

 		public function set prefBitrate(value:int):void{
 			_prefBitrate = value;
+		}
+
+		public function get forceCrop_Y():Number{
+			return _forceCrop_Y;
+		}
+
+		public function set forceCrop_Y(value:Number):void{
+			_forceCrop_Y = value;
+		}
+
+		public function get forceCrop_zoom_Y():Number{
+			return _forceCrop_zoom_Y;
+		}
+
+		public function set forceCrop_zoom_Y(value:Number):void{
+			_forceCrop_zoom_Y = value;
 		}

 		public function get sendLogs():Boolean{
@@ -166,6 +184,14 @@
 				if (prefBitrate != -1){
 					HLSManifestParser.PREF_BITRATE = prefBitrate; // prefared bitrate - the video will start playing on this bitrate and stay fixed on it
 				}
+
+				if (forceCrop_Y != 0.0){
+					HLSManifestParser.FORCE_CROP_WORKAROUND_PAN_Y = forceCrop_Y; // force crop workaround for Chrome - a pan factor
+				}
+
+				if (forceCrop_zoom_Y != 1.0){
+					HLSManifestParser.FORCE_CROP_WORKAROUND_ZOOM_Y = forceCrop_zoom_Y; // force crop workaround for Chrome - a zoom factor
+				}

 				if (sendLogs){
 					M2TSFileHandler.SEND_LOGS = true;


TSDemuxer : correctly detect late audio signalling

related to #428

--- src/org/mangui/hls/demux/TSDemuxer.as
+++ src/org/mangui/hls/demux/TSDemuxer.as
@@ -79,6 +79,7 @@
         private var _timer : Timer;
         private var _totalBytes : uint;
         private var _audioOnly : Boolean;
+        private var _audioFound : Boolean;
         private var _audioSelected : Boolean;

         public static function probe(data : ByteArray) : Boolean {
@@ -129,6 +130,7 @@
             _tags = new Vector.<FLVTag>();
             _timer = new Timer(0, 0);
             _audioOnly = audioOnly;
+            _audioFound = false;
             _audioSelected = true;
         };

@@ -793,10 +795,10 @@
                             }
                             _pmtParsed = true;
                             _readPosition = 0;
-                            _unknownPIDFound = false;
                             return;
                         }
                         _pmtParsed = true;
+                        _unknownPIDFound = false;
                     }
                     break;
                 case _audioId:
@@ -881,10 +883,14 @@
                 default:
                 /* check for unknown PID :
                     video PID not defined and stream is not audio only OR
-                    audio PID not defined and audio selected
+                    audio PID not defined and audio not found
                     adding this condition is useful to avoid reporting unknown PIDs for streams with multiple audio PIDs for example ...
                 */
-                    if((_avcId ==-1 && !_audioOnly) || (_audioId ==-1 && _audioSelected)) {
+                    if((_avcId ==-1 && !_audioOnly) ||
+                       (_audioId ==-1 && !_audioFound)) {
+                        CONFIG::LOGGING {
+                            Log.debug("TS: unknown PID:" + pid);
+                        }
                         _unknownPIDFound = true;
                     }
                     break;
@@ -981,6 +987,7 @@
             }
             // provide audio track List to audio select callback. this callback will return the selected audio track
             var audioPID : int;
+            _audioFound = (audioList.length > 0);
             var audioTrack : AudioTrack = _callback_audioselect(audioList);
             if (audioTrack) {
                 audioPID = audioTrack.id;


Add alpha properties on spriteShader

Add alpha properties on spriteShader

--- src/aerys/minko/render/shader/sprite/SpriteShader.as
+++ src/aerys/minko/render/shader/sprite/SpriteShader.as
@@ -1,14 +1,13 @@
 package aerys.minko.render.shader.sprite
 {
+	import aerys.minko.render.material.basic.BasicProperties;
 	import aerys.minko.render.shader.SFloat;
 	import aerys.minko.render.shader.Shader;
 	import aerys.minko.render.shader.ShaderSettings;
 	import aerys.minko.render.shader.part.DiffuseShaderPart;
 	import aerys.minko.type.enum.Blending;
+	import aerys.minko.type.enum.BlendingSource;
 	import aerys.minko.type.enum.DepthTest;
-	import aerys.minko.type.enum.SamplerFiltering;
-	import aerys.minko.type.enum.SamplerMipMapping;
-	import aerys.minko.type.enum.SamplerWrapping;

 	public class SpriteShader extends Shader
 	{
@@ -25,8 +24,25 @@

 		override protected function initializeSettings(settings : ShaderSettings) : void
 		{
-//			settings.blending = Blending.ALPHA;
-			settings.depthTest = DepthTest.LESS;
+			var blending : uint = meshBindings.getProperty(
+				BasicProperties.BLENDING, Blending.OPAQUE
+			);
+			settings.depthWriteEnabled = meshBindings.getProperty(
+				BasicProperties.DEPTH_WRITE_ENABLED, true
+			);
+			settings.depthTest = meshBindings.getProperty(
+				BasicProperties.DEPTH_TEST, DepthTest.LESS
+			);
+
+			if ((blending & 0xff) == BlendingSource.SOURCE_ALPHA)
+			{
+				settings.priority -= 0.5;
+				settings.depthSortDrawCalls = true;
+			}
+
+			settings.blending			= blending;
+			settings.enabled			= true;
+			settings.scissorRectangle	= null;
 		}

 		override protected function getVertexPosition() : SFloat


Fix for test suite failures. Array handling vs Collection handling was busted

--- as3/xobjas3/src/com/rpath/xobj/XObjUtils.as
+++ as3/xobjas3/src/com/rpath/xobj/XObjUtils.as
@@ -357,16 +357,20 @@
                 }
             }

+            typeInfo.isArray = isTypeArray(typeInfo.typeName);
+            typeInfo.isCollection = isTypeCollection(typeInfo.typeName);
+
             if (arrayElementType)
             {
-                typeInfo.isCollection = true;
                 typeInfo.arrayElementTypeName = arrayElementType;
                 typeInfo.arrayElementClass = XObjUtils.getClassByName(typeInfo.arrayElementTypeName);
             }
-            else // can't infer, so go ask directly
-            {
-                typeInfo.isArray = isTypeArray(typeInfo.typeName);
-                typeInfo.isCollection = isTypeCollection(typeInfo.typeName);
+
+            if (arrayElementType && !(typeInfo.isArray || typeInfo.isCollection))
+            {
+                // problem! Has an elementType but is neither array nor collection
+                // what is it, pray tell?
+                trace("Unknown iterable type");
             }

             if (typeInfo.typeName == "Object"


Branch merge

Branch merge

--- as3/smartform/src/com/rpath/raf/util/ValidationHelper.as
+++ as3/smartform/src/com/rpath/raf/util/ValidationHelper.as
@@ -30,14 +30,19 @@
     import mx.managers.ToolTipManager;
     import mx.validators.Validator;
     import mx.binding.utils.BindingUtils;
+    import mx.binding.utils.ChangeWatcher;

     [Bindable]
     public class ValidationHelper
     {
+        public var target:*;
+        private var cw:ChangeWatcher;
+
         public function ValidationHelper(vals:Array=null, target:*=null, property:String=null)
         {
-            if (target && property)
-                BindingUtils.bindProperty(target, property, this, ["isValid"], true, true);
+            this.target = target;
+            if (this.target && property)
+                cw = BindingUtils.bindProperty(this.target, property, this, ["isValid"], true, true);

             validators = vals;
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 21755
Author:   betravis@adobe.com
Date:     2011-08-01T18:25:08.599842Z

Log Message:
-----------
Updates to ToggleSwitch, fixing layout bugs and visual appearance tweaks

QE notes: None
Doc notes: None
Bugs:
SDK-30929 - thumb looks incorrect when ToggleSwitch initialized with selected=true
SDK-30870 - changing width on a certain state messes up ToggleSwitch skin
SDK-30854 - click doesn't trigger selection change in Android devices
SDK-30853 - label appears initially truncated when layout is specified in View
Reviewer: Kevin Lin
Tests run: checkintests, mustella
Is noteworthy for integration: Yes, update to ToggleSwitch and ToggleSwitchSkin

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/ToggleSwitchSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as
@@ -21,6 +21,7 @@
 import mx.core.UIComponent;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
+import mx.events.ResizeEvent;

 import spark.components.supportClasses.ToggleButtonBase;
 import spark.core.IDisplayText;
@@ -42,7 +43,7 @@
 /**
  *  Color applied to highlight the selected side of the ToggleSwitch
  *
- *  @default #3F7FBA
+ *  @default 0x3F7FBA
  *
  *  @langversion 3.0
  *  @playerversion AIR 3
@@ -64,6 +65,27 @@
  */
 [Style(name="slideDuration", type="Number", format="Time", inherit="no")]

+/**
+ *  Alpha of text shadows.
+ *
+ *  @default 0.65
+ *
+ *  @langversion 3.0
+ *  @playerversion AIR 3
+ *  @productversion Flex 4.5.2
+ */
+[Style(name="textShadowAlpha", type="Number", inherit="yes", minValue="0.0", maxValue="1.0", theme="mobile")]
+
+/**
+ *  Color of text shadows.
+ *
+ *  @default 0x000000
+ *
+ *  @langversion 3.0
+ *  @playerversion AIR 3
+ *  @productversion Flex 4.5.2
+ */
+[Style(name="textShadowColor", type="uint", format="Color", inherit="yes", theme="mobile")]

 //--------------------------------------
 //  Excluded APIs
@@ -94,6 +116,16 @@
  */
 public class ToggleSwitch extends ToggleButtonBase
 {
+    //----------------------------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //----------------------------------------------------------------------------------------------
+
+    /**
+     * The amount the mouse can move before we consider the event a drag and not a click
+     */
+    private static const MOUSE_MOVE_TOLERANCE:Number = 0.01;

     //----------------------------------------------------------------------------------------------
     //
@@ -104,7 +136,7 @@
     /**
      *  Constructor.
      *
-	 *  @langversion 3.0
+     *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
      */
@@ -113,6 +145,7 @@
         super();
         stickyHighlighting = true;
         animator = new Animation();
+        addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
     }

     //----------------------------------------------------------------------------------------------
@@ -166,7 +199,7 @@
      *  current position along the track is given by
      *  thumbPosition.
      *
-	 *  @langversion 3.0
+     *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
      */
@@ -178,7 +211,7 @@
      *  A skin part that defines the bounds along which the thumb can
      *  be dragged.
      *
-	 *  @langversion 3.0
+     *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
      */
@@ -229,8 +262,8 @@

     /**
      *  @private
-	 *  additional setup is performed on mouse events, before
-	 *  we start the animation
+     *  additional setup is performed on mouse events, before
+     *  we start the animation
      */
     mx_internal function set animator(value:Animation): void
     {
@@ -252,7 +285,7 @@
      *  The thumb's current position, ranging from 0, unselected,
      *  to 1, selected.
      *
-	 *  @langversion 3.0
+     *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
      */
@@ -276,15 +309,16 @@
         updateSkinDisplayList();
     }

-	/**
-	 *  @private
-	 */
-	override protected function attachSkin():void
-	{
-		super.attachSkin();
-		skin.addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
-	}
-
+    /**
+     *  @private
+     */
+    override protected function attachSkin():void
+    {
+        super.attachSkin();
+        skin.addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
+        skin.addEventListener(ResizeEvent.RESIZE, resizeHandler);
+    }
+
     /**
      *  @private
      */
@@ -333,10 +367,10 @@

             // holds the final value to be set when animation ends
             slideToPosition = newPosition;
-
+
             var duration:Number = slideDuration *
                 (Math.abs(thumbPosition - slideToPosition));
-			animateToPosition(animator, thumbPosition, newPosition, duration);
+            animateToPosition(animator, thumbPosition, newPosition, duration);
         }
         else
         {
@@ -344,65 +378,64 @@
             // or we should update immediately
             selected = positionToSelected(newPosition);
         }
-
-    }
-
-	/**
-	 *  Specify the new position the toggle switch should animate to
-	 *  during mouse drag.
-	 *  Selection does not update after the animation.
-	 */
-	private function moveToPosition(newPosition:Number):void
-    {
-		if (newPosition != thumbPosition)
-		{
-			// Finish any current animation before we start the next one.
-			if (animator.isPlaying)
-				stopAnimation();
-
-			animateToPosition(animator, thumbPosition, newPosition, MouseDragUtil.MAX_UPDATE_RATE);
-		}
-	}
-
-	/**
-	 *  Prepare the animator for use as a single animation to the edge of
-	 *  the track, or for use in a series of animations following mouse
-	 *  drag events.
-	 */
-	private function setupAnimator(animator:Animation, selectAtCompletion:Boolean):void
-    {
-		stopAnimation();
-
-		var animTarget:AnimationTargetHelper = animator.animationTarget as AnimationTargetHelper;
-		if (!animTarget)
-			animator.animationTarget = animTarget = new AnimationTargetHelper();
-
-		animTarget.updateFunction = animationUpdateHandler;
-		animator.motionPaths = new <MotionPath>[null];
-		if (selectAtCompletion)
-		{
-			animTarget.endFunction = animationEndHandler;
-			animator.easer = new Sine(0);
-		}
-		else
-		{
-			animTarget.endFunction = null;
-			animator.easer = new Linear();
-		}
-	}
-
-	/**
-	 *  Animate the thumb moving from startPosition to endPosition
-	 */
-	private function animateToPosition(animator:Animation, startPosition:Number, endPosition:Number, duration:Number):void
-    {
-		if (animator.isPlaying)
-			stopAnimation();
-		animator.duration = duration;
-		animator.motionPaths[0] = new SimpleMotionPath("position", startPosition, endPosition);
-		animator.play();
-	}
-
+    }
+
+    /**
+     *  Specify the new position the toggle switch should animate to
+     *  during mouse drag.
+     *  Selection does not update after the animation.
+     */
+    private function moveToPosition(newPosition:Number):void
+    {
+        if (newPosition != thumbPosition)
+        {
+            // Finish any current animation before we start the next one.
+            if (animator.isPlaying)
+                stopAnimation();
+
+            animateToPosition(animator, thumbPosition, newPosition, MouseDragUtil.MAX_UPDATE_RATE);
+        }
+    }
+
+    /**
+     *  Prepare the animator for use as a single animation to the edge of
+     *  the track, or for use in a series of animations following mouse
+     *  drag events.
+     */
+    private function setupAnimator(animator:Animation, selectAtCompletion:Boolean):void
+    {
+        stopAnimation();
+
+        var animTarget:AnimationTargetHelper = animator.animationTarget as AnimationTargetHelper;
+        if (!animTarget)
+            animator.animationTarget = animTarget = new AnimationTargetHelper();
+
+        animTarget.updateFunction = animationUpdateHandler;
+        animator.motionPaths = new <MotionPath>[null];
+        if (selectAtCompletion)
+        {
+            animTarget.endFunction = animationEndHandler;
+            animator.easer = new Sine(0);
+        }
+        else
+        {
+            animTarget.endFunction = null;
+            animator.easer = new Linear();
+        }
+    }
+
+    /**
+     *  Animate the thumb moving from startPosition to endPosition
+     */
+    private function animateToPosition(animator:Animation, startPosition:Number, endPosition:Number, duration:Number):void
+    {
+        if (animator.isPlaying)
+            stopAnimation();
+        animator.duration = duration;
+        animator.motionPaths[0] = new SimpleMotionPath("position", startPosition, endPosition);
+        animator.play();
+    }
+
     /**
      *  Set the thumb position and update the component
      */
@@ -458,24 +491,40 @@
         return globalTrackDims.x - globalThumbDims.x;
     }

-	/**
-	 *  Is an animation running that will result in setting selected
-	 */
-	private function isSelectionAnimationRunning():Boolean
-	{
-		return animator && animator.isPlaying && (AnimationTargetHelper(animator.animationTarget).endFunction != null);
-	}
-
-	/**
-	 *  Adjust the skin when it updates
-	 */
-	private function updateCompleteHandler(event:FlexEvent):void
-	{
-		updateSkinDisplayList();
-		skin.removeEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
-	}
-
-	//----------------------------------------------------------------------------------------------
+    /**
+     *  Is an animation running that will result in setting selected
+     */
+    private function isSelectionAnimationRunning():Boolean
+    {
+        return animator && animator.isPlaying && (AnimationTargetHelper(animator.animationTarget).endFunction != null);
+    }
+
+    /**
+     *  Adjust the skin when it updates
+     */
+    private function updateCompleteHandler(event:FlexEvent):void
+    {
+        updateSkinDisplayList();
+        skin.removeEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
+    }
+
+    /**
+     *  Adjust the skin after it has finished resizing
+     */
+    private function resizeHandler(event:ResizeEvent):void
+    {
+        skin.addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
+    }
+
+    /**
+     *  Adjust the thumb when the component is added
+     */
+    private function addedToStageHandler(event:Event):void
+    {
+        updateSkinDisplayList();
+    }
+
+    //----------------------------------------------------------------------------------------------
     //
     //  Overridden Event handlers
     //
@@ -502,8 +551,8 @@
     {
         if (isSelectionAnimationRunning())
             return;
-		setupAnimator(animator, true);
-
+        setupAnimator(animator, true);
+
         var newPosition:Number;

         if (mouseMoved)
@@ -533,7 +582,7 @@
     {
         if (isSelectionAnimationRunning())
             return;
-		setupAnimator(animator, false);
+        setupAnimator(animator, false);
         mouseMoved = false;
         stageOffset = new Point(event.stageX, event.stageY);
         positionOffset = thumbPosition;
@@ -552,9 +601,11 @@
     {
         if (mouseCaptured && track && thumb)
         {
-            mouseMoved = true;
             var deltaX:Number = (lastMouseX - stageOffset.x) / getGlobalTrackRange();
-			moveToPosition(positionOffset + deltaX);
+            // don't set mouseMoved unless the mouse position has changed
+            if (!mouseMoved && Math.abs(deltaX) > MOUSE_MOVE_TOLERANCE)
+                mouseMoved = true;
+            moveToPosition(positionOffset + deltaX);
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 3679
Author:   gruehle@adobe.com
Date:     2008-10-16T14:42:08.664756Z

Log Message:
-----------
Fix fasttrack bug SDK-17371: RTE when repopulating an FxList. When the list data provider is reset, clear out the current selection.

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -533,6 +533,8 @@
             }
             else if (ce.kind == CollectionEventKind.RESET)
             {
+                // Data provider is being reset, clear out the selection
+                _selectedIndex = -1;
             }
             else if (ce.kind == CollectionEventKind.UPDATE)
             {


added Compiler.memoize()

added Compiler.memoize()

--- WeaveCore/src/weave/compiler/Compiler.as
+++ WeaveCore/src/weave/compiler/Compiler.as
@@ -360,6 +360,28 @@
 				return function():*{ return func.apply(that, args.concat(arguments)); };
 			else
 				return function():*{ return func.apply(that, arguments); };
+		}
+
+		/**
+		 * Creates a memoized version of a Function.
+		 * The parameters passed to the memoized version of the Function must be JSON-serializable.
+		 * @param func The function to memoize.
+		 * @param bindThis Optional thisArg parameter to pass to func.apply().
+		 * @param bindArgs Optional arguments to bind that should appear before any additional arguments passed to the memoized function.
+		 * @return A memoized version of the function.
+		 * @see #bind
+		 */
+		public static function memoize(func:Function, bindThis:* = null, ...bindArgs):Function
+		{
+			var cache:Object = {};
+			return function(...args):* {
+				var str:String = stringify(args);
+				if (cache.hasOwnProperty(str))
+					return cache[str];
+				if (bindArgs.length)
+					return cache[str] = func.apply(bindThis, bindArgs.concat(args));
+				return cache[str] = func.apply(bindThis, args);
+			};
 		}

 		/**


fixed bug where SessionNavigator was disposing root target

--- WeaveUI/src/weave/ui/SessionNavigator.as
+++ WeaveUI/src/weave/ui/SessionNavigator.as
@@ -24,6 +24,7 @@
 	import mx.events.ListEvent;

 	import weave.api.core.ILinkableObject;
+	import weave.api.data.ColumnMetadata;
 	import weave.api.data.IAttributeColumn;
 	import weave.api.getCallbackCollection;
 	import weave.api.newLinkableChild;
@@ -33,7 +34,6 @@
 	import weave.core.LinkableWatcher;
 	import weave.core.SessionManager;
 	import weave.primitives.WeaveTreeItem;
-	import weave.utils.ColumnUtils;

 	public class SessionNavigator extends CustomTree implements ILinkableObject
 	{
@@ -69,8 +69,8 @@
 			private var _linkableObjectName:String;
 			private var _linkableObjectTypeFilter:Class = null;
 			private var _overrideSelectedItem:WeaveTreeItem;
-			private var _treeChanged:Boolean;
-			private const rootWatcher:LinkableWatcher = newLinkableChild(this, LinkableWatcher, invalidateList, true);
+			private var _rootObject:ILinkableObject;
+			private var _treeChanged:Boolean;

 			override public function initialize():void
 			{
@@ -117,18 +117,24 @@

 			public function set rootObject(value:ILinkableObject):void
 			{
-				if (rootWatcher.target == value)
+				if (_rootObject == value)
 					return;
-
-				rootWatcher.target = value;
-
-				if (value == WeaveAPI.globalHashMap)
+
+				if (_rootObject)
+					getCallbackCollection(_rootObject).removeCallback(invalidateList);
+
+				_rootObject = value;
+
+				if (_rootObject)
+					getCallbackCollection(_rootObject).addGroupedCallback(this, invalidateList);
+
+				if (_rootObject == WeaveAPI.globalHashMap)
 				{
 					_linkableObjectName = "Weave";
 				}
-				else if (value)
+				else if (_rootObject)
 				{
-					var path:Array = (WeaveAPI.SessionManager as SessionManager).getPath(WeaveAPI.globalHashMap, value);
+					var path:Array = (WeaveAPI.SessionManager as SessionManager).getPath(WeaveAPI.globalHashMap, _rootObject);
 					_linkableObjectName = path ? path[path.length - 1] : null;
 				}

@@ -136,12 +142,12 @@
 			}
 			public function get rootObject():ILinkableObject
 			{
-				return rootWatcher.target;
+				return _rootObject;
 			}

 			private function updateRootNode():void
 			{
-				var rootNode:WeaveTreeItem = (WeaveAPI.SessionManager as SessionManager).getSessionStateTree(rootWatcher.target, _linkableObjectName, _linkableObjectTypeFilter);
+				var rootNode:WeaveTreeItem = (WeaveAPI.SessionManager as SessionManager).getSessionStateTree(_rootObject, _linkableObjectName, _linkableObjectTypeFilter);
 				refreshDataProvider(rootNode);
 				expandItem(rootNode, true);
 			}
@@ -161,7 +167,7 @@
 				if (iowd)
 					description = iowd.getDescription();
 				else if (item.dependency is IAttributeColumn)
-					description = ColumnUtils.getTitle(item.dependency as IAttributeColumn);
+					description = (item.dependency as IAttributeColumn).getMetadata(ColumnMetadata.TITLE);

 				var inParens:String = editorLabel || description;
 				if (editorLabel && description)


Transferred from the Adobe Open Source Subversion Repository

Revision: 22448
Author:   build@adobe.com
Date:     2011-09-08T19:26:12.465737Z

Log Message:
-----------
Version update to 4.6.0

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/airspark/src/spark/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/automation_air/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/automation_spark/src/spark/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/flex-config.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/automation_spark/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/automation/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark_dmv/src/spark/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/rpc/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mx/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/automation_flashflexkit/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/automation_dmv/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/build.properties</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/modules/compiler/src/java/flex2/tools/VersionInfo.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/airframework/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/core/Version.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/advancedgrids/src/mx/core/Version.as</path>

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

--- frameworks/projects/automation_spark/src/spark/core/Version.as
+++ frameworks/projects/automation_spark/src/spark/core/Version.as
@@ -15,4 +15,4 @@
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.5.2.0";
+mx_internal static const VERSION:String = "4.6.0.0";


Transferred from the Adobe Open Source Subversion Repository

Revision: 18057
Author:   dloverin@adobe.com
Date:     2010-10-07T12:48:56.984897Z

Log Message:
-----------
Fix redispatching cancelable MouseEvents.

SystemManager:
•       Moved adding the listeners from initHandler to initializeTopLevelWindow() so it would be in the same location as in WindowedSystemManager. It’s easier to keep the two files in sync this way and should be early enough to get the job done.
•       mouseEventHandler: Test if the MouseEvent is an AIR mouse event. If it is then create an AIR MouseEvent indirectly.

WindowedSystemManager:
•       The MouseEvent code was not here before so I added the listeners to initializeTopLevelWindow() and added the event handlers, except the keyDown event handler. The keyDown event handler was not needed because AIR keyDown events are already cancelable.

QE notes: None.
Doc notes: None.
Bugs: SDK-27940
Reviewer: Alex
Tests run: cyclone server
Is noteworthy for integration: No.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>

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

--- frameworks/projects/framework/src/mx/managers/SystemManager.as
+++ frameworks/projects/framework/src/mx/managers/SystemManager.as
@@ -2450,21 +2450,6 @@
         if (!SystemManagerGlobals.parameters)
             SystemManagerGlobals.parameters = loaderInfo.parameters;

-        // This listener is intended to run before any other KeyboardEvent listeners
-        // so that it can redispatch a cancelable=true copy of the event.
-        if (getSandboxRoot() == this)
-        {
-            addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true, 1000);
-            addEventListener(MouseEvent.MOUSE_WHEEL, mouseEventHandler, true, 1000);
-            addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, true, 1000);
-        }
-        if (isTopLevelRoot() && stage)
-        {
-            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, false, 1000);
-            stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseEventHandler, false, 1000);
-            stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 1000);
-        }
-
         var docFrame:int = (totalFrames == 1)? 0 : 1;
         addEventListener(Event.ENTER_FRAME, docFrameListener);

@@ -2783,9 +2768,25 @@
         if (!e.cancelable)
         {
             e.stopImmediatePropagation();
-            var cancelableEvent:MouseEvent =
-                new MouseEvent(e.type, e.bubbles, true, e.localX, e.localY, e.relatedObject,
-                               e.ctrlKey, e.altKey, e.shiftKey, e.buttonDown, e.delta);
+            var cancelableEvent:MouseEvent = null;
+            if ("clickCount" in e)
+            {
+                // AIR MouseEvent. We need to use a constructor so we can
+                // pass in clickCount because it is a read-only property.
+                var mouseEventClass:Class = MouseEvent;
+
+                cancelableEvent = new mouseEventClass(e.type, e.bubbles, true, e.localX,
+                                e.localY, e.relatedObject, e.ctrlKey, e.altKey,
+                                e.shiftKey, e.buttonDown, e.delta,
+                                e["commandKey"], e["controlKey"], e["clickCount"]);
+            }
+            else
+            {
+                cancelableEvent = new MouseEvent(e.type, e.bubbles, true, e.localX,
+                                 e.localY, e.relatedObject, e.ctrlKey, e.altKey,
+                                 e.shiftKey, e.buttonDown, e.delta);
+            }
+
             e.target.dispatchEvent(cancelableEvent);
         }
     }
@@ -2830,6 +2831,21 @@
      */
     private function initializeTopLevelWindow(event:Event):void
     {
+        // This listener is intended to run before any other KeyboardEvent listeners
+        // so that it can redispatch a cancelable=true copy of the event.
+        if (getSandboxRoot() == this)
+        {
+            addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true, 1000);
+            addEventListener(MouseEvent.MOUSE_WHEEL, mouseEventHandler, true, 1000);
+            addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, true, 1000);
+        }
+        if (isTopLevelRoot() && stage)
+        {
+            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, false, 1000);
+            stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseEventHandler, false, 1000);
+            stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 1000);
+        }
+
         // Parent may be null if in another sandbox and don't have
         // access to our parent.  Add a check for this case.
         if (!parent && parentAllowsChild)


Transferred from the Adobe Open Source Subversion Repository

Revision: 4646
Author:   pfarland@adobe.com
Date:     2009-01-23T18:45:23.310008Z

Log Message:
-----------
As part of the Advanced CSS work, adding support for pseudo-selectors that match component states. There are two scenarios for matching states.

1. For skinnable Spark subclasses of FxComponents, such as FxButton. The pseudo-selector will be matched against the current skin state.

2. For other UIComponents, the pseudo-selector is matched against the currentState. Note that since states are declared at the document level, pseudo-selectors are written to match the component representing the document only (rather than an arbitrary child component of that document). Note that as with styles in general, it is not advised to make changes to inheriting styles at the Application root as this impacts all child components in the display list.

Note that further optimization will be investigated to limit the number of components that are redrawn where a change in state is accompanied by a matching pseudo-selector.

QE: Yes
Doc: Yes, see the Advanced CSS specification for Gumbo.
Checkintests: Pass
Reviewer: Glenn

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/core/UIComponent.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@1262651 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/styles/StyleProtoChain.as
+++ frameworks/projects/framework/src/mx/styles/StyleProtoChain.as
@@ -245,9 +245,9 @@
             }

             // Check for a global pseudo selector that matches our current state.
-            if (advancedObject.currentState)
-            {
-                styleDeclaration = StyleManager.getStyleDeclaration(":" + advancedObject.currentState);
+            if (advancedObject.pseudoSelectorState)
+            {
+                styleDeclaration = StyleManager.getStyleDeclaration(":" + advancedObject.pseudoSelectorState);
                 if (styleDeclaration)
                     styleDeclarations.push(styleDeclaration);
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 12693
Author:   rfrishbe@adobe.com
Date:     2009-12-09T07:52:53.869270Z

Log Message:
-----------
VideoPlayer/VideoDisplay fixes:

When the source is null, the bindings on some of the properties (specifically currentTime, duration, bytesLoaded, and bytesTotal) should fire.  In VideoPlayer, if you look at videoDisplay_mediaPlayerStateChangeHandler(), we are already doing the correct thing in there to make sure our VideoPlayer object looks correct.  However, if someone just binds to these values, they should also update.  To fix this, I added [Bindable("mediaPlayerStateChange")] on these properties.

Also, I noticed when setting the source to null, our size doesn’t invalidate.  So I cleaned up some logic around there.

Lastly, Flash Builder wants to make sure that resetting thumbnailSource or setting it to null is possible.  I cleaned up the logic to allow for the null case.

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

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

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

--- frameworks/projects/spark/src/spark/components/VideoDisplay.as
+++ frameworks/projects/spark/src/spark/components/VideoDisplay.as
@@ -483,6 +483,7 @@

     [Inspectable(Category="General", defaultValue="0")]
     [Bindable("bytesLoadedChange")]
+    [Bindable("mediaPlayerStateChange")]

     /**
      *  The number of bytes of data that have been downloaded into the application.
@@ -529,6 +530,7 @@

     [Inspectable(Category="General", defaultValue="0")]
     [Bindable("currentTimeChange")]
+    [Bindable("mediaPlayerStateChange")]

     /**
      *  Current time of the playhead, measured in seconds,
@@ -552,6 +554,7 @@

     [Inspectable(Category="General", defaultValue="0")]
     [Bindable("durationChange")]
+    [Bindable("mediaPlayerStateChange")]

     /**
      *  Duration of the video's playback, in seconds
@@ -947,6 +950,8 @@
         if (thumbnailSource)
         {
             var bitmapImage:BitmapImage;
+
+            // create thumbnail group if there isn't one
             if (!thumbnailGroup)
             {
                 bitmapImage = new BitmapImage();
@@ -958,14 +963,31 @@

                 thumbnailGroup = new Group();
                 thumbnailGroup.addElement(bitmapImage);
-                addChild(thumbnailGroup);
             }
             else
             {
                 bitmapImage = thumbnailGroup.getElementAt(0) as BitmapImage;
             }

+            // if thumbnailGroup isn't on the display list, then add it.
+            if (!this.contains(thumbnailGroup))
+                addChild(thumbnailGroup);
+
             bitmapImage.source = thumbnailSource;
+            invalidateSize();
+        }
+        else
+        {
+            if (thumbnailGroup)
+            {
+                // null out the source and remove the thumbnail group
+                bitmapImage = thumbnailGroup.getElementAt(0) as BitmapImage;
+                if (bitmapImage)
+                    bitmapImage.source = null;
+                if (this.contains(thumbnailGroup))
+                    removeChild(thumbnailGroup);
+                invalidateSize();
+            }
         }
     }

@@ -1312,7 +1334,7 @@
         videoPlayer.addEventListener(AudioEvent.MUTED_CHANGE, videoPlayer_mutedChangeHandler);

         // public events
-        videoPlayer.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, dispatchEvent);
+        videoPlayer.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoPlayer_mediaPlayerStateChangeHandler);
         videoPlayer.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, dispatchEvent);
         videoPlayer.addEventListener(LoadEvent.BYTES_LOADED_CHANGE, dispatchEvent);
         videoPlayer.addEventListener(TimeEvent.DURATION_CHANGE, dispatchEvent);
@@ -1411,8 +1433,14 @@
         if (!autoPlay && autoDisplayFirstFrame)
             load();

-
         videoPlayer.element = videoElement;
+
+        // if our source is null, let's invalidateSize() here.
+        // if it's a bad source, we'll get a playbackError and invalidate
+        // the size down there.  If it's a good source, we'll get a
+        // dimensionChange event and invalidate the size in there.
+        if (source == null)
+            invalidateSize();
     }

     /**
@@ -1426,7 +1454,7 @@
     {
         // wait until we can mute, play(), pause(), and seek() before doing anything.
         // We should be able to do all of these operations on the READY state change event.
-        videoPlayer.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoPlayer_mediaPlayerStateChangeHandler);
+        videoPlayer.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoPlayer_mediaPlayerStateChangeHandlerForLoading);
     }

     //--------------------------------------------------------------------------
@@ -1724,10 +1752,26 @@

     /**
      *  @private
-     *  Event handler for mediaPlayerStateChange event.  We only use this
+     *  Event handler for mediaPlayerStateChange event.
+     */
+    private function videoPlayer_mediaPlayerStateChangeHandler(event:MediaPlayerStateChangeEvent):void
+    {
+        // if the event change caused us to go in to a state where
+        // nothing is loaded up and we've no chance of getting a
+        // dimensionChangeEvent, then let's invalidate our size here
+        if (event.state == MediaPlayerState.PLAYBACK_ERROR)
+            invalidateSize();
+
+        // this is a public event, so let's re-dispatch it
+        dispatchEvent(event);
+    }
+
+    /**
+     *  @private
+     *  Event handler for mediaPlayerStateChange event--used only
      *  when trying to load up the video without playing it.
      */
-    private function videoPlayer_mediaPlayerStateChangeHandler(event:MediaPlayerStateChangeEvent):void
+    private function videoPlayer_mediaPlayerStateChangeHandlerForLoading(event:MediaPlayerStateChangeEvent):void
     {
         // only come in here when we want to load the video without playing it.

@@ -1735,7 +1779,7 @@
         if (event.state == MediaPlayerState.READY)
         {
             // now that we are loading up, let's remove the event listener:
-            videoPlayer.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoPlayer_mediaPlayerStateChangeHandler);
+            videoPlayer.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoPlayer_mediaPlayerStateChangeHandlerForLoading);

             // if we are already playing() for some reason because someone called play(), then
             // we don't need to do anything.


Oops, the dynamic members go in key/value formation.

--- tamarin-central/thane/AMF3Encoder.as
+++ tamarin-central/thane/AMF3Encoder.as
@@ -205,9 +205,6 @@
         // end with the dynamic keys
         for (ii = 0; ii < dynVars.length; ii ++) {
             encodeString(dynVars[ii]);
-        }
-        // and values
-        for (ii = 0; ii < dynVars.length; ii ++) {
             encodeValue(object[dynVars[ii]]);
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 11452
Author:   klin@adobe.com
Date:     2009-11-05T01:43:45.759633Z

Log Message:
-----------
Couple of various fixes.

ComboBox.as - The dropDown was not receiving changes to styles nor dataproviders. This was a result of not recreating the dropDown each time it was shown. I've changed the default of the flag for destroying the dropDown to be true. I've also modified the code to only not destroy the dropDown when it is showing or being shown.

ButtonBar.as - In one case, when calculating the percentage that each button takes of the width, there was a rounding error that caused the total percentage to be less than 100%. I've changed the code to use Numbers to avoid the rounding error.

DropDownList.as - I've fixed the page down code to take into account the case when selectedIndex==-1.

Label.as, SWFLoader.as, TextInput.as - Excluded baseColor style.

TitleWindowBoundsEvent.as - ASDoc change. "afterBounds" is always null when the "windowMoveStart" event is dispatched

QE notes: No
Doc notes: No
Bugs: SDK-21715, SDK-23338, SDK-23512, SDK-23838, SDK-23660
Reviewer: Chet
Tests run: checkintests, ButtonBar, ToggleButtonBar, tabnavigator
Is noteworthy for integration: No

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/spark/src/spark/components/DropDownList.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/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/events/TitleWindowBoundsEvent.as</path>

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

--- frameworks/projects/framework/src/mx/controls/SWFLoader.as
+++ frameworks/projects/framework/src/mx/controls/SWFLoader.as
@@ -252,6 +252,12 @@
  *  @productversion Flex 3
  */
 [Effect(name="completeEffect", event="complete")]
+
+//--------------------------------------
+//  Excluded APIs
+//--------------------------------------
+
+[Exclude(name="baseColor", kind="style")]

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 2905
Author:   clucier@adobe.com
Date:     2008-08-19T20:45:59.993275Z

Log Message:
-----------
Changes to allow UIComponent to take advantage of the new bindable filters (bindable wrappers around DropShadowFilter, GlowFilter, etc. that will force the filter stack to be re-evaluated when one or more of the filter parameters change). Checkin-tests: PASS
Reviewer: Jason
Bugs: SDK-16311
QA: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Parser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/ConvolutionFilter.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/BaseDimensionFilter.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/BaseDimensionFilter.as" copyfrom-rev="2873" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/filters/BaseDimensionFilter.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/IBitmapFilter.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/IBitmapFilter.as" copyfrom-rev="2873" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/filters/IBitmapFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/GradientGlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/GraphicElement.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/filters</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/BitmapGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/BevelFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/GradientFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/ColorMatrixFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/BlurFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/DisplacementMapFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/StrokedElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/GlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/BaseFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/DropShadowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/GradientBevelFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/BaseFilter.as" copyfrom-rev="2873" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/filters/BaseFilter.as</path>

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

--- frameworks/projects/framework/src/mx/filters/BaseFilter.as
+++ frameworks/projects/framework/src/mx/filters/BaseFilter.as
@@ -1,4 +1,4 @@
-package flex.filters
+package mx.filters
 {
 	import flash.events.EventDispatcher;
 	import flash.events.IEventDispatcher;
@@ -6,7 +6,7 @@

 	public class BaseFilter extends EventDispatcher
 	{
-		public static const FILTER_CHANGED_TYPE:String = "filterChanged";
+		public static const CHANGE:String = "change";

 		public function BaseFilter(target:IEventDispatcher=null)
 		{
@@ -15,7 +15,7 @@

 		public function notifyFilterChanged():void
 		{
-			dispatchEvent(new Event(FILTER_CHANGED_TYPE));
+			dispatchEvent(new Event(CHANGE));
 		}

 	}