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 <[email protected]> Authored: Wed Jan 20 14:33:41 2016 -0500 Committer: Peter Ent <[email protected]> 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;
