diff --git a/sources/diagram.cpp b/sources/diagram.cpp index ac5a8d483..e8f299001 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -182,15 +182,14 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) { */ void Diagram::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { - if (m_event_interface) - if(m_event_interface->mouseDoubleClickEvent(event)) - { - if(!m_event_interface->isRunning()) - { - delete m_event_interface; m_event_interface = nullptr; - } + event->setAccepted(false); + + if (m_event_interface) { + m_event_interface->mouseDoubleClickEvent(event); + if (event->isAccepted()) { return; } + } QGraphicsScene::mouseDoubleClickEvent(event); } @@ -202,15 +201,14 @@ void Diagram::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) */ void Diagram::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (m_event_interface) - if(m_event_interface->mousePressEvent(event)) - { - if(!m_event_interface->isRunning()) - { - delete m_event_interface; m_event_interface = nullptr; - } + event->setAccepted(false); + + if (m_event_interface) { + m_event_interface->mousePressEvent(event); + if (event->isAccepted()) { return; } + } QGraphicsScene::mousePressEvent(event); } @@ -222,15 +220,14 @@ void Diagram::mousePressEvent(QGraphicsSceneMouseEvent *event) */ void Diagram::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (m_event_interface) - if(m_event_interface->mouseMoveEvent(event)) - { - if(!m_event_interface->isRunning()) - { - delete m_event_interface; m_event_interface = nullptr; - } + event->setAccepted(false); + + if (m_event_interface) { + m_event_interface->mouseMoveEvent(event); + if (event->isAccepted()) { return; } + } QGraphicsScene::mouseMoveEvent(event); } @@ -242,15 +239,14 @@ void Diagram::mouseMoveEvent(QGraphicsSceneMouseEvent *event) */ void Diagram::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - if (m_event_interface) - if(m_event_interface->mouseReleaseEvent(event)) - { - if(!m_event_interface->isRunning()) - { - delete m_event_interface; m_event_interface = nullptr; - } + event->setAccepted(false); + + if (m_event_interface) { + m_event_interface->mouseReleaseEvent(event); + if (event->isAccepted()) { return; } + } QGraphicsScene::mouseReleaseEvent(event); } @@ -262,15 +258,14 @@ void Diagram::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) */ void Diagram::wheelEvent(QGraphicsSceneWheelEvent *event) { - if (m_event_interface) - if(m_event_interface->wheelEvent(event)) - { - if(!m_event_interface->isRunning()) - { - delete m_event_interface; m_event_interface = nullptr; - } + event->setAccepted(false); + + if (m_event_interface) { + m_event_interface->wheelEvent(event); + if (event->isAccepted()) { return; } + } QGraphicsScene::wheelEvent(event); } @@ -283,15 +278,14 @@ void Diagram::wheelEvent(QGraphicsSceneWheelEvent *event) */ void Diagram::keyPressEvent(QKeyEvent *event) { - if (m_event_interface) - if(m_event_interface->keyPressEvent(event)) - { - if(!m_event_interface->isRunning()) - { - delete m_event_interface; m_event_interface = nullptr; - } + event->setAccepted(false); + + if (m_event_interface) { + m_event_interface->keyPressEvent(event); + if (event->isAccepted()) { return; } + } if (!isReadOnly()) { @@ -373,15 +367,14 @@ void Diagram::keyPressEvent(QKeyEvent *event) */ void Diagram::keyReleaseEvent(QKeyEvent *e) { - if (m_event_interface) - if(m_event_interface->keyReleaseEvent(e)) - { - if(!m_event_interface->isRunning()) - { - delete m_event_interface; m_event_interface = nullptr; - } + e->setAccepted(false); + + if (m_event_interface) { + m_event_interface->keyReleaseEvent(e); + if (e->isAccepted()) { return; } + } bool transmit_event = true; if (!isReadOnly()) { @@ -417,6 +410,12 @@ void Diagram::setEventInterface(DiagramEventInterface *event_interface) event_interface -> init(); } m_event_interface = event_interface; + + connect(m_event_interface, &DiagramEventInterface::finish, [this]() + { + delete this->m_event_interface; + this->m_event_interface = nullptr; + }); } /** diff --git a/sources/diagramevent/diagrameventaddelement.cpp b/sources/diagramevent/diagrameventaddelement.cpp index a4542b5fc..c14955fbf 100644 --- a/sources/diagramevent/diagrameventaddelement.cpp +++ b/sources/diagramevent/diagrameventaddelement.cpp @@ -67,37 +67,35 @@ DiagramEventAddElement::~DiagramEventAddElement() /** * @brief DiagramEventAddElement::mouseMoveEvent * Move the element to new pos of mouse + * the event is always accepted * @param event - * @return always true */ -bool DiagramEventAddElement::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddElement::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (m_element) - m_element -> setPos(Diagram::snapToGrid(event->scenePos())); - - return true; + if (m_element) { + m_element->setPos(Diagram::snapToGrid(event->scenePos())); + } + event->setAccepted(true); } /** * @brief DiagramEventAddElement::mousePressEvent * Do nothing, but return true for not transit the event to other thing in diagram. + * the event is always accepted * @param event - * @return always true */ -bool DiagramEventAddElement::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - Q_UNUSED(event); - return true; +void DiagramEventAddElement::mousePressEvent(QGraphicsSceneMouseEvent *event) { + event->setAccepted(true); } /** * @brief DiagramEventAddElement::mouseReleaseEvent * Right button finish this event (isRunning = false) and emit finish. * Left button add an element to diagram + * the event is always accepted * @param event - * @return always true */ -bool DiagramEventAddElement::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddElement::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (m_element) { @@ -114,16 +112,16 @@ bool DiagramEventAddElement::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) } } - return true; + event->setAccepted(true); } /** * @brief DiagramEventAddElement::mouseDoubleClickEvent * If mouse left double clic, finish this event (isRunning = false) and emit finish + * the event is always accepted * @param event - * @return always true */ -bool DiagramEventAddElement::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddElement::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { if (m_element && (event -> button() == Qt::LeftButton)) { @@ -132,8 +130,8 @@ bool DiagramEventAddElement::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *eve m_running = false; emit finish(); } - - return true; + + event->setAccepted(true); } /** @@ -141,17 +139,17 @@ bool DiagramEventAddElement::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *eve * Press space key rotate the element to 90° (return true) * else call DiagramEventInterface::keyPressEvent(event), and return the value. * @param event - * @return */ -bool DiagramEventAddElement::keyPressEvent(QKeyEvent *event) +void DiagramEventAddElement::keyPressEvent(QKeyEvent *event) { if (m_element && event->key() == Qt::Key_Space) { m_element->setRotation(m_element->rotation() + 90); - return true; + event->setAccepted(true); + } + else { + DiagramEventInterface::keyPressEvent(event); } - - return DiagramEventInterface::keyPressEvent(event); } /** diff --git a/sources/diagramevent/diagrameventaddelement.h b/sources/diagramevent/diagrameventaddelement.h index bc81cb093..6a9bef437 100644 --- a/sources/diagramevent/diagrameventaddelement.h +++ b/sources/diagramevent/diagrameventaddelement.h @@ -36,11 +36,11 @@ class DiagramEventAddElement : public DiagramEventInterface DiagramEventAddElement(ElementsLocation &location, Diagram *diagram, QPointF pos = QPointF(0,0)); ~DiagramEventAddElement() override; - bool mouseMoveEvent (QGraphicsSceneMouseEvent *event) override; - bool mousePressEvent (QGraphicsSceneMouseEvent *event) override; - bool mouseReleaseEvent (QGraphicsSceneMouseEvent *event) override; - bool mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event) override; - bool keyPressEvent (QKeyEvent *event) override; + void mouseMoveEvent (QGraphicsSceneMouseEvent *event) override; + void mousePressEvent (QGraphicsSceneMouseEvent *event) override; + void mouseReleaseEvent (QGraphicsSceneMouseEvent *event) override; + void mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event) override; + void keyPressEvent (QKeyEvent *event) override; void init() override; private: diff --git a/sources/diagramevent/diagrameventaddimage.cpp b/sources/diagramevent/diagrameventaddimage.cpp index 915ce2d68..bc3b560c9 100644 --- a/sources/diagramevent/diagrameventaddimage.cpp +++ b/sources/diagramevent/diagrameventaddimage.cpp @@ -53,9 +53,8 @@ DiagramEventAddImage::~DiagramEventAddImage() * @brief DiagramEventAddImage::mousePressEvent * Action when mouse is pressed * @param event : event of mouse pressed - * @return : true if this event is handled, otherwise false */ -bool DiagramEventAddImage::mousePressEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddImage::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (m_image && event -> button() == Qt::LeftButton) { @@ -64,46 +63,46 @@ bool DiagramEventAddImage::mousePressEvent(QGraphicsSceneMouseEvent *event) pos.ry() -= m_image->boundingRect().height()/2; m_diagram -> undoStack().push (new AddItemCommand(m_image, m_diagram, pos)); - foreach (QGraphicsView *view, m_diagram->views()) + for (QGraphicsView *view : m_diagram->views()) { view->setContextMenuPolicy((Qt::DefaultContextMenu)); + } m_running = false; emit finish(); - return true; + event->setAccepted(true); } - - if (m_image && event -> button() == Qt::RightButton) + else if (m_image && event -> button() == Qt::RightButton) { m_image->setRotation(m_image->rotation() + 90); - return true; + event->setAccepted(true); } - - return false; } /** * @brief DiagramEventAddImage::mouseMoveEvent * Action when mouse move * @param event : event of mouse move - * @return : true if this event is handled, otherwise false */ -bool DiagramEventAddImage::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddImage::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (!m_image || event -> buttons() != Qt::NoButton) return false; + if (!m_image || event->buttons() != Qt::NoButton) { + return; + }; QPointF pos = event->scenePos(); if (!m_is_added) { - foreach (QGraphicsView *view, m_diagram->views()) + for (QGraphicsView *view : m_diagram->views()) { view->setContextMenuPolicy((Qt::NoContextMenu)); + } - m_diagram -> addItem(m_image); + m_diagram->addItem(m_image); m_is_added = true; } - m_image -> setPos(pos - m_image -> boundingRect().center()); - return true; + m_image->setPos(pos - m_image->boundingRect().center()); + event->setAccepted(true); } /** @@ -111,30 +110,29 @@ bool DiagramEventAddImage::mouseMoveEvent(QGraphicsSceneMouseEvent *event) * This method is only use to overwrite double click. * When double click, image propertie dialog isn't open. * @param event : event of mouse double click. - * @return : true if this event is handled, otherwise false */ -bool DiagramEventAddImage::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) -{ - Q_UNUSED(event); - return true; +void DiagramEventAddImage::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { + event->setAccepted(true); } /** * @brief DiagramEventAddImage::wheelEvent * Action when mouse wheel is rotate * @param event: evet of mouse wheel - * @return : true if this event is handled, otherwise false */ -bool DiagramEventAddImage::wheelEvent(QGraphicsSceneWheelEvent *event) +void DiagramEventAddImage::wheelEvent(QGraphicsSceneWheelEvent *event) { - if (!m_is_added || !m_image || event -> modifiers() != Qt::CTRL) return false; + if (!m_is_added || !m_image || event -> modifiers() != Qt::CTRL) { + return; + } qreal scaling = m_image->scale(); event->delta() > 1? scaling += 0.01 : scaling -= 0.01; - if (scaling>0.01 && scaling <= 2) + if (scaling>0.01 && scaling <= 2) { m_image->setScale(scaling); + } - return true; + event->setAccepted(true); } /** diff --git a/sources/diagramevent/diagrameventaddimage.h b/sources/diagramevent/diagrameventaddimage.h index 7c9598e7a..fb8e95233 100644 --- a/sources/diagramevent/diagrameventaddimage.h +++ b/sources/diagramevent/diagrameventaddimage.h @@ -35,10 +35,10 @@ class DiagramEventAddImage : public DiagramEventInterface DiagramEventAddImage(Diagram *diagram); ~DiagramEventAddImage() override; - bool mousePressEvent (QGraphicsSceneMouseEvent *event) override; - bool mouseMoveEvent (QGraphicsSceneMouseEvent *event) override; - bool mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event) override; - bool wheelEvent (QGraphicsSceneWheelEvent *event) override; + void mousePressEvent (QGraphicsSceneMouseEvent *event) override; + void mouseMoveEvent (QGraphicsSceneMouseEvent *event) override; + void mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event) override; + void wheelEvent (QGraphicsSceneWheelEvent *event) override; bool isNull () const; private: diff --git a/sources/diagramevent/diagrameventaddshape.cpp b/sources/diagramevent/diagrameventaddshape.cpp index 635c7328a..8067d166a 100644 --- a/sources/diagramevent/diagrameventaddshape.cpp +++ b/sources/diagramevent/diagrameventaddshape.cpp @@ -57,15 +57,17 @@ DiagramEventAddShape::~DiagramEventAddShape() * @brief DiagramEventAddShape::mousePressEvent * Action when mouse is pressed * @param event : event of mouse press - * @return : true if this event is managed, otherwise false */ -bool DiagramEventAddShape::mousePressEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddShape::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (Q_UNLIKELY(m_diagram->isReadOnly())) return false; + if (Q_UNLIKELY(m_diagram->isReadOnly())) { + return; + } QPointF pos = event->scenePos(); - if (event->modifiers() != Qt::ControlModifier) + if (event->modifiers() != Qt::ControlModifier) { pos = Diagram::snapToGrid(pos); + } //Action for left mouse click if (event->button() == Qt::LeftButton) @@ -75,14 +77,15 @@ bool DiagramEventAddShape::mousePressEvent(QGraphicsSceneMouseEvent *event) { m_shape_item = new QetShapeItem(pos, pos, m_shape_type); m_diagram->addItem (m_shape_item); - return true; + event->setAccepted(true); + return; } //If current item isn't a polyline, add it with an undo command if (m_shape_type != QetShapeItem::Polygon) { m_shape_item->setP2 (pos); - if(m_shape_item->shapeType() == QetShapeItem::Rectangle || m_shape_item->shapeType() == QetShapeItem::Ellipse) { + if (m_shape_item->shapeType() == QetShapeItem::Rectangle || m_shape_item->shapeType() == QetShapeItem::Ellipse) { m_shape_item->setRect(m_shape_item->rect().normalized()); } m_diagram->undoStack().push (new AddItemCommand (m_shape_item, m_diagram)); @@ -94,46 +97,42 @@ bool DiagramEventAddShape::mousePressEvent(QGraphicsSceneMouseEvent *event) m_shape_item->setNextPoint (pos); } - return true; + event->setAccepted(true); + return; } - if (event->button() == Qt::RightButton) - return true; - - return false; - + if (event->button() == Qt::RightButton) { + event->setAccepted(true); + } } /** * @brief DiagramEventAddShape::mouseMoveEvent * Action when mouse move * @param event : event of mouse move - * @return : true if this event is managed, otherwise false */ -bool DiagramEventAddShape::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddShape::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { updateHelpCross(event->scenePos()); if (m_shape_item && event->buttons() == Qt::NoButton) { QPointF pos = event->scenePos(); - if (event->modifiers() != Qt::ControlModifier) + if (event->modifiers() != Qt::ControlModifier) { pos = Diagram::snapToGrid(pos); + } m_shape_item->setP2 (pos); - return true; + event->setAccepted(true); } - - return false; } /** * @brief DiagramEventAddShape::mouseReleaseEvent * Action when mouse button is released * @param event : event of mouse release - * @return : true if this event is managed, otherwise false */ -bool DiagramEventAddShape::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddShape::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::RightButton) { @@ -150,33 +149,32 @@ bool DiagramEventAddShape::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) pos = Diagram::snapToGrid(pos); m_shape_item->setP2(pos); //Set the new last point under the cursor - return true; + event->setAccepted(true); + return; } //For other case, we remove item from scene m_diagram->removeItem(m_shape_item); delete m_shape_item; m_shape_item = nullptr; - return true; + event->setAccepted(true); + return; } //Else (no shape), we set to false the running status //for indicate to the owner of this event that everything is done m_running = false; emit finish(); - return true; + event->setAccepted(true); } - - return false; } /** * @brief DiagramEventAddShape::mouseDoubleClickEvent * Action when mouse button is double clicked * @param event : event of mouse double click - * @return : true if this event is managed, otherwise false */ -bool DiagramEventAddShape::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddShape::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { //If current item is a polyline, add it with an undo command if (m_shape_item && m_shape_type == QetShapeItem::Polygon && event->button() == Qt::LeftButton) @@ -186,10 +184,8 @@ bool DiagramEventAddShape::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event m_shape_item->removePoints(); m_diagram->undoStack().push (new AddItemCommand (m_shape_item, m_diagram)); m_shape_item = nullptr; //< set to nullptr for create new shape at next left clic - return true; + event->setAccepted(true); } - - return false; } void DiagramEventAddShape::init() diff --git a/sources/diagramevent/diagrameventaddshape.h b/sources/diagramevent/diagrameventaddshape.h index 6d0b3ac3b..2617f0add 100644 --- a/sources/diagramevent/diagrameventaddshape.h +++ b/sources/diagramevent/diagrameventaddshape.h @@ -33,10 +33,10 @@ class DiagramEventAddShape : public DiagramEventInterface DiagramEventAddShape(Diagram *diagram, QetShapeItem::ShapeType shape_type); ~DiagramEventAddShape() override; - bool mousePressEvent (QGraphicsSceneMouseEvent *event) override; - bool mouseMoveEvent (QGraphicsSceneMouseEvent *event) override; - bool mouseReleaseEvent (QGraphicsSceneMouseEvent *event) override; - bool mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event) override; + void mousePressEvent (QGraphicsSceneMouseEvent *event) override; + void mouseMoveEvent (QGraphicsSceneMouseEvent *event) override; + void mouseReleaseEvent (QGraphicsSceneMouseEvent *event) override; + void mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event) override; void init() override; private: diff --git a/sources/diagramevent/diagrameventaddtext.cpp b/sources/diagramevent/diagrameventaddtext.cpp index 1dddd2693..96a53592f 100644 --- a/sources/diagramevent/diagrameventaddtext.cpp +++ b/sources/diagramevent/diagrameventaddtext.cpp @@ -39,9 +39,8 @@ DiagramEventAddText::~DiagramEventAddText() /** * @brief DiagramEventAddText::mousePressEvent * @param event : event of mouse press event. - * @return : true if this event is handled, otherwise false */ -bool DiagramEventAddText::mousePressEvent(QGraphicsSceneMouseEvent *event) +void DiagramEventAddText::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { @@ -50,7 +49,6 @@ bool DiagramEventAddText::mousePressEvent(QGraphicsSceneMouseEvent *event) text->setTextInteractionFlags(Qt::TextEditorInteraction); text->setFocus(Qt::MouseFocusReason); emit finish(); - return true; + event->setAccepted(true); } - return false; } diff --git a/sources/diagramevent/diagrameventaddtext.h b/sources/diagramevent/diagrameventaddtext.h index 4b8b3eec3..a26d482df 100644 --- a/sources/diagramevent/diagrameventaddtext.h +++ b/sources/diagramevent/diagrameventaddtext.h @@ -34,7 +34,7 @@ class DiagramEventAddText : public DiagramEventInterface DiagramEventAddText(Diagram *diagram); ~DiagramEventAddText() override; - bool mousePressEvent (QGraphicsSceneMouseEvent *event) override; + void mousePressEvent (QGraphicsSceneMouseEvent *event) override; }; #endif // DIAGRAMEVENTADDTEXT_H diff --git a/sources/diagramevent/diagrameventinterface.cpp b/sources/diagramevent/diagrameventinterface.cpp index cab7a034b..1563585d7 100644 --- a/sources/diagramevent/diagrameventinterface.cpp +++ b/sources/diagramevent/diagrameventinterface.cpp @@ -31,50 +31,44 @@ DiagramEventInterface::DiagramEventInterface(Diagram *diagram) : DiagramEventInterface::~DiagramEventInterface() {}; -bool DiagramEventInterface::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { +void DiagramEventInterface::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED (event); - return false; } -bool DiagramEventInterface::mousePressEvent(QGraphicsSceneMouseEvent *event) { +void DiagramEventInterface::mousePressEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED (event); - return false; } -bool DiagramEventInterface::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { +void DiagramEventInterface::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED (event); - return false; } -bool DiagramEventInterface::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { +void DiagramEventInterface::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED (event); - return false; } -bool DiagramEventInterface::wheelEvent(QGraphicsSceneWheelEvent *event) { +void DiagramEventInterface::wheelEvent(QGraphicsSceneWheelEvent *event) { Q_UNUSED (event); - return false; } /** * @brief DiagramEventInterface::keyPressEvent * By default, press escape key abort the curent action * @param event - * @return */ -bool DiagramEventInterface::keyPressEvent(QKeyEvent *event) { - if (event->key() == Qt::Key_Escape) { +void DiagramEventInterface::keyPressEvent(QKeyEvent *event) +{ + if (event->key() == Qt::Key_Escape) + { m_running = false; m_abort = true; emit finish(); - return true; + event->setAccepted(true); } - return false; } -bool DiagramEventInterface::keyReleaseEvent(QKeyEvent *event) { +void DiagramEventInterface::keyReleaseEvent(QKeyEvent *event){ Q_UNUSED (event); - return false; } bool DiagramEventInterface::isRunning() const { diff --git a/sources/diagramevent/diagrameventinterface.h b/sources/diagramevent/diagrameventinterface.h index 07f7f161c..65022b649 100644 --- a/sources/diagramevent/diagrameventinterface.h +++ b/sources/diagramevent/diagrameventinterface.h @@ -27,19 +27,16 @@ class Diagram; /** * @brief The DiagramEventInterface class - * Each method return a bool: True if the methode do something else return false. - * Each method of DVEventInterface return false; * isRunning() return true if action is running (do something). By default return false. * * ##USE DiagramEventInterface## * This class is the basic interface for manage event on a diagram. * To create a behavior for event diagram, we need to herite this class. * This interface work like this : - * You need to create an interface and call diagram::setEventInterface(*your_interface). + * You need to create an interface and call diagram::setEventInterface(pointer_of_your_interface). * When a diagram get an event (mouse or key) if they have an event interface, - * they send the event to the interface (for exemple mousePressEvent). - * If the interface do something with this event, you need to return true to signal the diagram you work with this event. - * (if you do nothing by defaut the interface return false, so diagram do nothing) + * they send the event (with the status accepted to false) to the interface (for exemple mousePressEvent). + * If the interface do something with this event, you need to set to true the accepted status of the event, then diagram do nothing. * When the interface job is done, we need to emit the signal finish(), the diagram use this signal to delete the interface. * Be carreful with the destructor, diagram can at any time (even if interface is still running) delete the interface, * the bool m_abort is here for that at destruction time. @@ -52,13 +49,13 @@ class DiagramEventInterface : public QObject public: DiagramEventInterface(Diagram *diagram); ~DiagramEventInterface() override = 0; - virtual bool mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event); - virtual bool mousePressEvent (QGraphicsSceneMouseEvent *event); - virtual bool mouseMoveEvent (QGraphicsSceneMouseEvent *event); - virtual bool mouseReleaseEvent (QGraphicsSceneMouseEvent *event); - virtual bool wheelEvent (QGraphicsSceneWheelEvent *event); - virtual bool keyPressEvent (QKeyEvent *event); - virtual bool keyReleaseEvent (QKeyEvent *event); + virtual void mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event); + virtual void mousePressEvent (QGraphicsSceneMouseEvent *event); + virtual void mouseMoveEvent (QGraphicsSceneMouseEvent *event); + virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event); + virtual void wheelEvent (QGraphicsSceneWheelEvent *event); + virtual void keyPressEvent (QKeyEvent *event); + virtual void keyReleaseEvent (QKeyEvent *event); virtual bool isRunning () const; virtual void init(); diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 4ad72c265..98d3412cb 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -1319,7 +1319,7 @@ void QETDiagramEditor::addItemGroupTriggered(QAction *action) if (diagram_event) { d->setEventInterface(diagram_event); - connect(diagram_event, &DiagramEventInterface::finish, [action](){action->setChecked(false);}); + connect(diagram_event, &DiagramEventInterface::destroyed, [action]() {action->setChecked(false);}); } }