(I am checking these changes in.)
Change philip-20110719-YqQ by philip@PHILIP-I7 on 2011-07-19 15:57:42
EDT
in /cygdrive/c/clients/laszlo/svn/openlaszlo/trunk
for http://svn.openlaszlo.org/openlaszlo/trunk
Summary: Focus/tab overhaul for html component
New Features:
Bugs Fixed: LPP-10002, LPP-9997
Technical Reviewer: (pending)
QA Reviewer: mdemmon
Doc Reviewer: (pending)
Documentation:
Release Notes:
Overview:
I am aware of these issues:
shift-tab behavior is a bit quirky.
In Chrome, you can get 2 cursors because focus is not transferring
properly.
Details:
This changeset contains a lot of debugging comments that I will remove
with the followup changeset.
html/iframemanager - I added a focusable <span> element before and after
each iframe. This is the only way I found to reliably catch focus in all
browsers. The tabindex is 0 for each element. When you tab into an html
component, focus will move to the iframe. When you tab or shift-tab off
the iframe, the span elements will trap the focus and control will be
passed to the previous or next elemenet.
When focus moves to the iframe, iframemanager will see if a method
startfocus() is found in the wrapper file. If so, it will be called so
that focus can be moved to the appropriate element on the page. I need
to extend this to handle tab and shift-tab into the page.
The iframemanager also writes a <span> element after all the iframes.
This will prevent the browser from moving focus to the address bar.
rte/rtemanager - I commented out a lot of code because the html
component handles focus movement. I did disable the rte_buttons div if
there are no buttons to tighten up the layout in IE.
rtewrapper.html - Added startfocus() method to move the focus into the
rte editor. This version also will display a loading message which I
will remove in the next changeset.
embednew.js - Applied Maynard's fix for LPP-10002.
flash.js - Specify tabindex=0 on the object/embed tag so that the swf
can get focus if other elements are on the top-level wrapper page.
Tests:
See tests LPP-9997. You can also run the tests in LPP-9993.
Files:
M lps/components/extensions/html.lzx
M lps/components/extensions/rte.lzx
M lps/includes/rtewrapper.html
M lps/includes/source/rtemanager.js
M lps/includes/source/embednew.js
M lps/includes/source/flash.js
M lps/includes/source/iframemanager.js
Changeset:
http://svn.openlaszlo.org/openlaszlo/patches/philip-20110719-YqQ.tar