From 459c97467c88a9686f3e626620d4dfdb9bf5d79d Mon Sep 17 00:00:00 2001 From: xavierqet Date: Fri, 21 Sep 2007 11:48:37 +0000 Subject: [PATCH] Correction du bug rendant imprecis l'annulation des deplacements dans l'editeur d'elements git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@126 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- editor/elementscene.cpp | 11 ++++------- editor/elementscene.h | 2 ++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/editor/elementscene.cpp b/editor/elementscene.cpp index d02a26e7d..6e9558a26 100644 --- a/editor/elementscene.cpp +++ b/editor/elementscene.cpp @@ -74,9 +74,6 @@ void ElementScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e) { QPolygonF temp_polygon; if (e -> buttons() & Qt::LeftButton) { switch(behavior) { - case Normal: - QGraphicsScene::mouseMoveEvent(e); - break; case Line: current_line -> setLine(QLineF(current_line -> line().p1(), e -> scenePos())); break; @@ -107,6 +104,7 @@ void ElementScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e) { temp_polygon << e -> scenePos(); current_polygon -> setPolygon(temp_polygon); break; + case Normal: default: QGraphicsScene::mouseMoveEvent(e); } @@ -123,9 +121,6 @@ void ElementScene::mousePressEvent(QGraphicsSceneMouseEvent *e) { QPolygonF temp_polygon; if (e -> button() & Qt::LeftButton) { switch(behavior) { - case Normal: - QGraphicsScene::mousePressEvent(e); - break; case Line: current_line = new PartLine(element_editor, 0, this); current_line -> setLine(QLineF(e -> scenePos(), e -> scenePos())); @@ -152,8 +147,10 @@ void ElementScene::mousePressEvent(QGraphicsSceneMouseEvent *e) { temp_polygon << e -> scenePos(); current_polygon -> setPolygon(temp_polygon); break; + case Normal: default: QGraphicsScene::mousePressEvent(e); + if (!selectedItems().isEmpty()) fsi_pos = selectedItems().first() -> scenePos(); } } else QGraphicsScene::mousePressEvent(e); } @@ -200,7 +197,7 @@ void ElementScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { QGraphicsScene::mouseReleaseEvent(e); // detecte les deplacements de parties if (!selectedItems().isEmpty()) { - QPointF movement = e -> scenePos() - e -> buttonDownScenePos(Qt::LeftButton); + QPointF movement = selectedItems().first() -> scenePos() - fsi_pos; if (!movement.isNull()) { undo_stack.push(new MovePartsCommand(movement, this, selectedItems())); } diff --git a/editor/elementscene.h b/editor/elementscene.h index 98d11f033..48d392a74 100644 --- a/editor/elementscene.h +++ b/editor/elementscene.h @@ -41,6 +41,8 @@ class ElementScene : public QGraphicsScene { QGIManager qgi_manager; /// Pile des actions annulables QUndoStack undo_stack; + /// Position du premier item selectionne (utilise pour annuler les deplacements) + QPointF fsi_pos; /// Variables relatives a la gestion du dessin des parties sur la scene Behavior behavior;