From e31695382f7a8ee97024a3cb3be4c903cb9ccb44 Mon Sep 17 00:00:00 2001 From: blacksun Date: Mon, 13 Jul 2015 12:01:02 +0000 Subject: [PATCH] Minor fix git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4049 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/dvevent/dveventaddshape.cpp | 19 +++++++++-- sources/qetgraphicsitem/qetshapeitem.cpp | 41 +++++++++--------------- sources/qetgraphicsitem/qetshapeitem.h | 3 -- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/sources/dvevent/dveventaddshape.cpp b/sources/dvevent/dveventaddshape.cpp index a1a1b4129..788e653da 100644 --- a/sources/dvevent/dveventaddshape.cpp +++ b/sources/dvevent/dveventaddshape.cpp @@ -64,6 +64,8 @@ bool DVEventAddShape::mousePressEvent(QMouseEvent *event) if (!m_dv->isInteractive() && m_diagram->isReadOnly()) return false; QPointF pos = m_dv->mapToScene(event->pos()); + if (event->modifiers() != Qt::ControlModifier) + pos = Diagram::snapToGrid(pos); //Action for left mouse click if (event -> button() == Qt::LeftButton) @@ -112,7 +114,11 @@ bool DVEventAddShape::mouseMoveEvent(QMouseEvent *event) if (m_shape_item && event -> buttons() == Qt::NoButton) { - m_shape_item -> setP2 (m_dv -> mapToScene (event -> pos())); + QPointF pos = m_dv->mapToScene(event->pos()); + if (event->modifiers() != Qt::ControlModifier) + pos = Diagram::snapToGrid(pos); + + m_shape_item -> setP2 (pos); return true; } @@ -136,7 +142,12 @@ bool DVEventAddShape::mouseReleaseEvent(QMouseEvent *event) if (m_shape_type == QetShapeItem::Polyline && (m_shape_item -> pointsCount() >= 3) ) { m_shape_item -> removePoints(); - m_shape_item -> setP2(m_dv -> mapToScene (event -> pos())); //Set the new last point under the cursor + + QPointF pos = m_dv->mapToScene(event->pos()); + if (event->modifiers() != Qt::ControlModifier) + pos = Diagram::snapToGrid(pos); + + m_shape_item -> setP2(pos); //Set the new last point under the cursor return true; } @@ -166,7 +177,9 @@ bool DVEventAddShape::mouseDoubleClickEvent(QMouseEvent *event) //If current item is a polyline, add it with an undo command if (m_shape_item && m_shape_type == QetShapeItem::Polyline && event -> button() == Qt::LeftButton) { - m_shape_item -> setP2 (m_dv -> mapToScene (event -> pos())); + //removePoints(); m_diagram -> undoStack().push (new AddItemCommand (m_shape_item, m_diagram)); m_shape_item = nullptr; //< set to nullptr for create new shape at next left clic return true; diff --git a/sources/qetgraphicsitem/qetshapeitem.cpp b/sources/qetgraphicsitem/qetshapeitem.cpp index 3b3606fa4..53a301424 100644 --- a/sources/qetgraphicsitem/qetshapeitem.cpp +++ b/sources/qetgraphicsitem/qetshapeitem.cpp @@ -38,8 +38,8 @@ QetShapeItem::QetShapeItem(QPointF p1, QPointF p2, ShapeType type, QGraphicsItem QetGraphicsItem(parent), m_shapeType(type), m_shapeStyle(Qt::DashLine), - m_P1 (Diagram::snapToGrid(p1)), - m_P2 (Diagram::snapToGrid(p2)), + m_P1 (p1), + m_P2 (p2), m_hovered(false), m_mouse_grab_handler(false), m_undo_command(nullptr) @@ -231,18 +231,6 @@ QPainterPath QetShapeItem::shape() const return (path); } -/** - * @brief QetShapeItem::changeGraphicsItem - * Change the curent type of this item to newtype - * @param newtype - */ -void QetShapeItem::changeGraphicsItem(const ShapeType &newtype) { - if (newtype == m_shapeType) return; - prepareGeometryChange(); - m_shapeType = newtype; - setTransformOriginPoint(boundingRect().center()); -} - /** * @brief QetShapeItem::paint * Paint this item @@ -508,7 +496,7 @@ bool QetShapeItem::fromXml(const QDomElement &e) { } } - changeGraphicsItem(QetShapeItem::ShapeType(e.attribute("type","0").toInt())); + m_shapeType = QetShapeItem::ShapeType(e.attribute("type","0").toInt()); return (true); } @@ -518,23 +506,26 @@ bool QetShapeItem::fromXml(const QDomElement &e) { * @param document parent document xml * @return element xml where is write this item */ -QDomElement QetShapeItem::toXml(QDomDocument &document) const { +QDomElement QetShapeItem::toXml(QDomDocument &document) const +{ QDomElement result = document.createElement("shape"); - //write some attribute + //write some attribute result.setAttribute("type", QString::number(m_shapeType)); result.setAttribute("style", QString::number(m_shapeStyle)); result.setAttribute("is_movable", bool(is_movable_)); - if (m_shapeType != Polyline) { - result.setAttribute("x1", mapToScene(m_P1).x()); - result.setAttribute("y1", mapToScene(m_P1).y()); - result.setAttribute("x2", mapToScene(m_P2).x()); - result.setAttribute("y2", mapToScene(m_P2).y()); + if (m_shapeType != Polyline) + { + result.setAttribute("x1", QString::number(mapToScene(m_P1).x())); + result.setAttribute("y1", QString::number(mapToScene(m_P1).y())); + result.setAttribute("x2", QString::number(mapToScene(m_P2).x())); + result.setAttribute("y2", QString::number(mapToScene(m_P2).y())); } - - else { + else + { QDomElement points = document.createElement("points"); - foreach(QPointF p, m_polygon) { + foreach(QPointF p, m_polygon) + { QDomElement point = document.createElement("point"); QPointF pf = mapToScene(p); point.setAttribute("x", pf.x()); diff --git a/sources/qetgraphicsitem/qetshapeitem.h b/sources/qetgraphicsitem/qetshapeitem.h index f0d631935..0087d6099 100644 --- a/sources/qetgraphicsitem/qetshapeitem.h +++ b/sources/qetgraphicsitem/qetshapeitem.h @@ -84,9 +84,6 @@ class QetShapeItem : public QetGraphicsItem virtual void mouseMoveEvent (QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event); - private: - void changeGraphicsItem (const ShapeType &newtype); - ///ATTRIBUTES private: ShapeType m_shapeType;