From 88b56f54537990552789abf2caec1f9d2c25c5f1 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 14 Mar 2017 12:24:59 +0200 Subject: [PATCH] Fix bug with resizing free grainline. --HG-- branch : feature --- src/libs/vtools/tools/vtoolseamallowance.cpp | 1 + src/libs/vwidgets/vgrainlineitem.cpp | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/libs/vtools/tools/vtoolseamallowance.cpp b/src/libs/vtools/tools/vtoolseamallowance.cpp index d2b0da730..4bce8e9e2 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.cpp +++ b/src/libs/vtools/tools/vtoolseamallowance.cpp @@ -786,6 +786,7 @@ void VToolSeamAllowance::SaveResizeGrainline(qreal dLength) VPiece newDet = oldDet; dLength = FromPixel(dLength, *VDataTool::data.GetPatternUnit()); + newDet.GetGrainlineGeometry().SetPos(m_grainLine->pos()); newDet.GetGrainlineGeometry().SetLength(QString().setNum(dLength)); SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, id); resizeCommand->setText(tr("resize grainline")); diff --git a/src/libs/vwidgets/vgrainlineitem.cpp b/src/libs/vwidgets/vgrainlineitem.cpp index 0a138bb5f..9b6264115 100644 --- a/src/libs/vwidgets/vgrainlineitem.cpp +++ b/src/libs/vwidgets/vgrainlineitem.cpp @@ -381,7 +381,7 @@ void VGrainlineItem::mouseMoveEvent(QGraphicsSceneMouseEvent* pME) { qreal dLen = qSqrt(ptDiff.x()*ptDiff.x() + ptDiff.y()*ptDiff.y()); qreal dAng = qAtan2(-ptDiff.y(), ptDiff.x()); - dLen = dLen*qCos(dAng - m_dRotation); + dLen = -dLen*qCos(dAng - m_dRotation); qreal dPrevLen = m_dLength; // try with new length if (not (m_moveType & IsMovable)) @@ -394,7 +394,12 @@ void VGrainlineItem::mouseMoveEvent(QGraphicsSceneMouseEvent* pME) if (m_moveType & IsMovable) { - pos = m_ptStartPos; + QLineF grainline(this->pos().x(), this->pos().y(), + this->pos().x() + dPrevLen, this->pos().y()); + grainline.setAngle(qRadiansToDegrees(m_dRotation)); + grainline = QLineF(grainline.p2(), grainline.p1()); + grainline.setLength(m_dLength); + pos = grainline.p2(); } else { @@ -416,10 +421,7 @@ void VGrainlineItem::mouseMoveEvent(QGraphicsSceneMouseEvent* pME) } else { - if (not (m_moveType & IsMovable)) - { - setPos(pos); - } + setPos(pos); } UpdateRectangle();