[Laszlo-checkins] r11909 - openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9
bargull@openlaszlo.org
bargull at openlaszlo.org
Wed Nov 26 23:55:16 PST 2008
Author: bargull
Date: 2008-11-26 23:55:13 -0800 (Wed, 26 Nov 2008)
New Revision: 11909
Modified:
openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
Log:
Change 20081126-bargull-LWS by bargull at dell--p4--2-53 on 2008-11-26 21:06:25
in /home/Admin/src/svn/openlaszlo/trunk
for http://svn.openlaszlo.org/openlaszlo/trunk
Summary: use relatedObject for sprite mouseover detection
New Features:
Bugs Fixed: LPP-7335
Technical Reviewer: max
QA Reviewer: promanik
Doc Reviewer: (pending)
Documentation:
Release Notes:
Details:
- use "MouseEvent#relatedObject" to detect mouseover-sprite
- only send deferred onmouseover when event isn't skipped
Tests:
Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzSprite.as 2008-11-26 22:00:55 UTC (rev 11908)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzSprite.as 2008-11-27 07:55:13 UTC (rev 11909)
@@ -102,7 +102,7 @@
private var __isinternalresource:* = null;
// flag to track sprite the mouse went over while down to send mouseup event later - see LPP-7300 and LPP-7335
- private var __mouseoverInFront:* = null;
+ private var __mouseoverInFront:LzSprite = null;
public static var capabilities:* = {
rotation: true
@@ -661,18 +661,19 @@
this.__mousedown = true;
LzMouseKernel.__lastMouseDown = this;
} else if (eventname == 'onmouseup') {
- if (LzMouseKernel.__lastMouseDown == this) {
+ if (LzMouseKernel.__lastMouseDown === this) {
// cancel mousedown event bubbling...
LzMouseKernel.__lastMouseDown = null;
e.stopPropagation();
this.__mousedown = false;
+
+ if (this.__mouseoverInFront != null) {
+ LzMouseKernel.__sendEvent(this.__mouseoverInFront.owner, 'onmouseover');
+ this.__mouseoverInFront = null;
+ }
} else {
skipevent = true;
}
- if (this.__mouseoverInFront != null) {
- LzMouseKernel.__sendEvent(this.__mouseoverInFront.owner, 'onmouseover');
- this.__mouseoverInFront = null;
- }
} else if (eventname == 'onmouseupoutside') {
this.__mousedown = false;
} else {
@@ -686,31 +687,16 @@
if (LzMouseKernel.__lastMouseDown &&
(eventname == 'onmouseover' || eventname == 'onmouseout')) {
// only send mouseover/out if the mouse went down on this sprite - see LPP-6677
- if (LzMouseKernel.__lastMouseDown == this) {
+ if (LzMouseKernel.__lastMouseDown === this) {
LzMouseKernel.__sendEvent(this.owner, eventname);
} else {
// check to see if this sprite is in front of the sprite the mouse went down on. See LPP-7300
-
- var target:* = e.target;
- var location:Point = new Point(target.mouseX, target.mouseY);
- location = target.localToGlobal(location);
- var sprites:Array = LFCApplication.stage.getObjectsUnderPoint(location);
- var sawself = false;
- var noreset = false;
- for (var i = sprites.length; i >=0; i--) {
- var currsprite = sprites[i];
- if (currsprite == this) {
- sawself = true;
- } else if (sawself && currsprite == LzMouseKernel.__lastMouseDown) {
- // already saw ourselves, and we're on top of __lastMouseDown
- // store reference to self for sending onmouseover event later - see LPP-7335
- LzMouseKernel.__lastMouseDown.__mouseoverInFront = this;
- noreset = true;
- break;
-
- }
- }
- if (noreset == false) {
+ var relObj:InteractiveObject = e.relatedObject;
+ // relatedObject is the sprite's clickbutton, use parent to access the LzSprite
+ if (relObj && relObj.parent === LzMouseKernel.__lastMouseDown) {
+ // store reference to self for sending onmouseover event later - see LPP-7335
+ LzMouseKernel.__lastMouseDown.__mouseoverInFront = this;
+ } else {
LzMouseKernel.__lastMouseDown.__mouseoverInFront = null;
}
}
More information about the Laszlo-checkins
mailing list