paceholder / nodeeditor

Qt Node Editor. Dataflow programming framework
BSD 3-Clause "New" or "Revised" License
2.92k stars 795 forks source link

Node Alignment #369

Open LiuPeiqiCN opened 1 year ago

LiuPeiqiCN commented 1 year ago

Commit 8a41b1c broken node alignment, new MoveNodeCommand(BasicGraphicsScene* scene, NodeId const nodeId, QPointF const &diff) has been deleted.

// Align-Top
connect(ui.btnAlignTop, &QPushButton::clicked,
    [=] {
        if (scene->selectedNodes().size() > 0)
        {
            auto nodeIds = scene->selectedNodes();

            qreal minY = DBL_MAX;
            for (size_t i = 0; i < nodeIds.size(); i++)
                minY = qMin(scene->nodeGraphicsObject(nodeIds[i])->y(), minY);

            for (size_t i = 0; i < nodeIds.size(); i++) {
                auto oldPos = scene->graphModel().nodeData(nodeIds[i], NodeRole::Position).value<QPointF>();
                if (minY != oldPos.y())
                {
                    scene->nodeGraphicsObject(nodeIds[i])->setY(minY);

                    // !!!!!! This function has been deleted in the latest commit
                    //scene->undoStack().push(new MoveNodeCommand(scene, nodeIds[i], QPointF(0, minY - oldPos.y())));
                }
            }
        }
    });