diff --git a/src/Gui/Network/Network.cpp b/src/Gui/Network/Network.cpp index d693f96..24eafee 100644 --- a/src/Gui/Network/Network.cpp +++ b/src/Gui/Network/Network.cpp @@ -408,6 +408,15 @@ void Network::mouseReleaseEvent(QMouseEvent *event) { moveNodeBuffer.clear(); state_=State::DEFAULT; + if( + QGraphicsItem* clickedNode = itemOfType(hoverItems); + clickedNode && + QLineF(event->pos(), leftMouseStart).length()<5.0f) + { + NodeGraphic* node = static_cast(clickedNode); + node->toggleSelected(); + } + } else if(floatingEdge_ && hoverSocket) { diff --git a/src/Gui/Network/NodeGraphic.cpp b/src/Gui/Network/NodeGraphic.cpp index 41ee3ea..c1e2365 100644 --- a/src/Gui/Network/NodeGraphic.cpp +++ b/src/Gui/Network/NodeGraphic.cpp @@ -154,6 +154,21 @@ QRectF NodeGraphic::boundingRect() const return boundRect; } +void NodeGraphic::setSelected(bool selected) +{ + selected_=selected; + update(); +} + +bool NodeGraphic::toggleSelected() +{ + bool selected = !selected_; + + setSelected(selected); + return selected; +} + + void NodeGraphic::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { // default outline @@ -169,6 +184,7 @@ void NodeGraphic::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio QBrush whiteBrush = QBrush("white"); painter->setBrush(QBrush(QColor("#1b1b1b"))); + if(selected_) painter->setPen(QPen(QColor("#fee046"), 2)); painter->drawRoundedRect(bodyRect_, 5, 5); painter->setPen(QPen(QColor("white"))); diff --git a/src/Gui/Network/NodeGraphic.h b/src/Gui/Network/NodeGraphic.h index baaf29f..3a5b288 100644 --- a/src/Gui/Network/NodeGraphic.h +++ b/src/Gui/Network/NodeGraphic.h @@ -22,14 +22,12 @@ public: QPointF getSocketScenePosition(int socketIndex, enzo::nt::SocketIOType socketType); QRectF getBodyRect(); void setDisplayFlag(bool state); + void setSelected(bool selected); + bool toggleSelected(); - // void addEdge(NodeEdgeGraphic* edge); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; - // void setInputEdge(NodeEdgeGraphic* edge, int indx); - // void setOutputEdge(NodeEdgeGraphic* edge, int indx); - @@ -44,7 +42,7 @@ private: std::vector outputs_; // std::vector edges_; - + bool selected_=false; std::string titleText_=""; std::string subTitleText_=""; int maxTitleLen_=10;