[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