@@ -34,6 +34,7 @@ LineItem::LineItem(graphicsUtils::AbstractCoordinateSystem *metricSystem,
3434 setX2 (end.x ());
3535 setY2 (end.y ());
3636 setPrivateData ();
37+ connect (this , &AbstractItem::mouseInteractionStarted, this , [this ]() {mEstimatedPos = pos (); });
3738}
3839
3940AbstractItem *LineItem::clone () const
@@ -45,7 +46,7 @@ AbstractItem *LineItem::clone() const
4546
4647QAction *LineItem::lineTool ()
4748{
48- QAction * const result = new QAction (QIcon (" :/icons/2d_ruler.png" ), tr (" Line (L)" ), nullptr );
49+ auto * const result = new QAction (QIcon (" :/icons/2d_ruler.png" ), tr (" Line (L)" ), nullptr );
4950 result->setShortcuts ({QKeySequence (Qt::Key_L), QKeySequence (Qt::Key_5)});
5051 result->setCheckable (true );
5152 return result;
@@ -65,6 +66,11 @@ QRectF LineItem::boundingRect() const
6566 return mLineImpl .boundingRect (x1 (), y1 (), x2 (), y2 (), pen ().width (), drift);
6667}
6768
69+ QRectF LineItem::calcNecessaryBoundingRect () const
70+ {
71+ return {qMin (x1 (), x2 ()), qMin (y1 (), y2 ()), qAbs (x2 () - x1 ()), qAbs (y2 () - y1 ())};
72+ }
73+
6874void LineItem::drawItem (QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
6975{
7076 Q_UNUSED (option);
@@ -96,15 +102,9 @@ QPainterPath LineItem::resizeArea() const
96102
97103void LineItem::resizeItem (QGraphicsSceneMouseEvent *event)
98104{
99- const bool isResizing = dragState () == TopLeft || dragState () == BottomRight;
100- if (event->modifiers () & Qt::ShiftModifier && isResizing) {
101- AbstractItem::resizeItem (event);
102- reshapeRectWithShift ();
103- } else if (isResizing) {
104- AbstractItem::resizeItem (event);
105- } else {
106- setFlag (QGraphicsItem::ItemIsMovable, true );
107- }
105+ const auto showGrid = qReal::SettingsManager::value (" 2dShowGrid" ).toBool ();
106+ const auto gridSize = qReal::SettingsManager::value (" 2dDoubleGridCellSize" ).toReal ();
107+ AbstractItem::resizeItemCommon (event, mEstimatedPos , showGrid, gridSize);
108108}
109109
110110void LineItem::reshapeRectWithShift ()
@@ -113,7 +113,7 @@ void LineItem::reshapeRectWithShift()
113113 const qreal differenceY = qAbs (y2 () - y1 ());
114114 const qreal differenceXY = qAbs (differenceX - differenceY);
115115 const qreal size = qMax (differenceX, differenceY);
116- const int delta = size / 2 ;
116+ const int delta = static_cast < int >( size / 2 ) ;
117117 if (differenceXY > delta) {
118118 const qreal corner1X = dragState () == TopLeft ? x2 () : x1 ();
119119 const qreal corner1Y = dragState () == TopLeft ? y2 () : y1 ();
0 commit comments