(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

Reply via email to