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"..).
(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).
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 barg...@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