Yeah, sounds good - it looks like you started splitting this into separate changes already :)

I tried checking for metaKey in __updateControlKeys() and it didn't seem to make any difference - but it's probably a good idea to check in both places. We may need to refactor the stuck key detection code to its own method...

André Bargull wrote:
I think we should/need to split up these changes to reduce testing effort (because it's not only cross-browser, but also cross-OS). So, I'd propose to change at first "LzKeyboardKernel.__keyboardEvent()" and add "__updateControlKeys()". Which leads to my first question: Do we need to check for 'metaKey' also "__updateControlKeys()" or just in "__keyboardEvent()"?


On 6/2/2009 3:05 AM, Max Carlson wrote:
Change 20090601-maxcarlson-6 by maxcarl...@bank on 2009-06-01 17:44:36 PDT
    in /Users/maxcarlson/openlaszlo/trunk-clean
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Fix contextmenu inconsistencies in DHTML

Bugs Fixed: LPP-8218 - DHTML: issues with contextmenu onmenuopen, dragging

Technical Reviewer: [email protected]
QA Reviewer: hminsky

Details: This includes all changes from http://www.openlaszlo.org/pipermail/laszlo-dev/2009-May/021166.html - Andre's changes to improve context menu support. I had to hand-merge LzKeyboardKernel due to changes I'd made related to LPP-8210.

LzSprite - [Andre: 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'!]

Moved detectstuckkeys from capabilities to quirks. Added quirks.noglobaloncontextmenu to deal with Firefox OS X context menu issue - https://bugzilla.mozilla.org/show_bug.cgi?id=443191. __clickDispatcher() looks for quirks.noglobaloncontextmenu to fix context menus in Firefox OS X. Remove unused (e.button == 2 && eventname != 'oncontextmenu') test from __mouseEvent().

LzKeyboardKernel - [Andre 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).] Hand-merged tests for meta key/stuck keys checked into r14021.

LzMouseKernel - Andre's changes, plus I simplified the contextmenu test to if (eventname == 'oncontextmenu' && targ) - testing for (e.button == 2 && eventname == 'onmouseup') is now handled in LzSprite.__clickDispatcher().

Tests: lz.Keys.downKeysArray no longer has extra entries for meta keys, e.g. 'a' after pressing/releasing apple-a on OS X (LPP-8210). test/contextmenu/lpp-6980.lzx?lzr=dhtml shows custom context menus for red and blue boxes and default context menus for purple, yellow and the canvas across Firefox and Safari OS X and Firefox, IE and Safari on Windows. test/lfc/legals/keyboardandmouse.lzx?lzr=dhtml runs as before in Firefox and
Safari OS X and Firefox, IE and Safari on Windows.

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/20090601-maxcarlson-6.tar


--
Regards,
Max Carlson
OpenLaszlo.org

Reply via email to