Skip to content

Commit

Permalink
Core: Fixed :focusable and :tabbable selectors for to work with :hidd…
Browse files Browse the repository at this point in the history
…en and :visibile selectors in jQuery 1.3.2+. Still need to handle areas properly. Partial fix for #4488 - :focusable and :tabbable are broken with jQuery 1.3.2.
  • Loading branch information
scottgonzalez committed Jul 22, 2010
1 parent 4c55071 commit 3f070bd
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 16 deletions.
26 changes: 13 additions & 13 deletions tests/unit/core/core.html
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,19 @@ <h2 id="qunit-userAgent"></h2>
<div>
<div id="displayNoneAncestor" style="display: none;">
<input id="displayNoneAncestor-input" />
<span tabindex="1" id="displayNoneAncestor-span"></span>
<span tabindex="1" id="displayNoneAncestor-span">.</span>
</div>

<div id="visibilityHiddenAncestor" style="visibility: hidden;">
<input id="visibilityHiddenAncestor-input" />
<span tabindex="1" id="visibilityHiddenAncestor-span"></span>
<span tabindex="1" id="visibilityHiddenAncestor-span">.</span>
</div>

<input id="displayNone-input" style="display: none;" />
<input id="visibilityHidden-input" style="visibility: hidden;" />

<span tabindex="1" id="displayNone-span" style="display: none;"></span>
<span tabindex="1" id="visibilityHidden-span" style="visibility: hidden;"></span>
<span tabindex="1" id="displayNone-span" style="display: none;">.</span>
<span tabindex="1" id="visibilityHidden-span" style="visibility: hidden;">.</span>
</div>

<div>
Expand All @@ -103,28 +103,28 @@ <h2 id="qunit-userAgent"></h2>
<input id="inputTabindex-1" tabindex="-1" />
<input id="inputTabindex-50" tabindex="-50" />

<span id="spanTabindex0" tabindex="0"></span>
<span id="spanTabindex10" tabindex="10"></span>
<span id="spanTabindex-1" tabindex="-1"></span>
<span id="spanTabindex-50" tabindex="-50"></span>
<span id="spanTabindex0" tabindex="0">.</span>
<span id="spanTabindex10" tabindex="10">.</span>
<span id="spanTabindex-1" tabindex="-1">.</span>
<span id="spanTabindex-50" tabindex="-50">.</span>
</div>

<div>
<input id="inputTabindexfoo" tabindex="foo" />
<input id="inputTabindex3foo" tabindex="3foo" />

<span id="spanTabindexfoo" tabindex="foo"></span>
<span id="spanTabindex3foo" tabindex="3foo"></span>
<span id="spanTabindexfoo" tabindex="foo">.</span>
<span id="spanTabindex3foo" tabindex="3foo">.</span>
</div>

<div id="zIndex100" style="z-index: 100; position: absolute">
<div id="zIndexAutoWithParent"></div>
<div id="zIndexAutoWithParent">.</div>
</div>
<div id="zIndex100ViaCSS" class="zindex">
<div id="zIndexAutoWithParentViaCSS"></div>
<div id="zIndexAutoWithParentViaCSS">.</div>
</div>
<div id="zIndex100ViaCSSPositioned" class="zindex absolute">
<div id="zIndexAutoWithParentViaCSSPositioned"></div>
<div id="zIndexAutoWithParentViaCSSPositioned">.</div>
</div>
<div id="zIndexAutoNoParent"></div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/core/selector.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ test("focusable - hidden styles", function() {
isNotFocusable('#visibilityHidden-span', 'span with tabindex, visibility: hidden');
});

test("focusable - natively focusable with various tabindex", function() {
test("focusable - natively focusable with various tabindex", function() {
expect(4);

isFocusable('#inputTabindex0', 'input, tabindex 0');
Expand All @@ -141,7 +141,7 @@ test("focusable - natively focusable with various tabindex", function() {
isFocusable('#inputTabindex-50', 'input, tabindex -50');
});

test("focusable - not natively focusable with various tabindex", function() {
test("focusable - not natively focusable with various tabindex", function() {
expect(4);

isFocusable('#spanTabindex0', 'span, tabindex 0');
Expand Down
5 changes: 4 additions & 1 deletion ui/jquery.ui.core.js
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,10 @@ $.extend($.expr[':'], {
: !isNaN(tabIndex))
// the element and all of its ancestors must be visible
// the browser may report that the area is hidden
&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
&& !$(element).parents().andSelf().filter(function() {
return $.curCSS( this, "visibility" ) === "hidden" ||
$.expr.filters.hidden( this );
}).length;
},

tabbable: function(element) {
Expand Down

0 comments on commit 3f070bd

Please sign in to comment.