diff --git a/src/gui/network/Network.cpp b/src/gui/network/Network.cpp index dbe15bb..f1f99ff 100644 --- a/src/gui/network/Network.cpp +++ b/src/gui/network/Network.cpp @@ -17,6 +17,7 @@ #include #include #include +#include using namespace enzo; @@ -82,6 +83,7 @@ void Network::leftMousePressed(QMouseEvent *event) { std::cout << "LEFT MOUSE PRESSED\n"; Qt::KeyboardModifiers mods = event->modifiers(); + leftMouseStart = event->pos(); // QGraphicsItem* itemClicked = view_->itemAt(event->pos()); QList clickedItems = view_->items(event->pos()); @@ -109,19 +111,6 @@ void Network::leftMousePressed(QMouseEvent *event) { destroyFloatingEdge(); } - // display flag - else if(QGraphicsItem* clickedDisplayFlag = itemOfType(clickedItems)) - { - NodeGraphic* clickedNode = static_cast(itemOfType(clickedItems)); - enzo::nt::OpId opId = clickedNode->getOpId(); - if(auto prevDisplayOpId = nm_->getDisplayOp(); prevDisplayOpId) - { - NodeGraphic* prevDisplayNode = nodeStore_.at(*prevDisplayOpId); - prevDisplayNode->setDisplayFlag(false); - } - nm_->setDisplayOp(opId); - static_cast(clickedDisplayFlag)->setEnabled(true); - } else if(QGraphicsItem* clickedNode = itemOfType(clickedItems)) { nodeMoveDelta_=clickedNode->pos()-view_->mapToScene(event->pos()); @@ -368,6 +357,23 @@ void Network::mouseReleaseEvent(QMouseEvent *event) QGraphicsItem* hoverSocket = itemOfType(hoverItems); if(event->button() == Qt::LeftButton) { + // display flag + if( + QGraphicsItem* clickedDisplayFlag = itemOfType(hoverItems); + clickedDisplayFlag && + QLineF(event->pos(), leftMouseStart).length()<5.0f + ) + { + NodeGraphic* clickedNode = static_cast(itemOfType(hoverItems)); + enzo::nt::OpId opId = clickedNode->getOpId(); + if(auto prevDisplayOpId = nm_->getDisplayOp(); prevDisplayOpId) + { + NodeGraphic* prevDisplayNode = nodeStore_.at(*prevDisplayOpId); + prevDisplayNode->setDisplayFlag(false); + } + nm_->setDisplayOp(opId); + static_cast(clickedDisplayFlag)->setEnabled(true); + } if(state_==State::MOVING_NODE) { moveNodeBuffer.clear(); diff --git a/src/gui/network/Network.h b/src/gui/network/Network.h index 9ddfc3a..b3c1efa 100644 --- a/src/gui/network/Network.h +++ b/src/gui/network/Network.h @@ -50,6 +50,7 @@ private: QPointF nodeMoveDelta_; State state_=State::DEFAULT; + QPointF leftMouseStart; void keyPressEvent(QKeyEvent *event) override; void keyReleaseEvent(QKeyEvent *event) override;