shift+drag node to snap to grid
parent
f1dc18c274
commit
8680b57a3d
|
@ -196,6 +196,18 @@ void NodeObject::promptDelete() {
|
|||
}
|
||||
}
|
||||
|
||||
void NodeObject::mouseMoveEvent(QGraphicsSceneMouseEvent* e) {
|
||||
QGraphicsObject::mouseMoveEvent(e);
|
||||
if (scene()->selectedItems().size() == 1 && e->modifiers() & Qt::Modifier::SHIFT) {
|
||||
// snap to grid (by center) if single selection and shift held
|
||||
constexpr qreal grid = 16.0;
|
||||
auto r = boundingRect();
|
||||
auto cx = r.width()/2.0;
|
||||
auto cy = r.height()/2.0;
|
||||
setPos(std::round((x()+cx)/grid)*grid-cx, std::round((y()+cy)/grid)*grid-cy);
|
||||
}
|
||||
}
|
||||
|
||||
void NodeObject::mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) {
|
||||
node->onDoubleClick();
|
||||
}
|
||||
|
|
|
@ -110,6 +110,8 @@ namespace Xybrid::UI {
|
|||
inline const std::shared_ptr<Data::Node>& getNode() const { return node; }
|
||||
void promptDelete();
|
||||
|
||||
void mouseMoveEvent(QGraphicsSceneMouseEvent*) override;
|
||||
|
||||
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) override;
|
||||
void contextMenuEvent(QGraphicsSceneContextMenuEvent*) override;
|
||||
|
||||
|
|
Loading…
Reference in New Issue