diff --git a/libs/ui/tool/KisToolChangesTracker.cpp b/libs/ui/tool/KisToolChangesTracker.cpp index 2ea8dd0..6f4e30d 100644 --- a/libs/ui/tool/KisToolChangesTracker.cpp +++ b/libs/ui/tool/KisToolChangesTracker.cpp @@ -42,8 +42,10 @@ void KisToolChangesTracker::commitConfig(KisToolChangesTrackerDataSP state) void KisToolChangesTracker::requestUndo() { - if (m_d->undoStack.size() > 1) { - m_d->undoStack.removeLast(); + if (m_d->undoStack.isEmpty()) return; + + m_d->undoStack.removeLast(); + if (!m_d->undoStack.isEmpty()) { emit sigConfigChanged(m_d->undoStack.last()); } } diff --git a/plugins/tools/basictools/kis_tool_move.cc b/plugins/tools/basictools/kis_tool_move.cc index 6cd9cf3..323ed7a 100644 --- a/plugins/tools/basictools/kis_tool_move.cc +++ b/plugins/tools/basictools/kis_tool_move.cc @@ -293,7 +293,7 @@ void KisToolMove::paint(QPainter& gc, const KoViewConverter &converter) { Q_UNUSED(converter); - if (m_dragInProgress) { + if (m_dragInProgress || m_strokeId) { QPainterPath handles; handles.addRect(m_handlesRect.translated(currentOffset())); @@ -339,7 +339,12 @@ void KisToolMove::requestStrokeCancellation() void KisToolMove::requestUndoDuringStroke() { if (!m_strokeId) return; - m_changesTracker.requestUndo(); + + if (m_changesTracker.isEmpty()) { + cancelStroke(); + } else { + m_changesTracker.requestUndo(); + } } void KisToolMove::beginPrimaryAction(KoPointerEvent *event) @@ -462,6 +467,7 @@ void KisToolMove::endStroke() m_changesTracker.reset(); m_currentlyProcessingNodes.clear(); m_accumulatedOffset = QPoint(); + m_canvas->updateCanvas(); } void KisToolMove::slotTrackerChangedConfig(KisToolChangesTrackerDataSP state) @@ -488,6 +494,7 @@ void KisToolMove::cancelStroke() m_currentlyProcessingNodes.clear(); m_accumulatedOffset = QPoint(); notifyGuiAfterMove(); + m_canvas->updateCanvas(); } QWidget* KisToolMove::createOptionWidget() diff --git a/plugins/tools/tool_transform2/kis_tool_transform.cc b/plugins/tools/tool_transform2/kis_tool_transform.cc index a193b4d..6630857 100644 --- a/plugins/tools/tool_transform2/kis_tool_transform.cc +++ b/plugins/tools/tool_transform2/kis_tool_transform.cc @@ -811,7 +811,11 @@ void KisToolTransform::requestUndoDuringStroke() { if (!m_strokeData.strokeId()) return; - m_changesTracker.requestUndo(); + if (m_changesTracker.isEmpty()) { + cancelStroke(); + } else { + m_changesTracker.requestUndo(); + } } void KisToolTransform::requestStrokeEnd()