diff --git a/src/app/ui/editor/drawing_state.cpp b/src/app/ui/editor/drawing_state.cpp index 76954697d..7944cd477 100644 --- a/src/app/ui/editor/drawing_state.cpp +++ b/src/app/ui/editor/drawing_state.cpp @@ -146,12 +146,14 @@ bool DrawingState::onMouseUp(Editor* editor, MouseMessage* msg) { ASSERT(m_toolLoopManager != NULL); - // Selection tools are cancelled with a simple click (only "one - // point" controller selection tools aren't cancelled with one click, - // i.e. the magic wand). + // Selection tools with Replace mode are cancelled with a simple click. + // ("one point" controller selection tool i.e. the magic wand, and + // selection tools with Add or Subtract mode aren't cancelled with + // one click). if (!m_toolLoop->getInk()->isSelection() || m_toolLoop->getController()->isOnePoint() || - m_mouseMoveReceived) { + m_mouseMoveReceived || + editor->getToolLoopModifiers() != tools::ToolLoopModifiers::kReplaceSelection) { // Notify the release of the mouse button to the tool loop // manager. This is the correct way to say "the user finishes the // drawing trace correctly".