[Laszlo-dev] [Laszlo-checkins] r14496 - openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml
P T Withington
ptw at pobox.com
Thu Aug 20 07:43:24 PDT 2009
Yup. Henry and Maynard reported the same. I'll send a fix in a minute.
On 2009-08-19, at 16:55EDT, Max Carlson wrote:
> I think this change has a mistake in it. In some cases, I get an
> exception in Firebug when mousing around the compose window in webtop:
>
> $1.mouseevent is not a function
> anonymous(Object owner=view name: icon uid=511 __LZdiv=div.lzdiv,
> "onmouseout")LFCdhtml.js (line 8784)
> anonymous("onmouseout", Object owner=view name: icon uid=511
> __LZdiv=div.lzdiv)LFCdhtml.js (line 8807)
> anonymous("onmouseout", Object owner=view name: icon uid=511
> __LZdiv=div.lzdiv)LFCdhtml.js (line 1438)
> anonymous(mouseout clientX=289, clientY=92)LFCdhtml.js (line 1665)
> [Break on this error] }};$1.mouseevent($2);if($2=="onmousedown")
> {\nLFCdhtml.js (line 8784)
>
> I tracked this down to this line in LzSprite.js#div.onmouseout =
> function(e) which was put in by you as part of r14496:
>
> LzMouseKernel.__sendEvent('onmouseout', e.target.owner);
>
> You can't rely on the event object having a target, much less an
> owner that's a view. This is causing an exception later when the
> ModeManager tries to call the mouseevent() method on a view that
> doesn't exist. Also, you may want to use the 'el' property from the
> top of the method for this to work in IE.
>
> Please test for valid target/owner properties before sending the
> event - and make sure it works in IE as well. Remember, the mouse
> may be moving over divs that aren't owned by OL, e.g. the iframe
> that contains the rich text editor.
>
> ptw at openlaszlo.org wrote:
>> Author: ptw
>> Date: 2009-08-17 14:04:01 -0700 (Mon, 17 Aug 2009)
>> New Revision: 14496
>> Modified:
>> openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzMouseKernel.js
>> openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
>> Log:
>> Change 20090817-ptw-i by ptw at repo-man.home on 2009-08-17 10:37:40 EDT
>> in /Users/ptw/OpenLaszlo/trunk-2
>> for http://svn.openlaszlo.org/openlaszlo/trunk
>> Summary: Correct mouseover/mouseout behavior for clickdivs
>> Bugs Fixed: LPP-8375 onmouseout even on HTML component is firing
>> onmouseover, not onmouseout
>> Technical Reviewer: max (Message-ID: <4A899FA5.4070706 at laszlosystems.com
>> >)
>> QA Reviewer: lhenrywilkins at laszlosystems.com (pending)
>> Details:
>> If the fix_clickable quirk is on, ignore mouseover/mouseout events
>> that get sent when clickdivs are disabled, because they are
>> redundant. Similarly, when clickdivs are re-enabled by a global
>> mouseout event, synthesize a mouseout to the now re-enabled view.
>> Tests:
>> Test case from bug report
>> Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/
>> LzMouseKernel.js
>> ===================================================================
>> --- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzMouseKernel.js
>> 2009-08-17 18:28:41 UTC (rev 14495)
>> +++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzMouseKernel.js
>> 2009-08-17 21:04:01 UTC (rev 14496)
>> @@ -204,8 +204,10 @@
>> }
>> }
>> ,__cachedSelection: null
>> + ,__globalClickable: true
>> ,setGlobalClickable: function (isclickable){
>> var el = document.getElementById('lzcanvasclickdiv');
>> + this.__globalClickable = isclickable;
>> el.style.display = isclickable ? '' : 'none';
>> }
>> ,__sendMouseMove: function(e, offsetx, offsety) {
>> Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
>> ===================================================================
>> --- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
>> 2009-08-17 18:28:41 UTC (rev 14495)
>> +++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
>> 2009-08-17 21:04:01 UTC (rev 14496)
>> @@ -163,6 +163,7 @@
>> }
>> }
>> if (mousein) {
>> + var wasClickable =
>> LzMouseKernel.__globalClickable;
>> if (quirks.fix_ie_clickable) {
>> LzMouseKernel.setGlobalClickable(true);
>> }
>> @@ -177,6 +178,13 @@
>> LzMouseKernel.setMouseControl(true);
>> LzMouseKernel.__resetMouse();
>> this.mouseisover = true;
>> + if (quirks.fix_clickable && (! wasClickable)
>> && LzMouseKernel.__globalClickable) {
>> + // NOTE: [2008-08-17 ptw] (LPP-8375) Forward
>> + // the event to the view, if it would have
>> + // gotten it without the quirk clickability
>> + // diddling
>> + LzMouseKernel.__sendEvent('onmouseout',
>> e.target.owner);
>> + }
>> } else {
>> if (quirks.focus_on_mouseover) {
>> if (LzInputTextSprite.prototype.__lastshown
>> == null) {
>> @@ -1370,6 +1378,21 @@
>> }
>> }
>> + if (this.quirks.fix_clickable && (!
>> LzMouseKernel.__globalClickable)) {
>> + // NOTE: [2008-08-17 ptw] (LPP-8375) When the mouse goes
>> + // over an html clickdiv, globalClickable gets disabled,
>> + // which generates a mouseout -- we want to ignore that.
>> + // Simlutaneously, the mouse enters the associated
>> iframe,
>> + // which will forward a mouseover to us, but we already
>> + // got one, so, we want to ignore that too. The global
>> + // mouseout handler will synthesize a mouseout event for
>> + // the html sprite when the mouse leaves the iframe and
>> + // re-enables the clickdiv.
>> + if ((eventname == 'onmouseout') || (eventname ==
>> 'onmouseover')) {
>> + return;
>> + }
>> + }
>> +
>> LzMouseKernel.__sendEvent(eventname, this.owner);
>> }
>> }
>> _______________________________________________
>> Laszlo-checkins mailing list
>> Laszlo-checkins at openlaszlo.org
>> http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins
>
> --
> Regards,
> Max Carlson
> OpenLaszlo.org
More information about the Laszlo-dev
mailing list