diff --git a/src/components/App.tsx b/src/components/App.tsx index 8ec5e040a..30979a6a7 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -3758,7 +3758,7 @@ class App extends React.Component { const selectedElements = this.scene.getSelectedElements(this.state); if (selectedElements.length === 1 && isLinearElement(selectedElements[0])) { - if (selectedElements[0].roundness) { + if (!event[KEYS.CTRL_OR_CMD]) { const pointUnderCursorIndex = LinearElementEditor.getPointIndexUnderCursor( selectedElements[0], diff --git a/src/renderer/renderScene.ts b/src/renderer/renderScene.ts index 64099d417..db0b2c73e 100644 --- a/src/renderer/renderScene.ts +++ b/src/renderer/renderScene.ts @@ -266,6 +266,16 @@ const renderSingleLinearPoint = ( } }; +const isLinearPointAtIndexSquared = ( + element: NonDeleted, + index: number, +) => { + const splitting = element.segmentSplitIndices + ? element.segmentSplitIndices.includes(index) + : false; + return element.roundness ? splitting : !splitting; +}; + const renderLinearPointHandles = ( context: CanvasRenderingContext2D, appState: InteractiveCanvasAppState, @@ -287,19 +297,13 @@ const renderLinearPointHandles = ( const isSelected = !!appState.editingLinearElement?.selectedPointsIndices?.includes(idx); - const segmented = element.roundness - ? element.segmentSplitIndices - ? element.segmentSplitIndices.includes(idx) - : false - : false; - renderSingleLinearPoint( context, appState, point, radius, isSelected, - segmented, + isLinearPointAtIndexSquared(element, idx), ); }); @@ -393,15 +397,15 @@ const renderLinearElementPointHighlight = ( element, hoverPointIndex, ); - const segmented = element.roundness - ? element.segmentSplitIndices - ? element.segmentSplitIndices.includes(hoverPointIndex) - : false - : false; context.save(); context.translate(appState.scrollX, appState.scrollY); - highlightPoint(point, context, appState, segmented); + highlightPoint( + point, + context, + appState, + isLinearPointAtIndexSquared(element, hoverPointIndex), + ); context.restore(); };