aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/tests/unit/tooltip.js30
-rw-r--r--js/tooltip.js3
2 files changed, 33 insertions, 0 deletions
diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js
index 351dd61cb..01c90a81c 100644
--- a/js/tests/unit/tooltip.js
+++ b/js/tests/unit/tooltip.js
@@ -928,6 +928,36 @@ $(function () {
$tooltip.trigger('mouseenter')
})
+ test('should hide tip after hide delay even if moused left before end of fade in', function () {
+ stop()
+
+ var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip for test"/>')
+ .appendTo('#qunit-fixture')
+ .bootstrapTooltip({ delay: { show: 10, hide: 10 }})
+
+ setTimeout(function () {
+ ok(!$tooltip.data('bs.tooltip').$tip, '1ms: tooltip exists')
+
+ setTimeout(function () {
+ ok($tooltip.data('bs.tooltip').$tip.is('.fade.in'), '10ms: tooltip faded in')
+ }, 10)
+
+ setTimeout(function () {
+ ok($tooltip.data('bs.tooltip').$tip.is('.fade.in'), '15ms: tooltip faded in')
+
+ $tooltip.trigger('mouseout')
+ }, 15)
+
+ setTimeout(function () {
+ ok(!$tooltip.data('bs.tooltip').$tip.is('.fade.in'), '30ms: tooltip faded out')
+
+ start()
+ }, 30)
+ }, 0)
+
+ $tooltip.trigger('mouseenter')
+ })
+
test('should correctly position tooltips on SVG elements', function () {
if (!window.SVGElement) {
// Skip IE8 since it doesn't support SVG
diff --git a/js/tooltip.js b/js/tooltip.js
index 08d22971f..6af0e7d72 100644
--- a/js/tooltip.js
+++ b/js/tooltip.js
@@ -207,8 +207,11 @@
this.applyPlacement(calculatedOffset, placement)
var complete = function () {
+ var prevHoverState = that.hoverState
that.$element.trigger('shown.bs.' + that.type)
that.hoverState = null
+
+ if (prevHoverState == 'out') that.leave(that)
}
$.support.transition && this.$tip.hasClass('fade') ?