diff --git a/sources/conductor.cpp b/sources/conductor.cpp index ce9b036f3..733f983a0 100644 --- a/sources/conductor.cpp +++ b/sources/conductor.cpp @@ -588,6 +588,9 @@ void Conductor::mousePressEvent(QGraphicsSceneMouseEvent *e) { } } QGraphicsPathItem::mousePressEvent(e); + if (e -> modifiers() & Qt::ControlModifier) { + setSelected(!isSelected()); + } } /** @@ -654,7 +657,9 @@ void Conductor::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { has_to_save_profile = false; } setZValue(previous_z_value); - QGraphicsPathItem::mouseReleaseEvent(e); + if (!(e -> modifiers() & Qt::ControlModifier)) { + QGraphicsPathItem::mouseReleaseEvent(e); + } calculateTextItemPosition(); } diff --git a/sources/diagramtextitem.cpp b/sources/diagramtextitem.cpp index d56af9299..a2b86896a 100644 --- a/sources/diagramtextitem.cpp +++ b/sources/diagramtextitem.cpp @@ -131,6 +131,16 @@ void DiagramTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { } } +/** + Gere le clic sur le champ de texte +*/ +void DiagramTextItem::mousePressEvent(QGraphicsSceneMouseEvent *e) { + if (e -> modifiers() & Qt::ControlModifier) { + setSelected(!isSelected()); + } + QGraphicsTextItem::mousePressEvent(e); +} + /** Gere les mouvements de souris lies au champ de texte */ @@ -165,7 +175,9 @@ void DiagramTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { } diagram_ptr -> invalidateMovedElements(); } - QGraphicsTextItem::mouseReleaseEvent(e); + if (!(e -> modifiers() & Qt::ControlModifier)) { + QGraphicsTextItem::mouseReleaseEvent(e); + } } /** diff --git a/sources/diagramtextitem.h b/sources/diagramtextitem.h index b8e62b91c..ac6c18b16 100644 --- a/sources/diagramtextitem.h +++ b/sources/diagramtextitem.h @@ -52,6 +52,7 @@ class DiagramTextItem : public QGraphicsTextItem { protected: virtual void focusOutEvent(QFocusEvent *); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *); + virtual void mousePressEvent(QGraphicsSceneMouseEvent *); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *); diff --git a/sources/element.cpp b/sources/element.cpp index d42b53d8d..dd2846adb 100644 --- a/sources/element.cpp +++ b/sources/element.cpp @@ -263,8 +263,8 @@ void Element::setPos(qreal x, qreal y) { Gere l'enfoncement d'un bouton de la souris */ void Element::mousePressEvent(QGraphicsSceneMouseEvent *e) { - if (!isSelected() && e -> modifiers() & Qt::ControlModifier) { - setSelected(true); + if (e -> modifiers() & Qt::ControlModifier) { + setSelected(!isSelected()); } QGraphicsItem::mousePressEvent(e); } @@ -302,7 +302,9 @@ void Element::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { } diagram_ptr -> invalidateMovedElements(); } - QGraphicsItem::mouseReleaseEvent(e); + if (!(e -> modifiers() & Qt::ControlModifier)) { + QGraphicsItem::mouseReleaseEvent(e); + } } /**