From 3ff5b00953452dd4e98ad55a4e7448ac5bdbb845 Mon Sep 17 00:00:00 2001 From: blacksun Date: Fri, 29 Jun 2018 07:55:48 +0000 Subject: [PATCH] Minor code refactoring git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5417 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- .../qetgraphicshandleritem.cpp | 27 +++++++------------ .../qetgraphicshandleritem.h | 7 +++-- sources/qetgraphicsitem/conductor.cpp | 2 +- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp index d7b747f23..0ee80a50d 100644 --- a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp +++ b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp @@ -25,18 +25,19 @@ */ QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size) : m_size(size) -{} +{ + setFlag(QGraphicsItem::ItemIgnoresTransformations); + + m_handler_rect.setRect(0-m_size/2, 0-m_size/2, m_size, m_size); + m_br.setRect(-1-m_size/2, -1-m_size/2, m_size+2, m_size+2); +} /** * @brief QetGraphicsHandlerItem::boundingRect * @return */ -QRectF QetGraphicsHandlerItem::boundingRect() const -{ - qreal rect_size = m_size * m_previous_zoom_factor; - QRectF rect(0-rect_size/2, 0-rect_size/2, rect_size, rect_size); - rect.adjust(-0.1, -0.1, 0.1, 0.1); - return rect; +QRectF QetGraphicsHandlerItem::boundingRect() const { + return m_br; } /** @@ -60,23 +61,13 @@ void QetGraphicsHandlerItem::paint(QPainter *painter, const QStyleOptionGraphics Q_UNUSED(option); Q_UNUSED(widget); - qreal zoom_factor = 1.0/painter->transform().m11(); - if(zoom_factor != m_previous_zoom_factor) - { - prepareGeometryChange(); - m_previous_zoom_factor = zoom_factor; - } - - qreal rect_size = m_size * m_previous_zoom_factor; - QRectF rect(0-rect_size/2, 0-rect_size/2, rect_size, rect_size); - painter->save(); painter->setBrush(QBrush(m_color)); QPen pen(QBrush(m_color), 2, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin); pen.setCosmetic(true); painter->setPen(pen); painter->setRenderHint(QPainter::Antialiasing, true); - painter->drawEllipse(rect); + painter->drawEllipse(m_handler_rect); painter->restore(); } diff --git a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h index 542a900a9..f872c11e7 100644 --- a/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h +++ b/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h @@ -19,6 +19,7 @@ #define QETGRAPHICSHANDLERITEM_H #include +#include /** * @brief The QetGraphicsHandlerItem class @@ -42,9 +43,11 @@ class QetGraphicsHandlerItem : public QGraphicsItem void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; private: - qreal m_size, - m_previous_zoom_factor = 1; + QRectF m_handler_rect, + m_br; + qreal m_size; QColor m_color; + QPen m_pen; public: static QVector handlerForPoint(const QVector &points, int size = 10); diff --git a/sources/qetgraphicsitem/conductor.cpp b/sources/qetgraphicsitem/conductor.cpp index d8220b3fa..8b2061c6c 100644 --- a/sources/qetgraphicsitem/conductor.cpp +++ b/sources/qetgraphicsitem/conductor.cpp @@ -780,7 +780,7 @@ void Conductor::handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSce if (m_moving_segment) { //Snap the mouse pos to grid - QPointF pos_ = Diagram::snapToGrid(mapFromItem(qghi, event->pos())); + QPointF pos_ = Diagram::snapToGrid(mapFromScene(event->scenePos())); //Position of the last point QPointF p = m_moved_segment -> middle();