From 73a0529e3049bedf7cbfd519be623cfbd84afd8f Mon Sep 17 00:00:00 2001 From: parker Date: Mon, 23 Jun 2025 16:02:27 +0100 Subject: [PATCH] feat: cleanup event passing --- src/gui/network/Network.cpp | 11 ++++++++- src/gui/network/Network.h | 3 ++- src/gui/network/NetworkGraphicsView.cpp | 32 ++++++++++++------------- src/gui/network/NetworkGraphicsView.h | 1 - 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/gui/network/Network.cpp b/src/gui/network/Network.cpp index bcc9383..adde664 100644 --- a/src/gui/network/Network.cpp +++ b/src/gui/network/Network.cpp @@ -87,7 +87,16 @@ void Network::deleteEdge(QGraphicsItem* edge) // delete edge; } -void Network::leftMousePress(QMouseEvent *event) +void Network::mousePressEvent(QMouseEvent *event) +{ + if( event->buttons() & Qt::LeftButton) + { + leftMousePressed(event); + } + +} + +void Network::leftMousePressed(QMouseEvent *event) { Qt::KeyboardModifiers mods = event->modifiers(); diff --git a/src/gui/network/Network.h b/src/gui/network/Network.h index b80b8cc..1bdb7a4 100644 --- a/src/gui/network/Network.h +++ b/src/gui/network/Network.h @@ -18,7 +18,6 @@ public: Network(QWidget* parent = nullptr); void socketClicked(SocketGraphic* socket, QMouseEvent *event); void mouseMoved(QMouseEvent *event); - void leftMousePress(QMouseEvent *event); private: QLayout* mainLayout_; NetworkGraphicsScene* scene_; @@ -38,6 +37,7 @@ private: void deleteEdge(QGraphicsItem* edge); void highlightEdge(QGraphicsItem* edge, bool state); + void leftMousePressed(QMouseEvent* event); template bool isType(QGraphicsItem* item) @@ -63,4 +63,5 @@ private: protected: void resizeEvent(QResizeEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; + void mousePressEvent(QMouseEvent *event) override; }; diff --git a/src/gui/network/NetworkGraphicsView.cpp b/src/gui/network/NetworkGraphicsView.cpp index b9db223..81cbe48 100644 --- a/src/gui/network/NetworkGraphicsView.cpp +++ b/src/gui/network/NetworkGraphicsView.cpp @@ -54,10 +54,6 @@ void NetworkGraphicsView::mouseReleaseEvent(QMouseEvent *event) { void NetworkGraphicsView::mousePressEvent(QMouseEvent *event) { - if( event->buttons() & Qt::LeftButton) - { - leftMousePress(event); - } if( event->button() == Qt::MiddleButton ) @@ -67,22 +63,26 @@ void NetworkGraphicsView::mousePressEvent(QMouseEvent *event) return; } + // pass event to parent + QGraphicsView::mouseReleaseEvent(event); + if (parentWidget()) { + QMouseEvent *eventCopy = new QMouseEvent( + event->type(), + event->position(), + event->scenePosition(), + event->globalPosition(), + event->button(), + event->buttons(), + event->modifiers() + ); + QCoreApplication::postEvent(parentWidget(), eventCopy); + } + + QGraphicsView::mousePressEvent(event); } -void NetworkGraphicsView::leftMousePress(QMouseEvent *event) -{ - network_->leftMousePress(event); - // QGraphicsItem* itemClicked = itemAt(event->pos()); - // bool isSocket = itemClicked && typeid(*itemClicked)==typeid(SocketGraphic); - // if(isSocket) - // { - // std::cout << "SOCKET!\n"; - // network_->socketClicked(static_cast(itemClicked), event); - // } - -} // void NetworkView::mouseReleaseEvent(QMouseEvent *event) // { diff --git a/src/gui/network/NetworkGraphicsView.h b/src/gui/network/NetworkGraphicsView.h index 2bbf3b4..955a5e3 100644 --- a/src/gui/network/NetworkGraphicsView.h +++ b/src/gui/network/NetworkGraphicsView.h @@ -21,7 +21,6 @@ protected: void mouseMoveEvent(QMouseEvent *mouseEvent) override; void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; - void leftMousePress(QMouseEvent *event); QGraphicsItem* getItemAtClick(QMouseEvent *event); void wheelEvent(QWheelEvent *event) override; // void mouseReleaseEvent(QMouseEvent *event) override;