Some general cleanup of _KeyNavContainer.     Also modifying Menu to not access this.focusedChild when the !MenuItem of interest is already in a local variable.   Refs #16323 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29979 560b804f-0ae3-0310-86f3-f6aa0a117693
Split _KeyNavContainer code related to key navigation into _KeyNavMixin.   Refs #16323 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29985 560b804f-0ae3-0310-86f3-f6aa0a117693
Support for !TooltipDialog textDir parameter to affect !TooltipDialog title.    Although I don't know why we are supporting titles on !TooltipDialogs at all.  Fixes #16358 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29989 560b804f-0ae3-0310-86f3-f6aa0a117693
Update _KeyNavMixin to use dojo/on rather than deprecated dojo/connect.   On the downside though, it splits _onContainerKeypress() into two functions, _onContainerKeypress() and _onContainerKeydown(), each receiving a native event without evt.charOrCode set, so may cause issues for subclasses overriding these methods, or using this._keyNavCodes to hold printable keys.    Seems ENTER and SPACE and the non-printables like arrows still work fine though.

Make _KeyNav.focusFirstChild() and _KeyNav.focusLastChild() abstract methods, rather than requiring an overloaded API for _getNextFocusableChild().   However, _KeyNavContainer._getNextFocusableChild() still functions to get the first/last child.

Refs #16323 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29998 560b804f-0ae3-0310-86f3-f6aa0a117693
Refactor Tree to extend _KeyNavMixin.  The only behavioral change is that when you tab into the Tree, it always goes to the first node, rather than the previously focused node.   Some changes will affect people who are extending Tree though, if they are either modifying the !TreeNode template or overriding non-public methods.   Incidentally fixes some bugs not obeying Tree.tabIndex (i.e. just assuming the tabIndex is 0).

Also moved focusNext() and focusPrev() from _KeyNavMixin to _KeyNavContainer, thus simplifying signature of _KeyNavMixin._getNextFocusableChild().

Fixes #16323 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30029 560b804f-0ae3-0310-86f3-f6aa0a117693
Make _KeyNavMixin base class, rather than _KeyNavContainer and Tree, track child node focus/blur events and update this.focusedChild accordingly.   To support this, the subclass needs to define a selector (this.childSelector) to identify focusable children (ex: .dijitTreeRow).

This has two advantages for _KeyNavContainer:
     1. uses event delegation, which is more efficient and more amenable to server side instantiation, etc.
     2. removes undocumented requirement that child widgets extend _FocusMixin

Refs #16323 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30045 560b804f-0ae3-0310-86f3-f6aa0a117693
Aria related fixes from Mike Billau (IBM, CCLA):

    - set aria-labelledby for popups
    - move listbox role of Select widget up to its root node
    - change !TooltipDialog to be role alertdialog rather than dialog, and move that role up to its root node
    - automated tests for aria roles and states
    - other miscellaneous test updates
    
Fixes #16307 !strict.


git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30053 560b804f-0ae3-0310-86f3-f6aa0a117693
Support returning a dojo/promise/Promise or dojo/Deferred from a test fixture.   Before, you could only return a doh.Deferred or a dojo/_base/Deferred.    Besides the function name changes, I had to stop DOH from trying to modify the returned value by calling errback().

Update doh.Deferred to support the basic dojo/promise/Promise API methods: then(), always(), otherwise(), resolve(),  reject(). isFulfilled(), isResolved(), isRejected().   It still supports the old method names too, but they should be removed for 2.0.

Update dojo/_base/Deferred to have working isFulfilled(), isResolved(), isRejected() methods; previously (new dojoBaseDeferred()).promise.isFulfilled() was defined but threw an exception, which is sort-of false advertising.   Originally I needed this in the DOH code, but ended up not using it, so this change is optional.

Also updated a few modules to return a Promise rather than a Deferred.    A dojo/_base/Deferred.promise seems to be backwards compatible with the dojo/_base/Deferred, having addCallback() etc. methods.   Except of course that it doesn't have callback() and errback(), but users shouldn't be calling those anyway.   Again, originally I needed this in the DOH code, but ended up not using it, so this change is optional.

This check possibly fixes some tests that were already assuming a test fixture could return a dojo/Deferred.

For 2.0 maybe we should restrict the value returned from a test fixture to a Promise, rather than a Deferred.   Right now DOH looks for a promise attribute (available in dojo/Deferred and dojo/_base/Deferred, but not doh.Deferred), and uses it if available.

Fixes #16388 !strict.
 


git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30054 560b804f-0ae3-0310-86f3-f6aa0a117693
Make higher level API for the !DialogUnderlay, having just show() and hide() methods.   !DialogUnderlay will worry about creating the singleton at the right time, and about resizing itself on viewport resize/scroll.

Partially based on patch from Akira Sudoh (IBM, CCLA).

Fixes #16398 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30066 560b804f-0ae3-0310-86f3-f6aa0a117693
Rename bgIframe to config-bgIframe.   Also moving !BackgroundIframe test from dijit/general-modules to dijit/infrastructure-modules.   Refs #16268 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30067 560b804f-0ae3-0310-86f3-f6aa0a117693
Use keydown rather than synthetic dojo/_base/connect._keypress event for Dialog, !TooltipDialog, !InlineEditBox, and dijit/popup.

These modules need to be changed together so that when the user hits the ESCAPE key while an !InlineEditBox is in edit mode, the Dialog or !TooltipDialog doesn't close too.   That will happen if the !InlineEditBox calls event.stop() on a keydown event but the Dialog is listening to keypress, or vice-versa.

For some reason !InlineEditBox was listening to both keypress and keydown; changed it to just listener keydown by removing the onkeypress data-dojo-attach-event from the template.

Also removed some strange code in Dialog from [6577] (refs #1027) that doesn't seem to be needed anymore. 

Fixes #16385 !strict. 


git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30070 560b804f-0ae3-0310-86f3-f6aa0a117693
refs #16361. Do not react on resize events fired while a form element is active (to avoid unwanted scroll) + testcase. Thanks Adrian Vasiliu, IBM, CCLA. !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dojox/trunk@30077 560b804f-0ae3-0310-86f3-f6aa0a117693
remove wrongly committed file

git-svn-id: http://svn.dojotoolkit.org/src/dojox/trunk@30081 560b804f-0ae3-0310-86f3-f6aa0a117693
Fix race condition that was affecting IE10 where the tabIndex on visited _KeyNavMixin children wasn't getting reset to -1.   The problem was happening on IE10 because the focus event occurs asynchronously, after the focusChild() call completes.   Refs #16323 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30082 560b804f-0ae3-0310-86f3-f6aa0a117693
Fix code to find tab navigable elements on IE10.

Refs #10719, fixes #16126 on trunk !strict

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30083 560b804f-0ae3-0310-86f3-f6aa0a117693
Clarify doc of destroy() and getChildren(), refs #16413 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30099 560b804f-0ae3-0310-86f3-f6aa0a117693
Avoid exception on IE when browser window refocused after switching to another application.   Thanks DaveHS, fixes #16437 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30137 560b804f-0ae3-0310-86f3-f6aa0a117693
Don't specify <body> padding in em for test files; it causes the right border of the !TabContainer to disappear in IE8 (due to some IE bug).   Also removed some unneeded/inert CSS from the !TabContainer test files.   Fixes #16020.   Note that the right border is still disappearing in IE6, but that's not worth fixing.

Had to change dijit.css to avoid problem where bottom border of !TabContainer was disappearing again though.   Changed !TabContainer.domNode CSS from overflow-y:visible to overflow:visible.    Overflow:visible was apparently problematic back in [27031] but seems to be working now.   The change doesn't affect IE6 which has it's own overflow:hidden rule.  Refs #14164.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30152 560b804f-0ae3-0310-86f3-f6aa0a117693
Windows 8 Store Apps throw an exception when trying to set an element's name attribute via innerHTML.   So avoid doing that on Windows 8 Apps.   Instead, do it via the _setNameAttr custom setter.   This is how it should be done for all platforms starting in 2.0.

Old code to set name via innerHTML was left in place for supporting the older versions of IE (refs #8660, #8484).    Also, this.nameAttrSetting needs to be remain until 2.0 for backwards compatibility, because custom widgets may be referencing it in their templates.

Changes were tested locally on firefox by changing the conditions in _FormWidget.js and !MappedTextBox.js from !has("win8app") to has("ie").

Fixes #16452 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30156 560b804f-0ae3-0310-86f3-f6aa0a117693
Fix regression where _HasDropDown subclass can no longer be defined unless it sets this.focusNode.   Also adding rudimentary test file for _HasDropDown (although it's already tested extensively via the test files for subclasses like !ComboBox).   Fixes #16473 on trunk, !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@30185 560b804f-0ae3-0310-86f3-f6aa0a117693