]> source.dussan.org Git - jquery-ui.git/commitdiff
Tooltip: Don't close tooltips on mouseleave if the element is still focused.
authorScott González <scott.gonzalez@gmail.com>
Sun, 29 May 2011 23:21:31 +0000 (19:21 -0400)
committerScott González <scott.gonzalez@gmail.com>
Sun, 29 May 2011 23:21:31 +0000 (19:21 -0400)
tests/unit/tooltip/tooltip_events.js
ui/jquery.ui.tooltip.js

index 515760b2863d49781478b2b9f8909a01e56a500b..61026882ec7f5f469a43903d560c6bab3a0585c1 100644 (file)
@@ -47,4 +47,30 @@ test( "focus events", function() {
        element.trigger( "blur" );
 });
 
+test( "mixed events", function() {
+       expect( 2 );
+       var element = $( "#tooltipped1" ).tooltip();
+
+       element.one( "tooltipopen", function( event ) {
+               same( event.originalEvent.type, "focusin" );
+       });
+       element[0].focus();
+
+       element.one( "tooltipopen", function() {
+               ok( false, "open triggered while already open" );
+       });
+       element.trigger( "mouseover" );
+
+       element.bind( "tooltipclose", function( event ) {
+               ok( false, "close triggered while still focused" );
+       });
+       element.trigger( "mouseleave" );
+       element.unbind( "tooltipclose" );
+
+       element.one( "tooltipclose", function( event ) {
+               same( event.originalEvent.type, "blur" );
+       });
+       element[0].blur();
+});
+
 }( jQuery ) );
index c5d9508f7ffcf6aa53a64030a4d4965a29b0bba7..44398a871b5e2515eabd9af381711c1c272ecf79 100644 (file)
@@ -56,7 +56,8 @@ $.widget( "ui.tooltip", {
                        target = $( event ? event.target : this.element )
                                .closest( this.options.items );
 
-               if ( !target.length ) {
+               // if aria-describedby exists, then the tooltip is already open
+               if ( !target.length || target.attr( "aria-describedby" ) ) {
                        return;
                }
 
@@ -131,7 +132,9 @@ $.widget( "ui.tooltip", {
                        target.attr( "title", target.data( "tooltip-title" ) );
                }
 
-               if ( this.options.disabled ) {
+               // don't close if the element has focus
+               // this prevents the tooltip from closing if you hover while focused
+               if ( this.options.disabled || document.activeElement === target[0] ) {
                        return;
                }