diff --git a/src/helper/selection-tools/reshape-tool.js b/src/helper/selection-tools/reshape-tool.js index 99d075c7..527405a3 100644 --- a/src/helper/selection-tools/reshape-tool.js +++ b/src/helper/selection-tools/reshape-tool.js @@ -33,6 +33,18 @@ const ReshapeModes = keyMirror({ class ReshapeTool extends paper.Tool { /** Distance within which mouse is considered to be hitting an item */ static get TOLERANCE () { + return ReshapeTool.HANDLE_RADIUS + ReshapeTool.HANDLE_PADDING; + } + /** + * Units of padding around the visible handle area that will still register clicks as "touching the handle" + */ + static get HANDLE_PADDING () { + return 1; + } + /** + * Handles' radius, including the stroke + */ + static get HANDLE_RADIUS () { return 5.25; } /** Clicks registered within this amount of time are registered as double clicks */ @@ -74,9 +86,10 @@ class ReshapeTool extends paper.Tool { this.onKeyUp = this.handleKeyUp; this.onKeyDown = this.handleKeyDown; - // A handle's size is given in diameter, and each handle has a 2.5-pixel stroke that isn't part of its size. + // A handle's size is given in diameter, and each handle has a 2.5-pixel stroke that isn't part of its size: + // https://github.com/LLK/paper.js/blob/a187e4c81cc63f3d48c5097b9a9fbddde9f057da/src/item/Item.js#L4480 // Size the handles such that clicking on either the stroke or the handle itself will be registered as a drag - paper.settings.handleSize = (ReshapeTool.TOLERANCE * 2) - 2.5; + paper.settings.handleSize = (ReshapeTool.HANDLE_RADIUS * 2) - 2.5; } /** * Returns the hit options for segments to use when conducting hit tests. Segments are only visible