[Laszlo-dev] For Review: Change 20090519-bargull-2Mz Summary: DHTML: contextmenu part two
Max Carlson
max at openlaszlo.org
Thu May 21 19:06:21 PDT 2009
André Bargull wrote:
> Ok, let's see what we've got:
>
> (1) You've added this line to "__mouseEvent()":
> > > if (e.button == 2 && eventname != 'oncontextmenu') return;
> So the event processing is stopped for any event with "button==2"
> (unless the eventname is "oncontextmenu" -> btw, when does this happen?
> There is no listener attached to the click divs for "oncontextmenu"..).
It shouldn't ever happen, because as you point out the oncontextmenu is
only sent from the document.
> (2) And earlier, the bubbling is already stopped when calling
> "__keybardEvent()", because "event.keyCode" is >=0 (at least for Safari,
> Opera, IE).
>
> (3) And just for "onmouseup" the event bubbling is reenabled.
>
>
> My questions:
> I suppose you're testing with Safari, right? May you test if "keyCode"
> is >=0 for every mouse-event? Because in that case the event bubbling is
> stopped by (2). And "onmouseup" events with right button won't be
> reenabled (3) because of (1).
Actually, I was testing under Firefox OS X. Safari OS X has different
issues with this patch - the context menu sends onmouseup events but no
onmousedown - leading to issues with dragging.
We really need to get you a hackintosh or something so you can test on OS X!
> On 5/20/2009 12:33 AM, Max Carlson wrote:
>> Nope, that doesn't do it. I think it has to do with the fact that
>> onmouseup events no longer bubble...
>>
>> André Bargull wrote:
>>> Hm, it works for me perfectly on Windows (IE, Firefox, Safari).
>>> Do you get different results if you replace in "__clickDispatcher()":
>>>> e.preventDefault();
>>>> e.stopPropagation();
>>>
>>> with:
>>>> e.returnValue = false;
>>>> e.cancelBubble = true;
>>> ?
>>>
>>>
>>>
>>>
>>> On 5/19/2009 11:26 PM, Max Carlson wrote:
>>>> Not approved. In OS X, test/contextmenu/lpp-6980.lzx no longer
>>>> shows context menus for the red or blue boxes. If I change
>>>> LzMouseKernel.js as follows, everything works again:
>>>>
>>>> 46c46
>>>> < } else if (eventname == 'oncontextmenu' || (e.button == 2
>>>> && eventname == 'onmouseup') ) {
>>>> ---
>>>> > } else if (eventname == 'oncontextmenu' || (e.button == 2
>>>> && eventname == 'onclick') ) {
>>>>
>>>> André Bargull wrote:
>>>>> Change 20090519-bargull-2Mz by bargull at dell--p4--2-53 on 2009-05-19
>>>>> 19:41:02
>>>>> in /home/Admin/src/svn/openlaszlo/trunk
>>>>> for http://svn.openlaszlo.org/openlaszlo/trunk
>>>>>
>>>>> Summary: DHTML: contextmenu part two
>>>>>
>>>>> New Features:
>>>>>
>>>>> Bugs Fixed: LPP-8189 (Right click fires an erroneous mousedown and
>>>>> mouseup in DHTML) (partial)
>>>>>
>>>>> Technical Reviewer: max
>>>>> QA Reviewer: (pending)
>>>>> Doc Reviewer: (pending)
>>>>>
>>>>> Documentation:
>>>>>
>>>>> Release Notes:
>>>>>
>>>>> Details:
>>>>> LzSprite:
>>>>> - canceling event-bubbling for all mouse-events => this was already
>>>>> done for all browsers (except Firefox) and all events (except
>>>>> onmouseup). Why wasn't Firefox affected? => All other browsers set
>>>>> "event.keyCode" to '0' for mouse-events, only Firefox sets
>>>>> "keyCode" to 'undefined'. Now take a look at
>>>>> "LzKeyboardKernel.__keyboardEvent()", every event was canceled in
>>>>> that function if "keyCode" was '>= 0'!
>>>>>
>>>>> LzKeyboardKernel:
>>>>> - move handling for control keys (ctrl, shift, alt) into separate
>>>>> function. It should be obvious why having a single function for
>>>>> both, mouse-events and keyboard-events, is a bad idea (see keyCode
>>>>> issue from above).
>>>>>
>>>>>
>>>>> Tests:
>>>>>
>>>>> Files:
>>>>> M WEB-INF/lps/lfc/kernel/dhtml/LzKeyboardKernel.js
>>>>> M WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
>>>>> M WEB-INF/lps/lfc/kernel/dhtml/LzMouseKernel.js
>>>>>
>>>>> Changeset:
>>>>> http://svn.openlaszlo.org/openlaszlo/patches/20090519-bargull-2Mz.tar
>>>>>
>>>>
>>
--
Regards,
Max Carlson
OpenLaszlo.org
More information about the Laszlo-dev
mailing list