From 189847f8a58f1dad08d150fd3e7581a55b3f8a8a Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Sun, 16 Jun 2024 20:50:57 +1000 Subject: [PATCH] fix(ui): always use current brush width when making straight lines --- .../features/controlLayers/konva/events.ts | 57 +++++++++++++------ 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/invokeai/frontend/web/src/features/controlLayers/konva/events.ts b/invokeai/frontend/web/src/features/controlLayers/konva/events.ts index 1d98db35ec..36f03b7535 100644 --- a/invokeai/frontend/web/src/features/controlLayers/konva/events.ts +++ b/invokeai/frontend/web/src/features/controlLayers/konva/events.ts @@ -188,15 +188,24 @@ export const setStageEventHandlers = ({ if (toolState.selected === 'brush') { if (e.evt.shiftKey) { - // Extend the last line straight to the new point - setLastAddedPoint(pos); - onPointAddedToLine( - { - id: selectedEntity.id, - point: [pos.x - selectedEntity.x, pos.y - selectedEntity.y], - }, - selectedEntity.type - ); + const lastAddedPoint = getLastAddedPoint(); + // Create a straight line if holding shift + if (lastAddedPoint) { + onBrushLineAdded( + { + id: selectedEntity.id, + points: [ + lastAddedPoint.x - selectedEntity.x, + lastAddedPoint.y - selectedEntity.y, + pos.x - selectedEntity.x, + pos.y - selectedEntity.y, + ], + color: getCurrentFill(), + width: toolState.brush.width, + }, + selectedEntity.type + ); + } } else { onBrushLineAdded( { @@ -213,19 +222,28 @@ export const setStageEventHandlers = ({ selectedEntity.type ); } + setLastAddedPoint(pos); } if (toolState.selected === 'eraser') { if (e.evt.shiftKey) { - // Extend the last line straight to the new point - setLastAddedPoint(pos); - onPointAddedToLine( - { - id: selectedEntity.id, - point: [pos.x - selectedEntity.x, pos.y - selectedEntity.y], - }, - selectedEntity.type - ); + // Create a straight line if holding shift + const lastAddedPoint = getLastAddedPoint(); + if (lastAddedPoint) { + onEraserLineAdded( + { + id: selectedEntity.id, + points: [ + lastAddedPoint.x - selectedEntity.x, + lastAddedPoint.y - selectedEntity.y, + pos.x - selectedEntity.x, + pos.y - selectedEntity.y, + ], + width: toolState.eraser.width, + }, + selectedEntity.type + ); + } } else { onEraserLineAdded( { @@ -241,6 +259,7 @@ export const setStageEventHandlers = ({ selectedEntity.type ); } + setLastAddedPoint(pos); } }); @@ -341,6 +360,7 @@ export const setStageEventHandlers = ({ }, selectedEntity.type ); + setLastAddedPoint(pos); setIsDrawing(true); } } @@ -364,6 +384,7 @@ export const setStageEventHandlers = ({ }, selectedEntity.type ); + setLastAddedPoint(pos); setIsDrawing(true); } }