[Laszlo-checkins] r13298 - openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9

bargull@openlaszlo.org bargull at openlaszlo.org
Sun Mar 15 12:36:09 PDT 2009


Author: bargull
Date: 2009-03-15 12:36:04 -0700 (Sun, 15 Mar 2009)
New Revision: 13298

Modified:
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzContextMenuKernel.lzs
Log:
Change 20090315-bargull-kne by bargull at dell--p4--2-53 on 2009-03-15 12:24:48
    in /home/Admin/src/svn/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: fix context-menu delegate handling

New Features:

Bugs Fixed: LPP-7918 (SWF9: previous delegate also called)

Technical Reviewer: hminsky
QA Reviewer: (pending)
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details:
Don't use a closure as event-listener instead register a single method which handles the ContextMenuEvent.
    

Tests:
testcase at bugreport



Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzContextMenuKernel.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzContextMenuKernel.lzs	2009-03-15 19:32:36 UTC (rev 13297)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzContextMenuKernel.lzs	2009-03-15 19:36:04 UTC (rev 13298)
@@ -25,11 +25,21 @@
 
     this.cm = new ContextMenu();
     this.cm.hideBuiltInItems();
+    this.cm.addEventListener(ContextMenuEvent.MENU_SELECT, handleMenuSelect);
 }
 
 var owner:LzContextMenu = null;
 var cm:ContextMenu = null;
+var delegate:LzDelegate = null;
 
+private function handleMenuSelect (e:ContextMenuEvent) :void {
+    var lzmenu:LzContextMenu = this.owner;
+    var delegate:LzDelegate = this.delegate;
+    if (delegate != null) {
+        delegate.execute(lzmenu);
+    }
+    if (lzmenu.onmenuopen.ready) lzmenu.onmenuopen.sendEvent(lzmenu);
+}
 
 /**
   * LzContextMenu.setDelegate
@@ -40,12 +50,7 @@
   * @access private
   */
 function setDelegate (delegate:LzDelegate) :void {
-  var __litem__:LzContextMenu = this.owner;
-  var callback:Function = function (e:ContextMenuEvent) :void {
-      if (delegate != null) delegate.execute(__litem__);
-      if (__litem__.onmenuopen.ready) __litem__.onmenuopen.sendEvent(__litem__);
-  };
-  this.cm.addEventListener(ContextMenuEvent.MENU_SELECT, callback);
+    this.delegate = delegate;
 }
 
 /**
@@ -114,12 +119,28 @@
 function LzContextMenuItemKernel (newowner:LzContextMenuItem, title:String, del:*) {
     this.owner = newowner;
     this.cmenuitem = new ContextMenuItem(title);
+    this.cmenuitem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, this.handleMenuItemSelect);
     this.setDelegate(del);
 }
 
 var owner:LzContextMenuItem = null;
 var cmenuitem:ContextMenuItem = null;
+var delegate:* = null;
 
+private function handleMenuItemSelect (e:ContextMenuEvent) :void {
+    var lzmenuitem:LzContextMenuItem = this.owner;
+    var delegate:* = this.delegate;
+    if (delegate != null) {
+        if (delegate is Function) {
+            delegate();
+        } else if (delegate is LzDelegate) {
+            delegate.execute(lzmenuitem);
+        } else if ($debug) {
+            Debug.error("LzContextMenuItem.setDelegate must be passed a delegate or function", lzmenuitem, delegate);
+        }
+    }
+    if (lzmenuitem.onselect.ready) lzmenuitem.onselect.sendEvent(lzmenuitem);
+}
 
 /**
   * LzContextMenuItem.setDelegate
@@ -130,20 +151,7 @@
   * @access private
   */
 function setDelegate (delegate:*) :void {
-  var __litem__:LzContextMenuItem = this.owner;
-  var callback:Function = function (e:ContextMenuEvent) :void {
-      if (delegate != null) {
-          if (delegate is Function) {
-              delegate();
-          } else if (delegate is LzDelegate) {
-              delegate.execute(__litem__);
-          } else if ($debug) {
-              Debug.error("LzContextMenuItem.setDelegate must be passed a delegate or function", __litem__, delegate);
-          }
-      }
-      if (__litem__.onselect.ready) __litem__.onselect.sendEvent(__litem__);
-  };
-  this.cmenuitem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, callback);
+    this.delegate = delegate;
 }
 
 /**



More information about the Laszlo-checkins mailing list