Index: plugins/tools/basictools/kis_tool_move.h =================================================================== --- plugins/tools/basictools/kis_tool_move.h +++ plugins/tools/basictools/kis_tool_move.h @@ -119,8 +119,6 @@ MoveToolOptionsWidget* m_optionsWidget; - QPoint m_totalTopLeft; - QPoint m_dragStart; ///< Point where current cursor dragging began QPoint m_accumulatedOffset; ///< Total offset including multiple clicks, up/down/left/right keys, etc. added together Index: plugins/tools/basictools/kis_tool_move.cc =================================================================== --- plugins/tools/basictools/kis_tool_move.cc +++ plugins/tools/basictools/kis_tool_move.cc @@ -145,14 +145,6 @@ */ if (m_strokeId) { if (KritaUtils::compareListsUnordered(nodes, m_currentlyProcessingNodes)) { - QRect totalBounds; - - Q_FOREACH (KisNodeSP node, m_currentlyProcessingNodes) { - totalBounds |= node->projection()->nonDefaultPixelArea(); - } - - m_totalTopLeft = totalBounds.topLeft(); - return true; } else { endStroke(); @@ -182,14 +174,6 @@ m_currentlyProcessingNodes = nodes; m_accumulatedOffset = QPoint(); - QRect totalBounds; - - Q_FOREACH (KisNodeSP node, m_currentlyProcessingNodes) { - totalBounds |= node->projection()->nonDefaultPixelArea(); - } - - m_totalTopLeft = totalBounds.topLeft(); - return true; } @@ -220,13 +204,15 @@ showFloatingMessage( i18nc("floating message in move tool", "X: %1 px, Y: %2 px", - (m_totalTopLeft + offset).x(), - (m_totalTopLeft + offset).y()), + (m_startPosition + offset).x(), + (m_startPosition + offset).y()), QIcon(), 1000, KisFloatingMessage::High); } KisSignalsBlocker b(m_optionsWidget); - emit moveInNewPosition(m_totalTopLeft + offset); + emit moveInNewPosition(m_startPosition + offset); + + m_startPosition += offset; image()->addJob(m_strokeId, new MoveStrokeStrategy::Data(m_accumulatedOffset + offset)); m_accumulatedOffset += offset; @@ -355,13 +341,13 @@ showFloatingMessage( i18nc("floating message in move tool", "X: %1 px, Y: %2 px", - (m_totalTopLeft + (pos - m_dragStart)).x(), - (m_totalTopLeft + (pos - m_dragStart)).y()), + (m_startPosition + (pos - m_dragStart)).x(), + (m_startPosition + (pos - m_dragStart)).y()), QIcon(), 1000, KisFloatingMessage::High); } KisSignalsBlocker b(m_optionsWidget); - emit moveInNewPosition(m_totalTopLeft + (pos - m_dragStart)); + emit moveInNewPosition(m_startPosition + (pos - m_dragStart)); pos = applyModifiers(event->modifiers(), pos); drag(pos); @@ -377,6 +363,7 @@ pos = applyModifiers(event->modifiers(), pos); drag(pos); + m_startPosition += pos - m_dragStart; m_accumulatedOffset += pos - m_dragStart; } @@ -487,13 +474,15 @@ setMode(KisTool::PAINT_MODE); } - int offsetX = newX - m_totalTopLeft.x(); + int offsetX = newX - m_startPosition.x(); QPoint offset = QPoint(offsetX, 0); KisSignalsBlocker b(m_optionsWidget); - emit moveInNewPosition(m_totalTopLeft + offset); + emit moveInNewPosition(m_startPosition + offset); image()->addJob(m_strokeId, new MoveStrokeStrategy::Data(m_accumulatedOffset + offset)); + + m_startPosition += offset; m_accumulatedOffset += offset; @@ -511,13 +500,15 @@ setMode(KisTool::PAINT_MODE); } - int offsetY = newY - m_totalTopLeft.y(); + int offsetY = newY - m_startPosition.y(); QPoint offset = QPoint(0, offsetY); KisSignalsBlocker b(m_optionsWidget); - emit moveInNewPosition(m_totalTopLeft + offset); + emit moveInNewPosition(m_startPosition + offset); image()->addJob(m_strokeId, new MoveStrokeStrategy::Data(m_accumulatedOffset + offset)); + + m_startPosition += offset; m_accumulatedOffset += offset;