From b2c7baf10dbd6ed89015a4f3be48e8625b39d79a Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Sat, 27 Mar 2021 12:11:51 +0200 Subject: [PATCH] Avoid recursive event replay loops (#8738) * chart._lastEvent = null while processing onHover * Pass replay flag to external tooltip * Add test for replay * cc --- src/core/core.controller.js | 15 +++--- src/plugins/plugin.tooltip.js | 6 +-- .../controller.doughnut/event-replay.js | 50 ++++++++++++++++++ .../controller.doughnut/event-replay.png | Bin 0 -> 40367 bytes test/specs/plugin.tooltip.tests.js | 6 +-- 5 files changed, 65 insertions(+), 12 deletions(-) create mode 100644 test/fixtures/controller.doughnut/event-replay.js create mode 100644 test/fixtures/controller.doughnut/event-replay.png diff --git a/src/core/core.controller.js b/src/core/core.controller.js index 8a8e6984e..a0458616f 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -1075,8 +1075,7 @@ class Chart { */ _handleEvent(e, replay) { const me = this; - const lastActive = me._active || []; - const options = me.options; + const {_active: lastActive = [], options} = me; const hoverOptions = options.hover; // If the event is replayed from `update`, we should evaluate with the final positions. @@ -1096,14 +1095,16 @@ class Chart { let active = []; let changed = false; + let lastEvent = null; // Find Active Elements for hover and tooltips - if (e.type === 'mouseout') { - me._lastEvent = null; - } else { + if (e.type !== 'mouseout') { active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition); - me._lastEvent = e.type === 'click' ? me._lastEvent : e; + lastEvent = e.type === 'click' ? me._lastEvent : e; } + // Set _lastEvent to null while we are processing the event handlers. + // This prevents recursion if the handler calls chart.update() + me._lastEvent = null; // Invoke onHover hook callCallback(options.onHover || hoverOptions.onHover, [e, active, me], me); @@ -1120,6 +1121,8 @@ class Chart { me._updateHoverStyles(active, lastActive, replay); } + me._lastEvent = lastEvent; + return changed; } } diff --git a/src/plugins/plugin.tooltip.js b/src/plugins/plugin.tooltip.js index 6a488f01c..7b59d9493 100644 --- a/src/plugins/plugin.tooltip.js +++ b/src/plugins/plugin.tooltip.js @@ -524,7 +524,7 @@ export class Tooltip extends Element { return tooltipItems; } - update(changed) { + update(changed, replay) { const me = this; const options = me.options.setContext(me.getContext()); const active = me._active; @@ -574,7 +574,7 @@ export class Tooltip extends Element { } if (changed && options.external) { - options.external.call(me, {chart: me._chart, tooltip: me}); + options.external.call(me, {chart: me._chart, tooltip: me, replay}); } } @@ -1023,7 +1023,7 @@ export class Tooltip extends Element { y: e.y }; - me.update(true); + me.update(true, replay); } } diff --git a/test/fixtures/controller.doughnut/event-replay.js b/test/fixtures/controller.doughnut/event-replay.js new file mode 100644 index 000000000..fc367c358 --- /dev/null +++ b/test/fixtures/controller.doughnut/event-replay.js @@ -0,0 +1,50 @@ +function drawMousePoint(ctx, center) { + ctx.beginPath(); + ctx.arc(center.x, center.y, 8, 0, Math.PI * 2); + ctx.fillStyle = 'yellow'; + ctx.fill(); +} + +const canvas = document.createElement('canvas'); +canvas.width = 512; +canvas.height = 512; +const ctx = canvas.getContext('2d'); + +module.exports = { + config: { + type: 'pie', + data: { + datasets: [{ + backgroundColor: ['red', 'green', 'blue'], + hoverBackgroundColor: 'black', + data: [1, 1, 1] + }] + } + }, + options: { + canvas: { + width: 512, + height: 512 + }, + async run(chart) { + ctx.drawImage(chart.canvas, 0, 0, 256, 256); + + const arc = chart.getDatasetMeta(0).data[0]; + const center = arc.getCenterPoint(); + await jasmine.triggerMouseEvent(chart, 'mousemove', arc); + drawMousePoint(chart.ctx, center); + ctx.drawImage(chart.canvas, 256, 0, 256, 256); + + chart.toggleDataVisibility(0); + chart.update(); + drawMousePoint(chart.ctx, center); + ctx.drawImage(chart.canvas, 0, 256, 256, 256); + + await jasmine.triggerMouseEvent(chart, 'mouseout', arc); + ctx.drawImage(chart.canvas, 256, 256, 256, 256); + + Chart.helpers.clearCanvas(chart.canvas); + chart.ctx.drawImage(canvas, 0, 0); + } + } +}; diff --git a/test/fixtures/controller.doughnut/event-replay.png b/test/fixtures/controller.doughnut/event-replay.png new file mode 100644 index 0000000000000000000000000000000000000000..5d14360699b3546a3202105769cc7c0b7f32ff5d GIT binary patch literal 40367 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