For aria compliance, !StackContainer's children need role="tabpanel", but since the child widgets may have their own roles and aria attributes, for example Tree, put a wrapper <div role="tabpanel"> around each child widget.

Modifies _Container.addChild(widget, num) to position widget as the n+1'th direct child of _Container.containerNode, even if the child widgets are not direct children of _Container.containerNode.  This is necessary for !StackContainer.addChild() to keep working after the above change, and also simplifies !AccordionContainer.addChild(), which is complicated due to the !AccordionInnerContainer wrapper widgets.

Also sets aria-label or preferably aria-labelledby on each <div role="tabpanel">.

Patch partly from Mike Billau (IBM, CCLA).

Refs #16242, #16244 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29904 560b804f-0ae3-0310-86f3-f6aa0a117693
Turn on !BackgroundIframe for chrome too, to help with applets.   Also add has() flag to control whether or not !BackgroundIframe shows.   Starting in 2.0 I'd like it to be false by default.

Fixes #11822, #16268 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29907 560b804f-0ae3-0310-86f3-f6aa0a117693
Make sure container's tabindex is removed whenever one of the container's children gets focus, regardless of how it got focus.   Fixes #16300 !strict.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29911 560b804f-0ae3-0310-86f3-f6aa0a117693
Fixes #16262, #10251.  Add multiple letter search capability to _KeyNavContainer.  Also added single letter navigation to Menu triggered by a special {} MenuItem label syntax (e.g. {F}ile) in which the letter is underlined when the Menu has focus.  Changed SelectMenu to inherit from DropDownMenu instead of Menu. Added automated tests. !strict

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29912 560b804f-0ae3-0310-86f3-f6aa0a117693
update comment to match behavior, refs #14341 !strict

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29920 560b804f-0ae3-0310-86f3-f6aa0a117693
just fixing bug number in comment, refs #16300.

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29924 560b804f-0ae3-0310-86f3-f6aa0a117693
Remove disclaimer no longer needed after [29904], refs #16244 !strict

git-svn-id: http://svn.dojotoolkit.org/src/dijit/trunk@29932 560b804f-0ae3-0310-86f3-f6aa0a117693
refs #16171. Recognize BlackBerry 10 as a BlackBerry.

git-svn-id: http://svn.dojotoolkit.org/src/dojox/trunk@29958 560b804f-0ae3-0310-86f3-f6aa0a117693
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