You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2016/01/20 20:33:46 UTC

git commit: [flex-asjs] [refs/heads/develop] - Changed org.apache.flex.events.MouseEvent to inherit from flash.events.MouseEvent for AS3 only. Updated affected files.

Repository: flex-asjs
Updated Branches:
  refs/heads/develop 9d92d948b -> d56e155d9


Changed org.apache.flex.events.MouseEvent to inherit from flash.events.MouseEvent for AS3 only. Updated affected files.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/d56e155d
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/d56e155d
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/d56e155d

Branch: refs/heads/develop
Commit: d56e155d9dd34e89671d86b85cdc7954a07702c6
Parents: 9d92d94
Author: Peter Ent <pe...@apache.org>
Authored: Wed Jan 20 14:33:41 2016 -0500
Committer: Peter Ent <pe...@apache.org>
Committed: Wed Jan 20 14:33:41 2016 -0500

----------------------------------------------------------------------
 .../as/src/org/apache/flex/events/MouseEvent.as | 434 +++++++++++--------
 .../org/apache/flex/events/utils/MouseUtils.as  |   2 +-
 .../HTML/as/src/org/apache/flex/html/Button.as  |   2 +-
 .../as/src/org/apache/flex/html/CheckBox.as     |   5 +-
 .../as/src/org/apache/flex/html/RadioButton.as  |   5 +-
 .../org/apache/flex/html/ToggleTextButton.as    |  42 +-
 .../beads/controllers/DropDownListController.as |  15 +-
 .../controllers/ItemRendererMouseController.as  |   5 +-
 8 files changed, 296 insertions(+), 214 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d56e155d/frameworks/projects/Core/as/src/org/apache/flex/events/MouseEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/as/src/org/apache/flex/events/MouseEvent.as b/frameworks/projects/Core/as/src/org/apache/flex/events/MouseEvent.as
index 756438f..63bad5c 100644
--- a/frameworks/projects/Core/as/src/org/apache/flex/events/MouseEvent.as
+++ b/frameworks/projects/Core/as/src/org/apache/flex/events/MouseEvent.as
@@ -17,43 +17,38 @@
 //
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.events
-{	
+{
     COMPILE::AS3
     {
         import flash.events.MouseEvent;
+		import flash.display.InteractiveObject;
     }
     COMPILE::JS
     {
         import window.MouseEvent;
     }
-    
+
     import org.apache.flex.core.IUIBase;
     import org.apache.flex.geom.Point;
     import org.apache.flex.utils.PointUtils;
-    
-    
+
+
 	/**
 	 *  Mouse events
-     *  
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
 	 */
-	public class MouseEvent extends Event
+	COMPILE::AS3
+	public class MouseEvent extends flash.events.MouseEvent
 	{
         private static function platformConstant(s:String):String
         {
-            COMPILE::AS3
-            {
-                return s;
-            }
-            COMPILE::JS
-            {
-                return s.toLowerCase();
-            }
+            return s;
         }
-        
+
 		public static const MOUSE_DOWN:String = platformConstant("mouseDown");
         public static const MOUSE_MOVE:String = platformConstant("mouseMove");
 		public static const MOUSE_UP:String = platformConstant("mouseUp");
@@ -62,80 +57,39 @@ package org.apache.flex.events
 		public static const ROLL_OVER:String = platformConstant("rollOver");
 		public static const ROLL_OUT:String = platformConstant("rollOut");
         public static const CLICK:String = "click";
-        
+
          /**
          *  Constructor.
-         *  
+         *
          *  @param type The name of the event.
          *  @param bubbles Whether the event bubbles.
          *  @param cancelable Whether the event can be canceled.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
 		public function MouseEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false,
-                                   localX:Number = NaN, localY:Number = NaN, 
-                                   relatedObject:Object = null, 
-                                   ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false, 
-                                   buttonDown:Boolean = false, delta:int = 0, 
-                                   commandKey:Boolean = false, controlKey:Boolean = false, 
+                                   localX:Number = NaN, localY:Number = NaN,
+                                   relatedObject:Object = null,
+                                   ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false,
+                                   buttonDown:Boolean = false, delta:int = 0,
+                                   commandKey:Boolean = false, controlKey:Boolean = false,
                                    clickCount:int = 0)
 		{
-            COMPILE::AS3
-            {
-                super(type, bubbles, cancelable);                    
-            }
-            COMPILE::JS
-            {
-                super(type);
-            }
+			super(type, bubbles, cancelable);
+
             this.localX = localX;
             this.localY = localY;
-            this.relatedObject = relatedObject;
+            this.relatedObject = relatedObject as InteractiveObject;
             this.ctrlKey = ctrlKey;
             this.altKey = altKey;
             this.shiftKey = shiftKey;
             this.buttonDown = buttonDown;
             this.delta = delta;
-            this.commandKey = commandKey;
-            this.controlKey = controlKey;
-            this.clickCount = clickCount;
 		}
-        
-        private var _localX:Number;
-        public function get localX():Number
-        {
-            return _localX;
-        }
-        public function set localX(value:Number):void
-        {
-            _localX = value;
-            _stagePoint = null;
-        }
-        
-        private var _localY:Number;
-        public function get localY():Number
-        {
-            return _localY;
-        }
-        public function set localY(value:Number):void
-        {
-            _localY = value;
-            _stagePoint = null;
-        }
-        
-        public var relatedObject:Object;
-        public var ctrlKey:Boolean;
-        public var altKey:Boolean;
-        public var shiftKey:Boolean;
-        public var buttonDown:Boolean;
-        public var delta:int;
-        public var commandKey:Boolean;
-        public var controlKey:Boolean;
-        public var clickCount:int;
-        
+
         // these map directly to JS MouseEvent fields.
         public function get clientX():Number
         {
@@ -153,9 +107,9 @@ package org.apache.flex.events
         {
             localY = value;
         }
-        
+
         private var _stagePoint:Point;
-        
+
         public function get screenX():Number
         {
             if (!target) return localX;
@@ -166,7 +120,7 @@ package org.apache.flex.events
             }
             return _stagePoint.x;
         }
-        
+
         public function get screenY():Number
         {
             if (!target) return localY;
@@ -175,116 +129,238 @@ package org.apache.flex.events
                 var localPoint:Point = new Point(localX, localY);
                 _stagePoint = PointUtils.localToGlobal(localPoint, target);
             }
-            return _stagePoint.y;            
-        }
-        
-        /**
-         * @private
-         */
-        COMPILE::JS
-        private static function installRollOverMixin():Boolean
-        {
-            window.addEventListener(MOUSE_OVER,
-                mouseOverHandler, false);
-            return true;
-        }
-        
-        
-        /**
-         * @param e The event.
-         * RollOver/RollOut is entirely implemented in mouseOver because
-         * when a parent and child share an edge, you only get a mouseout
-         * for the child and not the parent and you need to send rollout
-         * to both.  A similar issue exists for rollover.
-         */
-        COMPILE::JS
-        private static function mouseOverHandler(e:MouseEvent):void
-        {
-            var j:int;
-            var m:int;
-            var outs:Array;
-            var me:window.MouseEvent;
-            var parent:Object;
-            var target:Object = e.target.flexjs_wrapper;
-            if (target == null)
-                return; // probably over the html tag
-            var targets:Array = MouseEvent.targets;
-            var index:int = targets.indexOf(target);
-            if (index != -1) {
-                // get all children
-                outs = targets.slice(index + 1);
-                m = outs.length;
-                for (j = 0; j < m; j++) {
-                    me = makeMouseEvent(
-                        ROLL_OUT, e);
-                    outs[j].element.dispatchEvent(me);
-                }
-                MouseEvent.targets = targets.slice(0, index + 1);
-            }
-            else {
-                var newTargets:Array = [target];
-                if (!('parent' in target))
-                    parent = null;
-                else
-                    parent = target.parent;
-                while (parent) {
-                    index = targets.indexOf(parent);
-                    if (index == -1) {
-                        newTargets.unshift(parent);
-                        if (!('parent' in parent))
-                            break;
-                        parent = parent.parent;
-                    }
-                    else {
-                        outs = targets.slice(index + 1);
-                        m = outs.length;
-                        for (j = 0; j < m; j++) {
-                            me = makeMouseEvent(
-                                ROLL_OUT, e);
-                            outs[j].element.dispatchEvent(me);
-                        }
-                        targets = targets.slice(0, index + 1);
-                        break;
-                    }
-                }
-                var n:int = newTargets.length;
-                for (var i:int = 0; i < n; i++) {
-                    me = makeMouseEvent(
-                        ROLL_OVER, e);
-                    newTargets[i].element.dispatchEvent(me);
-                }
-                MouseEvent.targets = targets.concat(newTargets);
-            }
+            return _stagePoint.y;
         }
-        
-        
-        /**
-         */
-        COMPILE::JS
-        private static var rollOverMixin:Boolean =
-            installRollOverMixin();
-        
-        
-        /**
-         */
-        COMPILE::JS
-        private static var targets:Array = [];
+	}
 
-        /**
-         * @param {string} type The event type.
-         * @param {Event} e The mouse event.
-         * @return {MouseEvent} The new event.
-         */
-        COMPILE::JS
-        private static function makeMouseEvent(type:String, e:window.MouseEvent):window.MouseEvent
-        {
-            var out:window.MouseEvent = new window.MouseEvent(type);
-            out.initMouseEvent(type, false, false,
-                e.view, e.detail, e.screenX, e.screenY,
-                e.clientX, e.clientY, e.ctrlKey, e.altKey,
-                e.shiftKey, e.metaKey, e.button, e.relatedTarget);
-            return out;
-        };
+	COMPILE::JS
+	public class MouseEvent extends Event
+	{
+		private static function platformConstant(s:String):String
+		{
+			return s.toLowerCase();
+		}
+
+		public static const MOUSE_DOWN:String = platformConstant("mouseDown");
+		public static const MOUSE_MOVE:String = platformConstant("mouseMove");
+		public static const MOUSE_UP:String = platformConstant("mouseUp");
+		public static const MOUSE_OUT:String = platformConstant("mouseOut");
+		public static const MOUSE_OVER:String = platformConstant("mouseOver");
+		public static const ROLL_OVER:String = platformConstant("rollOver");
+		public static const ROLL_OUT:String = platformConstant("rollOut");
+		public static const CLICK:String = "click";
+
+		/**
+		 *  Constructor.
+		 *
+		 *  @param type The name of the event.
+		 *  @param bubbles Whether the event bubbles.
+		 *  @param cancelable Whether the event can be canceled.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function MouseEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false,
+								   localX:Number = NaN, localY:Number = NaN,
+								   relatedObject:Object = null,
+								   ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false,
+								   buttonDown:Boolean = false, delta:int = 0,
+								   commandKey:Boolean = false, controlKey:Boolean = false,
+								   clickCount:int = 0)
+		{
+			super(type);
+
+			this.localX = localX;
+			this.localY = localY;
+			this.relatedObject = relatedObject;
+			this.ctrlKey = ctrlKey;
+			this.altKey = altKey;
+			this.shiftKey = shiftKey;
+			this.buttonDown = buttonDown;
+			this.delta = delta;
+			this.commandKey = commandKey;
+			this.controlKey = controlKey;
+			this.clickCount = clickCount;
+		}
+
+		private var _localX:Number;
+		public function get localX():Number
+		{
+			return _localX;
+		}
+		public function set localX(value:Number):void
+		{
+			_localX = value;
+			_stagePoint = null;
+		}
+
+		private var _localY:Number;
+		public function get localY():Number
+		{
+			return _localY;
+		}
+		public function set localY(value:Number):void
+		{
+			_localY = value;
+			_stagePoint = null;
+		}
+
+		public var relatedObject:Object;
+		public var ctrlKey:Boolean;
+		public var altKey:Boolean;
+		public var shiftKey:Boolean;
+		public var buttonDown:Boolean;
+		public var delta:int;
+		public var commandKey:Boolean;
+		public var controlKey:Boolean;
+		public var clickCount:int;
+
+		// these map directly to JS MouseEvent fields.
+		public function get clientX():Number
+		{
+			return screenX;
+		}
+		public function set clientX(value:Number):void
+		{
+			localX = value;
+		}
+		public function get clientY():Number
+		{
+			return screenY;
+		}
+		public function set clientY(value:Number):void
+		{
+			localY = value;
+		}
+
+		private var _stagePoint:Point;
+
+		public function get screenX():Number
+		{
+			if (!target) return localX;
+			if (!_stagePoint)
+			{
+				var localPoint:Point = new Point(localX, localY);
+				_stagePoint = PointUtils.localToGlobal(localPoint, target);
+			}
+			return _stagePoint.x;
+		}
+
+		public function get screenY():Number
+		{
+			if (!target) return localY;
+			if (!_stagePoint)
+			{
+				var localPoint:Point = new Point(localX, localY);
+				_stagePoint = PointUtils.localToGlobal(localPoint, target);
+			}
+			return _stagePoint.y;
+		}
+
+		/**
+		 * @private
+		 */
+		private static function installRollOverMixin():Boolean
+		{
+			window.addEventListener(MOUSE_OVER,
+				mouseOverHandler, false);
+			return true;
+		}
+
+
+		/**
+		 * @param e The event.
+		 * RollOver/RollOut is entirely implemented in mouseOver because
+		 * when a parent and child share an edge, you only get a mouseout
+		 * for the child and not the parent and you need to send rollout
+		 * to both.  A similar issue exists for rollover.
+		 */
+		private static function mouseOverHandler(e:MouseEvent):void
+		{
+			var j:int;
+			var m:int;
+			var outs:Array;
+			var me:window.MouseEvent;
+			var parent:Object;
+			var target:Object = e.target.flexjs_wrapper;
+			if (target == null)
+				return; // probably over the html tag
+			var targets:Array = MouseEvent.targets;
+			var index:int = targets.indexOf(target);
+			if (index != -1) {
+				// get all children
+				outs = targets.slice(index + 1);
+				m = outs.length;
+				for (j = 0; j < m; j++) {
+					me = makeMouseEvent(
+						ROLL_OUT, e);
+					outs[j].element.dispatchEvent(me);
+				}
+				MouseEvent.targets = targets.slice(0, index + 1);
+			}
+			else {
+				var newTargets:Array = [target];
+				if (!('parent' in target))
+					parent = null;
+				else
+					parent = target.parent;
+				while (parent) {
+					index = targets.indexOf(parent);
+					if (index == -1) {
+						newTargets.unshift(parent);
+						if (!('parent' in parent))
+							break;
+						parent = parent.parent;
+					}
+					else {
+						outs = targets.slice(index + 1);
+						m = outs.length;
+						for (j = 0; j < m; j++) {
+							me = makeMouseEvent(
+								ROLL_OUT, e);
+							outs[j].element.dispatchEvent(me);
+						}
+						targets = targets.slice(0, index + 1);
+						break;
+					}
+				}
+				var n:int = newTargets.length;
+				for (var i:int = 0; i < n; i++) {
+					me = makeMouseEvent(
+						ROLL_OVER, e);
+					newTargets[i].element.dispatchEvent(me);
+				}
+				MouseEvent.targets = targets.concat(newTargets);
+			}
+		}
+
+
+		/**
+		 */
+		private static var rollOverMixin:Boolean =
+			installRollOverMixin();
+
+
+		/**
+		 */
+		private static var targets:Array = [];
+
+		/**
+		 * @param {string} type The event type.
+		 * @param {Event} e The mouse event.
+		 * @return {MouseEvent} The new event.
+		 */
+		private static function makeMouseEvent(type:String, e:window.MouseEvent):window.MouseEvent
+		{
+			var out:window.MouseEvent = new window.MouseEvent(type);
+			out.initMouseEvent(type, false, false,
+				e.view, e.detail, e.screenX, e.screenY,
+				e.clientX, e.clientY, e.ctrlKey, e.altKey,
+				e.shiftKey, e.metaKey, e.button, e.relatedTarget);
+			return out;
+		};
 
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d56e155d/frameworks/projects/Core/as/src/org/apache/flex/events/utils/MouseUtils.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/as/src/org/apache/flex/events/utils/MouseUtils.as b/frameworks/projects/Core/as/src/org/apache/flex/events/utils/MouseUtils.as
index 5dbc934..38f707e 100644
--- a/frameworks/projects/Core/as/src/org/apache/flex/events/utils/MouseUtils.as
+++ b/frameworks/projects/Core/as/src/org/apache/flex/events/utils/MouseUtils.as
@@ -43,7 +43,7 @@ package org.apache.flex.events.utils
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		static public function eventTarget(event:Event):Object
+		static public function eventTarget(event:MouseEvent):Object
 		{
 			return event.target;
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d56e155d/frameworks/projects/HTML/as/src/org/apache/flex/html/Button.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/Button.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/Button.as
index d4c2001..dbee62b 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/Button.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/Button.as
@@ -45,7 +45,7 @@ package org.apache.flex.html
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	[Event(name="click", type="org.apache.flex.events.Event")]
+	[Event(name="click", type="org.apache.flex.events.MouseEvent")]
 
     /**
      *  The Button class is a simple button.  Use TextButton for

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d56e155d/frameworks/projects/HTML/as/src/org/apache/flex/html/CheckBox.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/CheckBox.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/CheckBox.as
index 6405ab5..7dff6da 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/CheckBox.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/CheckBox.as
@@ -36,6 +36,7 @@ package org.apache.flex.html
         import org.apache.flex.core.WrappedHTMLElement;        
     }
 	import org.apache.flex.events.Event;
+	import org.apache.flex.events.MouseEvent;
 	
     //--------------------------------------
     //  Events
@@ -75,7 +76,7 @@ package org.apache.flex.html
 		{
 			super();
 			
-			addEventListener(MouseEvent.CLICK, internalMouseHandler);
+			addEventListener(org.apache.flex.events.MouseEvent.CLICK, internalMouseHandler);
 		}
 		
         /**
@@ -121,7 +122,7 @@ package org.apache.flex.html
 			IToggleButtonModel(model).selected = value;
 		}
 				
-		private function internalMouseHandler(event:Event) : void
+		private function internalMouseHandler(event:org.apache.flex.events.MouseEvent) : void
 		{
 			selected = !selected;
 			dispatchEvent(new Event("change"));

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d56e155d/frameworks/projects/HTML/as/src/org/apache/flex/html/RadioButton.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/RadioButton.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/RadioButton.as
index 63f90e9..8630ab1 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/RadioButton.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/RadioButton.as
@@ -37,6 +37,7 @@ package org.apache.flex.html
         import org.apache.flex.core.WrappedHTMLElement;
     }
 	import org.apache.flex.events.Event;
+	import org.apache.flex.events.MouseEvent;
 	import org.apache.flex.core.IUIBase;
 	
 	[Event(name="change", type="org.apache.flex.events.Event")]
@@ -69,7 +70,7 @@ package org.apache.flex.html
 		{
 			super(upState, overState, downState, hitTestState);
 			
-			addEventListener(MouseEvent.CLICK, internalMouseHandler);
+			addEventListener(org.apache.flex.events.MouseEvent.CLICK, internalMouseHandler);
 		}
 		
 		protected static var dict:Dictionary = new Dictionary(true);
@@ -209,7 +210,7 @@ package org.apache.flex.html
 		/**
 		 * @private
 		 */
-		private function internalMouseHandler(event:Event) : void
+		private function internalMouseHandler(event:org.apache.flex.events.MouseEvent) : void
 		{
 			// prevent radiobutton from being turned off by a click
 			if( !selected ) {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d56e155d/frameworks/projects/HTML/as/src/org/apache/flex/html/ToggleTextButton.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/ToggleTextButton.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/ToggleTextButton.as
index ea9b0f9..e6ca726 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/ToggleTextButton.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/ToggleTextButton.as
@@ -23,30 +23,30 @@ package org.apache.flex.html
 	import org.apache.flex.core.IUIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.IEventDispatcher;
-    
+
     COMPILE::JS
     {
         import org.apache.flex.core.WrappedHTMLElement;
     }
-	
+
     //--------------------------------------
     //  Events
     //--------------------------------------
-    
+
     /**
      *  Dispatched when the user clicks on a button.
-     *  
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	[Event(name="click", type="org.apache.flex.events.Event")]
+	[Event(name="click", type="org.apache.flex.events.MouseEvent")]
 
     /**
      *  The ToggleButton class is a TextButton that supports
      *  a selected property.
-     * 
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
@@ -56,7 +56,7 @@ package org.apache.flex.html
 	{
         /**
          *  Constructor.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
@@ -70,16 +70,16 @@ package org.apache.flex.html
                 this.typeNames = 'toggleTextButton';
             }
 		}
-        
+
         COMPILE::JS
         private var _selected:Boolean;
-        
+
         COMPILE::JS
         private var SELECTED:String = "selected";
-        
+
         /**
          *  <code>true</code> if the Button is selected.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
@@ -89,14 +89,14 @@ package org.apache.flex.html
         {
             COMPILE::AS3
             {
-                return IToggleButtonModel(model).selected;                    
+                return IToggleButtonModel(model).selected;
             }
             COMPILE::JS
             {
                 return _selected;
             }
         }
-        
+
         /**
          *  @private
          */
@@ -104,14 +104,14 @@ package org.apache.flex.html
         {
             COMPILE::AS3
             {
-                IToggleButtonModel(model).selected = value;                    
+                IToggleButtonModel(model).selected = value;
             }
             COMPILE::JS
             {
-                if (_selected != value) 
+                if (_selected != value)
                 {
                     _selected = value;
-                    
+
                     var className:String = this.className;
                     var typeNames:String = this.typeNames;
                     if (value) {
@@ -135,7 +135,7 @@ package org.apache.flex.html
                 }
             }
         }
-        
+
         /**
          *  @private
          *  add another class selector
@@ -145,14 +145,14 @@ package org.apache.flex.html
             // we don't have a model yet so just pass through otherwise you will loop
             if (!parent)
                 return super.className;
-            
-            var name:String = super.className;            
+
+            var name:String = super.className;
             if (selected)
                 return "toggleTextButton_Selected" + (name ? " " + name : "");
             else
                 return "toggleTextButton" + (name ? " " + name : "");
         }
-        
+
         COMPILE::JS
         override protected function createElement():WrappedHTMLElement
         {
@@ -160,7 +160,7 @@ package org.apache.flex.html
             element.addEventListener("click", clickHandler, false);
             return element;
         }
-        
+
         COMPILE::JS
         private function clickHandler(event:Event):void
         {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d56e155d/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/DropDownListController.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/DropDownListController.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/DropDownListController.as
index 29f58e1..c279dc5 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/DropDownListController.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/DropDownListController.as
@@ -25,10 +25,11 @@ package org.apache.flex.html.beads.controllers
 	import org.apache.flex.core.IBeadController;
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
-    import org.apache.flex.core.IUIBase;
-    import org.apache.flex.core.UIBase;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.UIBase;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.events.MouseEvent;
 	import org.apache.flex.html.beads.IDropDownListView;
 
     /**
@@ -72,10 +73,10 @@ package org.apache.flex.html.beads.controllers
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-            IEventDispatcher(value).addEventListener("click", clickHandler);
+            IEventDispatcher(value).addEventListener(org.apache.flex.events.MouseEvent.CLICK, clickHandler);
 		}
 		
-        private function clickHandler(event:Event):void
+        private function clickHandler(event:org.apache.flex.events.MouseEvent):void
         {
             var viewBead:IDropDownListView = _strand.getBeadByType(IDropDownListView) as IDropDownListView;
             var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
@@ -90,14 +91,14 @@ package org.apache.flex.html.beads.controllers
 			DisplayObject(viewBead.popUp).x = pt.x;
 			DisplayObject(viewBead.popUp).y = pt.y;
             IEventDispatcher(viewBead.popUp).addEventListener("change", changeHandler);
-            IUIBase(_strand).topMostEventDispatcher.addEventListener("click", dismissHandler);
+            IUIBase(_strand).topMostEventDispatcher.addEventListener(org.apache.flex.events.MouseEvent.CLICK, dismissHandler);
         }
         
-        private function dismissHandler(event:Event):void
+        private function dismissHandler(event:org.apache.flex.events.MouseEvent):void
         {
             if (event.target == _strand) return;
             
-            IUIBase(_strand).topMostEventDispatcher.removeEventListener("click", dismissHandler);
+            IUIBase(_strand).topMostEventDispatcher.removeEventListener(org.apache.flex.events.MouseEvent.CLICK, dismissHandler);
             var viewBead:IDropDownListView = _strand.getBeadByType(IDropDownListView) as IDropDownListView;
             viewBead.popUpVisible = false;
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d56e155d/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
index 0c637bf..9e1073e 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
@@ -79,7 +79,8 @@ COMPILE::JS {
 			COMPILE::AS3 {
 	            renderer.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
 	            renderer.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
-	            renderer.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
+				renderer.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
+				renderer.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
 			}
 				
 			COMPILE::JS {
@@ -174,6 +175,8 @@ COMPILE::JS {
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target)
 			{
+				event.stopImmediatePropagation();
+				
 				var newEvent:ItemClickedEvent = new ItemClickedEvent("itemClicked");
 				newEvent.data = target.data;
 				newEvent.multipleSelection = event.shiftKey;