From f782976fa7863ab07098ba3af771971a0c4a2144 Mon Sep 17 00:00:00 2001 From: blacksun Date: Thu, 8 Jan 2015 18:59:23 +0000 Subject: [PATCH] Qet graphics item : disable context menu from view when right button is holded git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3593 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/qetgraphicsitem/qetgraphicsitem.cpp | 27 +++++++++--- sources/qetgraphicsitem/qetgraphicsitem.h | 47 ++++++++++----------- 2 files changed, 44 insertions(+), 30 deletions(-) diff --git a/sources/qetgraphicsitem/qetgraphicsitem.cpp b/sources/qetgraphicsitem/qetgraphicsitem.cpp index 4f5cb9d36..ba372c04f 100644 --- a/sources/qetgraphicsitem/qetgraphicsitem.cpp +++ b/sources/qetgraphicsitem/qetgraphicsitem.cpp @@ -90,11 +90,20 @@ void QetGraphicsItem::applyRotation(const qreal &angle) { *handle the mouse click * @param e */ -void QetGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *e) { - first_move_ = true; - if (e -> modifiers() & Qt::ControlModifier) { - setSelected(!isSelected()); +void QetGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *e) +{ + if (e -> button() == Qt::LeftButton) + { + //Disable views context menu + if (scene()) + foreach (QGraphicsView *view, scene()->views()) + view->setContextMenuPolicy(Qt::NoContextMenu); + + first_move_ = true; + if (e -> modifiers() & Qt::ControlModifier) + setSelected(!isSelected()); } + QGraphicsItem::mousePressEvent(e); } @@ -148,5 +157,13 @@ void QetGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *e) { */ void QetGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { if (diagram()) diagram() -> endMoveElements(); - if (!(e -> modifiers() & Qt::ControlModifier)) QGraphicsItem::mouseReleaseEvent(e); + + if (!(e -> modifiers() & Qt::ControlModifier)) + QGraphicsItem::mouseReleaseEvent(e); + + //Enable views context menu + if (e -> button() == Qt::LeftButton) + if (scene()) + foreach (QGraphicsView *view, scene()->views()) + view -> setContextMenuPolicy(Qt::DefaultContextMenu); } diff --git a/sources/qetgraphicsitem/qetgraphicsitem.h b/sources/qetgraphicsitem/qetgraphicsitem.h index 0001fa3fd..c668220fc 100644 --- a/sources/qetgraphicsitem/qetgraphicsitem.h +++ b/sources/qetgraphicsitem/qetgraphicsitem.h @@ -22,39 +22,36 @@ class Diagram; -class QetGraphicsItem : public QGraphicsObject { +class QetGraphicsItem : public QGraphicsObject +{ Q_OBJECT public: - //constructor destructor - QetGraphicsItem(QGraphicsItem *parent = 0); - virtual ~QetGraphicsItem() = 0; + //constructor destructor + QetGraphicsItem(QGraphicsItem *parent = 0); + virtual ~QetGraphicsItem() = 0; - //public methode - Diagram * diagram() const; - virtual void setPos(const QPointF &p); - virtual void setPos(qreal x, qreal y); - virtual void rotateBy(const qreal &); - virtual void applyRotation(const qreal &); - virtual void editProperty (){} - virtual QString name()const {return QString("");} + //public methode + Diagram *diagram () const; + virtual void setPos (const QPointF &p); + virtual void setPos (qreal x, qreal y); + virtual void rotateBy (const qreal &); + virtual void applyRotation (const qreal &); + virtual void editProperty () {} + virtual QString name ()const {return QString("");} - signals: - - public slots: - - //protected method + //protected method protected: - virtual void mousePressEvent(QGraphicsSceneMouseEvent *e); - virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e); - virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *e); - virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *e); + virtual void mousePressEvent(QGraphicsSceneMouseEvent *e); + virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e); + virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *e); + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *e); protected: - bool is_movable_; - bool first_move_; - bool snap_to_grid_; - QPointF mouse_to_origin_movement_; + bool is_movable_; + bool first_move_; + bool snap_to_grid_; + QPointF mouse_to_origin_movement_; };