Index: third_party/polymer/v1_0/components-chromium/paper-tooltip/paper-tooltip-extracted.js |
diff --git a/third_party/polymer/v1_0/components-chromium/paper-tooltip/paper-tooltip-extracted.js b/third_party/polymer/v1_0/components-chromium/paper-tooltip/paper-tooltip-extracted.js |
index ed84ac2f51a755320f4281e4f0868f7fa50f525c..536a2b8d35693ab1b3fadb28c022de1a2929e3f1 100644 |
--- a/third_party/polymer/v1_0/components-chromium/paper-tooltip/paper-tooltip-extracted.js |
+++ b/third_party/polymer/v1_0/components-chromium/paper-tooltip/paper-tooltip-extracted.js |
@@ -17,7 +17,7 @@ Polymer({ |
*/ |
for: { |
type: String, |
- observer: '_forChanged' |
+ observer: '_findTarget' |
}, |
/** |
@@ -26,7 +26,8 @@ Polymer({ |
*/ |
manualMode: { |
type: Boolean, |
- value: false |
+ value: false, |
+ observer: '_manualModeChanged' |
}, |
/** |
@@ -104,7 +105,6 @@ Polymer({ |
listeners: { |
'neon-animation-finish': '_onAnimationFinish', |
- 'mouseenter': 'hide' |
}, |
/** |
@@ -129,26 +129,12 @@ Polymer({ |
}, |
attached: function() { |
- this._target = this.target; |
- |
- if (this.manualMode) |
- return; |
- |
- this.listen(this._target, 'mouseenter', 'show'); |
- this.listen(this._target, 'focus', 'show'); |
- this.listen(this._target, 'mouseleave', 'hide'); |
- this.listen(this._target, 'blur', 'hide'); |
- this.listen(this._target, 'tap', 'hide'); |
+ this._findTarget(); |
}, |
detached: function() { |
- if (this._target && !this.manualMode) { |
- this.unlisten(this._target, 'mouseenter', 'show'); |
- this.unlisten(this._target, 'focus', 'show'); |
- this.unlisten(this._target, 'mouseleave', 'hide'); |
- this.unlisten(this._target, 'blur', 'hide'); |
- this.unlisten(this._target, 'tap', 'hide'); |
- } |
+ if (!this.manualMode) |
+ this._removeListeners(); |
}, |
show: function() { |
@@ -165,6 +151,7 @@ Polymer({ |
this.toggleClass('hidden', false, this.$.tooltip); |
this.updatePosition(); |
+ this.animationConfig.entry[0].timing = this.animationConfig.entry[0].timing || {}; |
this.animationConfig.entry[0].timing.delay = this.animationDelay; |
this._animationPlaying = true; |
this.playAnimation('entry'); |
@@ -190,10 +177,6 @@ Polymer({ |
this.playAnimation('exit'); |
}, |
- _forChanged: function() { |
- this._target = this.target; |
- }, |
- |
updatePosition: function() { |
if (!this._target || !this.offsetParent) |
return; |
@@ -260,10 +243,49 @@ Polymer({ |
}, |
+ _addListeners: function() { |
+ if (this._target) { |
+ this.listen(this._target, 'mouseenter', 'show'); |
+ this.listen(this._target, 'focus', 'show'); |
+ this.listen(this._target, 'mouseleave', 'hide'); |
+ this.listen(this._target, 'blur', 'hide'); |
+ this.listen(this._target, 'tap', 'hide'); |
+ } |
+ this.listen(this, 'mouseenter', 'hide'); |
+ }, |
+ |
+ _findTarget: function() { |
+ if (!this.manualMode) |
+ this._removeListeners(); |
+ |
+ this._target = this.target; |
+ |
+ if (!this.manualMode) |
+ this._addListeners(); |
+ }, |
+ |
+ _manualModeChanged: function() { |
+ if (this.manualMode) |
+ this._removeListeners(); |
+ else |
+ this._addListeners(); |
+ }, |
+ |
_onAnimationFinish: function() { |
this._animationPlaying = false; |
if (!this._showing) { |
this.toggleClass('hidden', true, this.$.tooltip); |
} |
}, |
+ |
+ _removeListeners: function() { |
+ if (this._target) { |
+ this.unlisten(this._target, 'mouseenter', 'show'); |
+ this.unlisten(this._target, 'focus', 'show'); |
+ this.unlisten(this._target, 'mouseleave', 'hide'); |
+ this.unlisten(this._target, 'blur', 'hide'); |
+ this.unlisten(this._target, 'tap', 'hide'); |
+ } |
+ this.unlisten(this, 'mouseenter', 'hide'); |
+ } |
}); |