Skip to content

Commit

Permalink
Tooltip: Do not attempt to position if tooltip is hidden. Fixed #8644…
Browse files Browse the repository at this point in the history
… - Delayed tooltips set to track should reposition when being shown for the first time.
  • Loading branch information
couchand authored and jzaefferer committed Oct 21, 2012
1 parent 3b2d1e7 commit 0b3e59f
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 3 deletions.
35 changes: 35 additions & 0 deletions tests/unit/tooltip/tooltip_options.js
Expand Up @@ -103,4 +103,39 @@ test( "tooltipClass", function() {
ok( $( "#" + element.data( "ui-tooltip-id" ) ).hasClass( "custom" ) );
});

test( "track + show delay", function() {
expect( 2 );
var event,
leftVal = 314,
topVal = 159,
offsetVal = 26,
element = $( "#tooltipped1" ).tooltip({
track: true,
show: {
delay: 1
},
position: {
my: "left+" + offsetVal + " top+" + offsetVal,
at: "right bottom"
}
});

event = $.Event( "mouseover" );
event.target = $( "#tooltipped1" )[ 0 ];
event.originalEvent = { type: "mouseover" };
event.pageX = leftVal;
event.pageY = topVal;
element.trigger( event );

event = $.Event( "mousemove" );
event.target = $( "#tooltipped1" )[ 0 ];
event.originalEvent = { type: "mousemove" };
event.pageX = leftVal;
event.pageY = topVal;
element.trigger( event );

equal( $( ".ui-tooltip" ).css( "left" ), leftVal + offsetVal + "px" );
equal( $( ".ui-tooltip" ).css( "top" ), topVal + offsetVal + "px" );
});

}( jQuery ) );
7 changes: 6 additions & 1 deletion tests/visual/tooltip/tooltip.html
Expand Up @@ -91,7 +91,12 @@
}
});

$( "#blurs-on-click" ).tooltip().click(function() {
$( "#blurs-on-click" ).tooltip({
track: true,
show: {
delay: 500
}
}).click(function() {
$( "#focus-on-me" ).focus();
});
});
Expand Down
18 changes: 16 additions & 2 deletions ui/jquery.ui.tooltip.js
Expand Up @@ -206,7 +206,8 @@ $.widget( "ui.tooltip", {
},

_open: function( event, target, content ) {
var tooltip, positionOption, events;
var tooltip, events, delayedShow,
positionOption = $.extend( {}, this.options.position );

if ( !content ) {
return;
Expand Down Expand Up @@ -241,10 +242,12 @@ $.widget( "ui.tooltip", {

function position( event ) {
positionOption.of = event;
if ( tooltip.is( ":hidden" ) ) {
return;
}
tooltip.position( positionOption );
}
if ( this.options.track && event && /^mouse/.test( event.originalEvent.type ) ) {
positionOption = $.extend( {}, this.options.position );
this._on( this.document, {
mousemove: position
});
Expand All @@ -259,6 +262,17 @@ $.widget( "ui.tooltip", {
tooltip.hide();

this._show( tooltip, this.options.show );
// Handle tracking tooltips that are shown with a delay (#8644). As soon
// as the tooltip is visible, position the tooltip using the most recent
// event.
if ( this.options.show && this.options.show.delay ) {
delayedShow = setInterval(function() {
if ( tooltip.is( ":visible" ) ) {
position( positionOption.of );
clearInterval( delayedShow );
}
}, $.fx.interval );
}

this._trigger( "open", event, { tooltip: tooltip } );

Expand Down

0 comments on commit 0b3e59f

Please sign in to comment.