diff --git a/src/painteditor/Path.js b/src/painteditor/Path.js index f0b7fb8..2ce184b 100644 --- a/src/painteditor/Path.js +++ b/src/painteditor/Path.js @@ -851,20 +851,30 @@ export default class Path { } static getHitIndex (ctx, commands, pt) { - ctx.save(); - ctx.beginPath(); - for (var i = 0; i < commands.length; i++) { - SVG2Canvas.drawCommand(ctx, commands[i]); - ctx.stroke(); - pt = Vector.floor(pt); - var pixel = ctx.getImageData(pt.x, pt.y, 1, 1).data; - if (pixel[3] != 0) { - return i; + var drawWithLineMask = function (lineWidth) { + ctx.save(); + ctx.lineWidth = lineWidth; + ctx.beginPath(); + for (var i = 0; i < commands.length; i++) { + SVG2Canvas.drawCommand(ctx, commands[i]); + ctx.stroke(); + pt = Vector.floor(pt); + var pixel = ctx.getImageData(pt.x, pt.y, 1, 1).data; + if (pixel[3] != 0) { + return i; + } } + ctx.stroke(); + ctx.restore(); + }; + // When using a mouse to add dragging points to paths, + // we need to try a precise guess first. + // For more detail see #504 + var index = drawWithLineMask(2); + if (index > -1) { + return index; } - ctx.stroke(); - ctx.restore(); - return -1; + return drawWithLineMask(Ghost.linemask); } static getHitPointIndex (list, pt) {