From 551b4358f0f1386a35636738ab89136a142a1f88 Mon Sep 17 00:00:00 2001 From: xavier Date: Sun, 6 Dec 2009 23:18:47 +0000 Subject: [PATCH] Desormais, tous les champs de texte (elements, conducteurs, independants) reagissent de la meme facon : * clic simple : selection * double clic : edition git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@809 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/conductor.cpp | 3 ++- sources/diagramtextitem.cpp | 24 ++++++------------------ sources/diagramtextitem.h | 2 ++ sources/elementtextitem.cpp | 10 ++++++---- 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/sources/conductor.cpp b/sources/conductor.cpp index c61594cf3..9d2a60116 100644 --- a/sources/conductor.cpp +++ b/sources/conductor.cpp @@ -81,8 +81,9 @@ Conductor::Conductor(Terminal *p1, Terminal* p2, Element *parent, QGraphicsScene // ajout du champ de texte editable text_item = new DiagramTextItem(); + // par defaut, les DiagramTextItem sont Selectable et Movable + // on desactive Movable pour les textes des conducteurs text_item -> setFlag(QGraphicsItem::ItemIsMovable, false); - text_item -> setTextInteractionFlags(Qt::TextEditorInteraction); text_item -> setPlainText(properties_.text); text_item -> previous_text = properties_.text; calculateTextItemPosition(); diff --git a/sources/diagramtextitem.cpp b/sources/diagramtextitem.cpp index 49896063f..64f75078d 100644 --- a/sources/diagramtextitem.cpp +++ b/sources/diagramtextitem.cpp @@ -112,11 +112,9 @@ void DiagramTextItem::focusOutEvent(QFocusEvent *e) { cursor.clearSelection(); setTextCursor(cursor); - if (flags() & QGraphicsItem::ItemIsMovable) { - // hack a la con pour etre re-entrant - setTextInteractionFlags(Qt::NoTextInteraction); - QTimer::singleShot(0, this, SIGNAL(lostFocus())); - } + // hack a la con pour etre re-entrant + setTextInteractionFlags(Qt::NoTextInteraction); + QTimer::singleShot(0, this, SIGNAL(lostFocus())); } /** @@ -152,22 +150,12 @@ QDomElement DiagramTextItem::toXml(QDomDocument &document) const { @param event un QGraphicsSceneMouseEvent decrivant le double-clic */ void DiagramTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { - if (flags() & QGraphicsItem::ItemIsMovable && !(textInteractionFlags() & Qt::TextEditable)) { + if (!(textInteractionFlags() & Qt::TextEditable)) { // rend le champ de texte editable setTextInteractionFlags(Qt::TextEditorInteraction); - // simule un clic simple, ce qui edite le champ de texte - QGraphicsSceneMouseEvent *mouseEvent = new QGraphicsSceneMouseEvent(QEvent::GraphicsSceneMousePress); - mouseEvent -> setAccepted(true); - mouseEvent -> setPos(event -> pos()); - mouseEvent -> setScenePos(event -> scenePos()); - mouseEvent -> setScreenPos(event -> screenPos()); - mouseEvent -> setButtonDownPos(Qt::LeftButton, event -> buttonDownPos(Qt::LeftButton)); - mouseEvent -> setButtonDownScreenPos(Qt::LeftButton, event -> buttonDownScreenPos(Qt::LeftButton)); - mouseEvent -> setButtonDownScenePos(Qt::LeftButton, event -> buttonDownScenePos(Qt::LeftButton)); - mouseEvent -> setWidget(event -> widget()); - QGraphicsTextItem::mousePressEvent(mouseEvent); - delete mouseEvent; + // edite le champ de texte + setFocus(Qt::MouseFocusReason); } else { QGraphicsTextItem::mouseDoubleClickEvent(event); } diff --git a/sources/diagramtextitem.h b/sources/diagramtextitem.h index 8e253766f..64b94d35b 100644 --- a/sources/diagramtextitem.h +++ b/sources/diagramtextitem.h @@ -21,6 +21,8 @@ #include "diagram.h" /** Cette classe represente un champ de texte editable sur le schema. + Par defaut, les DiagramTextItem sont Selectable et Movable. + @see QGraphicsItem::GraphicsItemFlags */ class DiagramTextItem : public QGraphicsTextItem { Q_OBJECT diff --git a/sources/elementtextitem.cpp b/sources/elementtextitem.cpp index 2d4b29d16..abecd7719 100644 --- a/sources/elementtextitem.cpp +++ b/sources/elementtextitem.cpp @@ -28,8 +28,9 @@ ElementTextItem::ElementTextItem(QGraphicsItem *parent, QGraphicsScene *scene) : DiagramTextItem(parent, scene), follow_parent_rotations(false) { - setFlags(QGraphicsItem::ItemIsSelectable); - setTextInteractionFlags(Qt::TextEditorInteraction); + // par defaut, les DiagramTextItem sont Selectable et Movable + // on desactive Movable pour les textes des elements + setFlag(QGraphicsItem::ItemIsMovable, false); } /** @@ -42,8 +43,9 @@ ElementTextItem::ElementTextItem(const QString &text, QGraphicsItem *parent, QGr DiagramTextItem(text, parent, scene), follow_parent_rotations(false) { - setFlags(QGraphicsItem::ItemIsSelectable); - setTextInteractionFlags(Qt::TextEditorInteraction); + // par defaut, les DiagramTextItem sont Selectable et Movable + // on desactive Movable pour les textes des elements + setFlag(QGraphicsItem::ItemIsMovable, false); } /// Destructeur