Approved!
On Sun, Jun 12, 2011 at 10:47 AM, Donald Anderson wrote:
Change dda-20110612-6XE by [email protected]
<javascript:parent.wgMail.openComposeWindow('[email protected]')> on
2011-06-12 07:04:04 EDT
in /Users/dda/laszlo/src/svn/openlaszlo/trunk-g
for http://svn.openlaszlo.org/openlaszlo/trunk
<http://svn.openlaszlo.org/openlaszlo/trunk>
Summary: Remove unneeded (FF 3.6 only) mouse events following context
menu
New Features:
Bugs Fixed: LPP-9957 (Repeatedly opening the context menu on the message
grid will hang the browser)
Technical Reviewer: promanik (pending)
QA Reviewer: (pending)
Doc Reviewer: (pending)
Documentation:
Release Notes:
Overview:
Running the test program (see mouseout.swf in LPP-9957) revealed
that
immediately after a context menu is opened, an extra mouseout event
is issued on FF 3.6. In fact, three extra events are issued
immediately
after MENU_SELECT: MOUSE_MOVE, MOUSE_OUT, MOUSE_LEAVE. The
solution
removes the MOUSE_OUT and MOUSE_LEAVE events. The extra
MOUSE_MOVE is
considered benign because, if a handler is established at all by
the
user, it will be called many times, one less won't make a
difference.
The solution uses __inContextMenu to count down (making it act sort
of a state machine). It's complicated by the fact that MOUSE_OUT
is
only really handled by the sprite, and MOUSE_LEAVE is only really
handled by the Mouse kernel, whereas the context menu has its own
kernel.
We presume that this will fix, or at least help the problem seen
in jade since extra events mean extra processing. Also 'mouseout'
events have been seen in a couple of the captured stack traces
that Maynard sent previously. And 'mouseleave' events indirectly
result in 'mouseenter' events, which are seen in two of the stack
traces seen above. Finally since the error is only seen with
FF3.6,
any sort of browser behaviour difference is suspect.
Details:
LzContextMenuKernel.lzs:
- call into the Mouse Kernel to let it know about a new context
menu
LzMouseKernel.lzs:
- set up a listener for any context menu to set __inContextMenu
- decrement __inContextMenu with each mouse event
- remove MOUSE_LEAVE events if seen in the sequence described
above
LzSprite.as:
- remove MOUSE_OUT events if seen in the sequence described above
- set up the 'quirk' variable that identifies the errant browser.
Tests:
- ran smokecheck dhtml/swf10
- ran lzx program that appears in LPP-9957 on FF3.6 (windows)
and FF3.6 (mac). Now get correct behavior on both.
Files:
M WEB-INF/lps/lfc/kernel/swf9/LzContextMenuKernel.lzs
M WEB-INF/lps/lfc/kernel/swf9/LzMouseKernel.as
M WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
Changeset:
http://svn.openlaszlo.org/openlaszlo/patches/dda-20110612-6XE.tar
<http://svn.openlaszlo.org/openlaszlo/patches/dda-20110612-6XE.tar>
-- <http://svn.openlaszlo.org/openlaszlo/patches/dda-20110612-6XE.tar>
Don Anderson
Java/C/C++, Berkeley DB, systems consultant
voice: 617-306-2057
email: [email protected]
<javascript:parent.wgMail.openComposeWindow('[email protected]')>
www: http://www.ddanderson.com <http://www.ddanderson.com/>
<http://www.ddanderson.com/>
blog: http://libdb.wordpress.com <http://libdb.wordpress.com>