feat: less sensitive display flag trigger

This commit is contained in:
parker
2025-07-06 17:07:12 +01:00
parent d6b630bc08
commit 544889c40d
2 changed files with 20 additions and 13 deletions

View File

@@ -17,6 +17,7 @@
#include <QMouseEvent>
#include <qgraphicsitem.h>
#include <qnamespace.h>
#include <QLine>
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<QGraphicsItem*> clickedItems = view_->items(event->pos());
@@ -109,19 +111,6 @@ void Network::leftMousePressed(QMouseEvent *event)
{
destroyFloatingEdge();
}
// display flag
else if(QGraphicsItem* clickedDisplayFlag = itemOfType<DisplayFlagButton>(clickedItems))
{
NodeGraphic* clickedNode = static_cast<NodeGraphic*>(itemOfType<NodeGraphic>(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<DisplayFlagButton*>(clickedDisplayFlag)->setEnabled(true);
}
else if(QGraphicsItem* clickedNode = itemOfType<NodeGraphic>(clickedItems))
{
nodeMoveDelta_=clickedNode->pos()-view_->mapToScene(event->pos());
@@ -368,6 +357,23 @@ void Network::mouseReleaseEvent(QMouseEvent *event)
QGraphicsItem* hoverSocket = itemOfType<SocketGraphic>(hoverItems);
if(event->button() == Qt::LeftButton)
{
// display flag
if(
QGraphicsItem* clickedDisplayFlag = itemOfType<DisplayFlagButton>(hoverItems);
clickedDisplayFlag &&
QLineF(event->pos(), leftMouseStart).length()<5.0f
)
{
NodeGraphic* clickedNode = static_cast<NodeGraphic*>(itemOfType<NodeGraphic>(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<DisplayFlagButton*>(clickedDisplayFlag)->setEnabled(true);
}
if(state_==State::MOVING_NODE)
{
moveNodeBuffer.clear();

View File

@@ -50,6 +50,7 @@ private:
QPointF nodeMoveDelta_;
State state_=State::DEFAULT;
QPointF leftMouseStart;
void keyPressEvent(QKeyEvent *event) override;
void keyReleaseEvent(QKeyEvent *event) override;