mirror of
https://github.com/chartjs/Chart.js.git
synced 2025-12-08 20:36:08 +00:00
Fix tooltip animation when target changes while animating (#5005)
* Fix issue #4989 - tooltip in 'index' mode doesn't animate smoothly. * Change: different approach for smooth tooltip animation in 'index' mode, when target doesn't change. * Fix: jslint error * Fix: remove spyOn pivot from test * Add: setAnimating-flag in transition used to set on tooltip.transition to keep track of tooltip animation. * Decrease code complexity * Revert transition and complexity changes Add: use 'tooltip._start' as workaround check for tooltip animation status
This commit is contained in:
parent
6f34b2224f
commit
4e47c178e4
@ -849,7 +849,15 @@ module.exports = function(Chart) {
|
||||
me._bufferedRequest = null;
|
||||
|
||||
var changed = me.handleEvent(e);
|
||||
changed |= tooltip && tooltip.handleEvent(e);
|
||||
// for smooth tooltip animations issue #4989
|
||||
// the tooltip should be the source of change
|
||||
// Animation check workaround:
|
||||
// tooltip._start will be null when tooltip isn't animating
|
||||
if (tooltip) {
|
||||
changed = tooltip._start
|
||||
? tooltip.handleEvent(e)
|
||||
: changed | tooltip.handleEvent(e);
|
||||
}
|
||||
|
||||
plugins.notify(me, 'afterEvent', [e]);
|
||||
|
||||
|
||||
@ -852,25 +852,19 @@ module.exports = function(Chart) {
|
||||
// Remember Last Actives
|
||||
changed = !helpers.arrayEquals(me._active, me._lastActive);
|
||||
|
||||
// If tooltip didn't change, do not handle the target event
|
||||
if (!changed) {
|
||||
return false;
|
||||
}
|
||||
// Only handle target event on tooltip change
|
||||
if (changed) {
|
||||
me._lastActive = me._active;
|
||||
|
||||
me._lastActive = me._active;
|
||||
if (options.enabled || options.custom) {
|
||||
me._eventPosition = {
|
||||
x: e.x,
|
||||
y: e.y
|
||||
};
|
||||
|
||||
if (options.enabled || options.custom) {
|
||||
me._eventPosition = {
|
||||
x: e.x,
|
||||
y: e.y
|
||||
};
|
||||
|
||||
var model = me._model;
|
||||
me.update(true);
|
||||
me.pivot();
|
||||
|
||||
// See if our tooltip position changed
|
||||
changed |= (model.x !== me._model.x) || (model.y !== me._model.y);
|
||||
me.update(true);
|
||||
me.pivot();
|
||||
}
|
||||
}
|
||||
|
||||
return changed;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user