From 7242854045cd3e098057afc31583a922a8062794 Mon Sep 17 00:00:00 2001 From: abhishekm71 Date: Fri, 7 Mar 2014 12:34:47 +0000 Subject: [PATCH] Basic Shapes: Move coords corrected for XML, DXF export (Bounding Rectangle had to be updated with each move) git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@2912 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/diagramcommands.cpp | 4 ++++ sources/qetgraphicsitem/qetshapeitem.cpp | 25 ++++++++++++++++++++++++ sources/qetgraphicsitem/qetshapeitem.h | 5 ++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/sources/diagramcommands.cpp b/sources/diagramcommands.cpp index 97a995d3c..05d551c9f 100644 --- a/sources/diagramcommands.cpp +++ b/sources/diagramcommands.cpp @@ -497,6 +497,10 @@ void MoveElementsCommand::move(const QPointF &actual_movement) { // deplace les shapes foreach (QetShapeItem *dsi, content_to_move.shapes) { dsi -> setPos(dsi -> pos() + actual_movement); + QRectF rec = dsi -> boundingRect(); + rec.translate(actual_movement); + dsi -> setBoundingRect(rec); + dsi -> setPos(dsi -> pos() - actual_movement); } } diff --git a/sources/qetgraphicsitem/qetshapeitem.cpp b/sources/qetgraphicsitem/qetshapeitem.cpp index 860f81696..ecde7d250 100644 --- a/sources/qetgraphicsitem/qetshapeitem.cpp +++ b/sources/qetgraphicsitem/qetshapeitem.cpp @@ -124,6 +124,31 @@ void QetShapeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti } } +void QetShapeItem::mousePressEvent(QGraphicsSceneMouseEvent *e) +{ + _origMousePress = mapToScene(e -> pos()); + first_move_ = true; + if (e -> modifiers() & Qt::ControlModifier) { + setSelected(!isSelected()); + } + QGraphicsItem::mousePressEvent(e); +} + +void QetShapeItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) +{ + if (diagram()) diagram() -> endMoveElements(); + QPointF newCoord = mapToScene(e -> pos()); + if (newCoord != _origMousePress) { + //translate bounding rectangle + QRectF rec = boundingRect(); + rec.translate(newCoord - _origMousePress); + setBoundingRect(rec); + setPos(pos() - newCoord + _origMousePress); + } + + if (!(e -> modifiers() & Qt::ControlModifier)) QGraphicsItem::mouseReleaseEvent(e); +} + bool QetShapeItem::fromXml(const QDomElement &e) { diff --git a/sources/qetgraphicsitem/qetshapeitem.h b/sources/qetgraphicsitem/qetshapeitem.h index 28c7181c8..5bf85ec9e 100644 --- a/sources/qetgraphicsitem/qetshapeitem.h +++ b/sources/qetgraphicsitem/qetshapeitem.h @@ -42,6 +42,7 @@ class QetShapeItem : public QetGraphicsItem virtual QDomElement toXml(QDomDocument &document) const; void setWritingXml(bool writing) { _writingXml = writing; } virtual void editProperty(); + QRectF boundingRect() const; private: ShapeType _shapeType; @@ -52,11 +53,13 @@ class QetShapeItem : public QetGraphicsItem bool _isFullyBuilt; QPointF _lineP1; QPointF _lineP2; + QPointF _origMousePress; bool _writingXml; protected: void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - QRectF boundingRect() const; + virtual void mousePressEvent(QGraphicsSceneMouseEvent *e); + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *e); QPainterPath shape() const; };