diff --git a/sources/qetgraphicsitem/elementtextitem.cpp b/sources/qetgraphicsitem/elementtextitem.cpp index 378d343a9..5f1a4131c 100644 --- a/sources/qetgraphicsitem/elementtextitem.cpp +++ b/sources/qetgraphicsitem/elementtextitem.cpp @@ -31,15 +31,7 @@ ElementTextItem::ElementTextItem(Element *parent_element, Diagram *parent_diagra follow_parent_rotations(false), original_rotation_angle_(0.0), first_move_(true) -{ - // par defaut, les DiagramTextItem sont Selectable et Movable - // cela nous convient, on ne touche pas a ces flags - - adjustItemPosition(1); - // ajuste la position du QGraphicsItem lorsque le QTextDocument change - connect(document(), SIGNAL(blockCountChanged(int)), this, SLOT(adjustItemPosition(int))); - connect(document(), SIGNAL(contentsChanged()), this, SLOT(adjustItemPosition())); -} +{build();} /** Constructeur @@ -53,10 +45,11 @@ ElementTextItem::ElementTextItem(const QString &text, Element *parent_element, D follow_parent_rotations(false), original_rotation_angle_(0.0), first_move_(true) -{ - // par defaut, les DiagramTextItem sont Selectable et Movable - // cela nous convient, on ne touche pas a ces flags - +{build();} + +void ElementTextItem::build() { + setFlag(QGraphicsItem::ItemIsMovable, false); + setToolTip(tr("Maintenir ctrl pour d\351placer", "tool tip for element text item")); adjustItemPosition(1); // ajuste la position du QGraphicsItem lorsque le QTextDocument change connect(document(), SIGNAL(blockCountChanged(int)), this, SLOT(adjustItemPosition(int))); @@ -224,9 +217,10 @@ void ElementTextItem::applyRotation(const qreal &angle) { void ElementTextItem::mousePressEvent(QGraphicsSceneMouseEvent *e) { first_move_ = true; if (e -> modifiers() & Qt::ControlModifier) { - setSelected(!isSelected()); + setSelected(true); + setFlag(QGraphicsItem::ItemIsMovable, true); } - DiagramTextItem::mousePressEvent(e); + else DiagramTextItem::mousePressEvent(e); } /** @@ -307,4 +301,5 @@ void ElementTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { if (!(e -> modifiers() & Qt::ControlModifier)) { QGraphicsTextItem::mouseReleaseEvent(e); } + setFlag(QGraphicsItem::ItemIsMovable, false); } diff --git a/sources/qetgraphicsitem/elementtextitem.h b/sources/qetgraphicsitem/elementtextitem.h index 21acb7846..165601e84 100644 --- a/sources/qetgraphicsitem/elementtextitem.h +++ b/sources/qetgraphicsitem/elementtextitem.h @@ -72,6 +72,10 @@ class ElementTextItem : public DiagramTextItem { virtual void mousePressEvent(QGraphicsSceneMouseEvent *); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *); + virtual void focusOutEvent(QFocusEvent *e) {DiagramTextItem::focusOutEvent(e); setFlag(QGraphicsItem::ItemIsMovable, false);} + + private: + void build(); }; /**