From: Jukka Kurkela Date: Wed, 28 Jul 2021 11:57:35 +0000 (+0300) Subject: Fix _isPointInArea helper when no area is provided (#9489) X-Git-Tag: v3.5.1~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c837a9c12ec4fa7c519a170830a4adbb9898d09;p=thirdparty%2FChart.js.git Fix _isPointInArea helper when no area is provided (#9489) --- diff --git a/src/helpers/helpers.canvas.js b/src/helpers/helpers.canvas.js index c65f58115..d6290f2ec 100644 --- a/src/helpers/helpers.canvas.js +++ b/src/helpers/helpers.canvas.js @@ -251,8 +251,8 @@ export function drawPoint(ctx, options, x, y) { export function _isPointInArea(point, area, margin) { margin = margin || 0.5; // margin - default is to match rounded decimals - return point && area && point.x > area.left - margin && point.x < area.right + margin && - point.y > area.top - margin && point.y < area.bottom + margin; + return !area || (point && point.x > area.left - margin && point.x < area.right + margin && + point.y > area.top - margin && point.y < area.bottom + margin); } export function clipArea(ctx, area) { diff --git a/test/specs/helpers.canvas.tests.js b/test/specs/helpers.canvas.tests.js index 297ff03ef..ec7a53904 100644 --- a/test/specs/helpers.canvas.tests.js +++ b/test/specs/helpers.canvas.tests.js @@ -24,6 +24,9 @@ describe('Chart.helpers.canvas', function() { }); describe('isPointInArea', function() { + it('should return true when no area is provided', function() { + expect(helpers._isPointInArea({x: 1, y: 1})).toBe(true); + }); it('should determine if a point is in the area', function() { var isPointInArea = helpers._isPointInArea; var area = {left: 0, top: 0, right: 512, bottom: 256}; diff --git a/types/index.esm.d.ts b/types/index.esm.d.ts index 385c63593..fdb23250b 100644 --- a/types/index.esm.d.ts +++ b/types/index.esm.d.ts @@ -1629,7 +1629,7 @@ export interface FontSpec { export type TextAlign = 'left' | 'center' | 'right'; export interface VisualElement { - draw(ctx: CanvasRenderingContext2D): void; + draw(ctx: CanvasRenderingContext2D, area?: ChartArea): void; inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean): boolean; inXRange(mouseX: number, useFinalPosition?: boolean): boolean; inYRange(mouseY: number, useFinalPosition?: boolean): boolean;