From eb675f49cef5d4540f9bd8727f07c52f3af3960a Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 10 Mar 2017 17:07:23 +0200 Subject: [PATCH] If selected center pin point resize by extending both sides. --HG-- branch : feature --- src/libs/vwidgets/vgrainlineitem.cpp | 33 +++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/libs/vwidgets/vgrainlineitem.cpp b/src/libs/vwidgets/vgrainlineitem.cpp index 5c1b64e4f..458b4609e 100644 --- a/src/libs/vwidgets/vgrainlineitem.cpp +++ b/src/libs/vwidgets/vgrainlineitem.cpp @@ -384,13 +384,44 @@ void VGrainlineItem::mouseMoveEvent(QGraphicsSceneMouseEvent* pME) dLen = dLen*qCos(dAng - m_dRotation); qreal dPrevLen = m_dLength; // try with new length + if (not (m_moveType & IsMovable)) + { + dLen *= 2; + } m_dLength = m_dStartLength + dLen; + + QPointF pos; + + if (m_moveType & IsMovable) + { + pos = m_ptStartPos; + } + else + { + QLineF grainline(m_ptCenter.x(), m_ptCenter.y(), + m_ptCenter.x() + m_dLength / 2.0, m_ptCenter.y()); + + grainline.setAngle(qRadiansToDegrees(m_dRotation)); + grainline = QLineF(grainline.p2(), grainline.p1()); + grainline.setLength(m_dLength); + + pos = grainline.p2(); + } + qreal dX; qreal dY; - if (IsContained(m_ptStartPos, m_dRotation, dX, dY) == false) + if (IsContained(pos, m_dRotation, dX, dY) == false) { m_dLength = dPrevLen; } + else + { + if (not (m_moveType & IsMovable)) + { + setPos(pos); + } + } + UpdateRectangle(); Update(); }