From bfab86678fc31507b00544a61f3fb27186a90740 Mon Sep 17 00:00:00 2001 From: Andrew Couch Date: Tue, 16 Oct 2012 12:55:50 -0400 Subject: [PATCH 1/2] Tooltip: do not attempt to position if tooltip is hidden. Fixed #8644 - Delayed tooltips set to track should reposition when being shown for the first time. --- ui/jquery.ui.tooltip.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/jquery.ui.tooltip.js b/ui/jquery.ui.tooltip.js index 980b43868e9..a8a0f1e5459 100644 --- a/ui/jquery.ui.tooltip.js +++ b/ui/jquery.ui.tooltip.js @@ -213,6 +213,9 @@ $.widget( "ui.tooltip", { tooltip.find( ".ui-tooltip-content" ).html( content ); function position( event ) { + if ( tooltip.is( ":hidden" ) ){ + return; + } positionOption.of = event; tooltip.position( positionOption ); } From ce7606cdc094caef042dc368eafb0ced9a4f5b60 Mon Sep 17 00:00:00 2001 From: Andrew Couch Date: Tue, 16 Oct 2012 13:50:21 -0400 Subject: [PATCH 2/2] Tooltip: test for fix for #8644 --- tests/unit/tooltip/tooltip_options.js | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/unit/tooltip/tooltip_options.js b/tests/unit/tooltip/tooltip_options.js index db193e8fa53..e5046f4648b 100644 --- a/tests/unit/tooltip/tooltip_options.js +++ b/tests/unit/tooltip/tooltip_options.js @@ -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 ) );