diff --git a/sources/editor/elementscene.cpp b/sources/editor/elementscene.cpp index b13a6cbd7..ecf324cca 100644 --- a/sources/editor/elementscene.cpp +++ b/sources/editor/elementscene.cpp @@ -173,6 +173,17 @@ void ElementScene::keyPressEvent(QKeyEvent *event) { QGraphicsScene::keyPressEvent(event); } +/** + * @brief ElementScene::contextMenuEvent + * Display the context menu event, only if behavior are Normal + * @param event + */ +void ElementScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +{ + if (behavior == ElementScene::Normal) + element_editor -> contextMenu(event->screenPos()); +} + /** Dessine l'arriere-plan de l'editeur, cad l'indicateur de hotspot. @param p Le QPainter a utiliser pour dessiner @@ -211,6 +222,16 @@ void ElementScene::setEventInterface(ESEventInterface *event_interface) { m_event_interface = event_interface; } +/** + * @brief ElementScene::setBehavior + * Modifie the current behavior of this scene + * @param b + */ +void ElementScene::setBehavior(ElementScene::Behavior b) +{ + behavior = b; +} + /** @return la taille horizontale de la grille */ @@ -460,11 +481,6 @@ void ElementScene::copy() { last_copied_ = clipboard_content; } -void ElementScene::contextMenu(QContextMenuEvent *event) { - if (behavior == ElementScene::Normal) - element_editor -> contextMenu(event); -} - QETElementEditor* ElementScene::editor() const { return element_editor; } diff --git a/sources/editor/elementscene.h b/sources/editor/elementscene.h index 67408fe19..03bc102ac 100644 --- a/sources/editor/elementscene.h +++ b/sources/editor/elementscene.h @@ -41,7 +41,7 @@ class ElementScene : public QGraphicsScene { // enum public: - enum Behavior { Normal, PasteArea }; + enum Behavior { Normal, PasteArea, AddPart }; enum ItemOption { SortByZValue = 1, IncludeTerminals = 2, @@ -105,6 +105,7 @@ class ElementScene : public QGraphicsScene { // methods public: void setEventInterface (ESEventInterface *event_interface); + void setBehavior (ElementScene::Behavior); QPointF snapToGrid(QPointF point); void setNames(const NamesList &); NamesList names() const; @@ -131,7 +132,6 @@ class ElementScene : public QGraphicsScene { bool wasCopiedFromThisElement(const QString &); void cut(); void copy(); - void contextMenu (QContextMenuEvent *event); QETElementEditor* editor() const; protected: @@ -140,8 +140,9 @@ class ElementScene : public QGraphicsScene { virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *); virtual void mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event); virtual void keyPressEvent (QKeyEvent *event); + virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); - virtual void drawForeground(QPainter *, const QRectF &); + virtual void drawForeground(QPainter *, const QRectF &); private: QRectF elementContentBoundingRect(const ElementContent &) const; diff --git a/sources/editor/elementview.cpp b/sources/editor/elementview.cpp index 650ba8799..44916dbb9 100644 --- a/sources/editor/elementview.cpp +++ b/sources/editor/elementview.cpp @@ -67,10 +67,6 @@ QRectF ElementView::viewedSceneRect() const { return(QRectF(scene_left_top, scene_right_bottom)); } -void ElementView::contextMenuEvent(QContextMenuEvent *event) { - scene_ -> contextMenu(event); -} - /** Definit l'ElementScene visualisee par cette ElementView @param s l'ElementScene visualisee par cette ElementView diff --git a/sources/editor/elementview.h b/sources/editor/elementview.h index 4de7c4f0d..96370f66f 100644 --- a/sources/editor/elementview.h +++ b/sources/editor/elementview.h @@ -41,7 +41,6 @@ class ElementView : public QGraphicsView { ElementScene *scene() const; void setScene(ElementScene *); QRectF viewedSceneRect() const; - void contextMenuEvent(QContextMenuEvent *event); protected: void mousePressEvent(QMouseEvent *); diff --git a/sources/editor/esevent/eseventinterface.cpp b/sources/editor/esevent/eseventinterface.cpp index 960a9bd49..62005233a 100644 --- a/sources/editor/esevent/eseventinterface.cpp +++ b/sources/editor/esevent/eseventinterface.cpp @@ -31,20 +31,26 @@ ESEventInterface::ESEventInterface(ElementScene *scene) : init(); } -void ESEventInterface::init() { - foreach (QGraphicsView *qgv, m_scene->views()) - qgv->setContextMenuPolicy(Qt::NoContextMenu); - +/** + * @brief ESEventInterface::init + * Init this event interface + */ +void ESEventInterface::init() +{ + m_scene->setBehavior(ElementScene::Behavior::AddPart); m_editor->slot_setNoDragToView(); } -ESEventInterface::~ESEventInterface() { +/** + * @brief ESEventInterface::~ESEventInterface + * Destructor + */ +ESEventInterface::~ESEventInterface() +{ delete m_help_horiz; delete m_help_verti; - foreach (QGraphicsView *qgv, m_scene->views()) - qgv->setContextMenuPolicy(Qt::DefaultContextMenu); - + m_scene->setBehavior(ElementScene::Behavior::Normal); m_editor->slot_setRubberBandToView(); }