mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Tooltip: Treat the tooltip as closing until it's fully removed
This ensures that we don't trigger the close event twice if the tooltip is destroyed during the hide animation. Closes gh-1306
This commit is contained in:
parent
d157b669b7
commit
32bef7ad4e
@ -154,4 +154,24 @@ asyncTest( "programmatic focus with async content", function() {
|
||||
element.focus();
|
||||
});
|
||||
|
||||
asyncTest( "destroy during hide animation; only one close event", function() {
|
||||
expect( 1 );
|
||||
|
||||
var element = $( "#tooltipped1" ).tooltip({
|
||||
show: false,
|
||||
hide: true
|
||||
});
|
||||
|
||||
element.bind( "tooltipclose", function() {
|
||||
ok( true, "tooltip closed" );
|
||||
});
|
||||
|
||||
element.tooltip( "open" );
|
||||
element.tooltip( "close" );
|
||||
setTimeout(function() {
|
||||
element.tooltip( "destroy" );
|
||||
start();
|
||||
});
|
||||
});
|
||||
|
||||
}( jQuery ) );
|
||||
|
@ -296,6 +296,8 @@ return $.widget( "ui.tooltip", {
|
||||
}, this.options.position ) );
|
||||
}
|
||||
|
||||
this.hiding = false;
|
||||
this.closing = false;
|
||||
tooltip.hide();
|
||||
|
||||
this._show( tooltip, this.options.show );
|
||||
@ -362,9 +364,12 @@ return $.widget( "ui.tooltip", {
|
||||
|
||||
this._removeDescribedBy( target );
|
||||
|
||||
this.hiding = true;
|
||||
tooltip.stop( true );
|
||||
this._hide( tooltip, this.options.hide, function() {
|
||||
that._removeTooltip( $( this ) );
|
||||
this.hiding = false;
|
||||
this.closing = false;
|
||||
});
|
||||
|
||||
target.removeData( "ui-tooltip-open" );
|
||||
@ -385,7 +390,9 @@ return $.widget( "ui.tooltip", {
|
||||
|
||||
this.closing = true;
|
||||
this._trigger( "close", event, { tooltip: tooltip } );
|
||||
if ( !this.hiding ) {
|
||||
this.closing = false;
|
||||
}
|
||||
},
|
||||
|
||||
_tooltip: function( element ) {
|
||||
|
Loading…
Reference in New Issue
Block a user