Skip to content

DataFlowGraphicsScene does not seem to delete all its connections #464

Description

@JamesBloomScheff2

The constructor for DataFlowGraphicsScene contains this code

    connect(&_graphModel,
            &DataFlowGraphModel::inPortDataWasSet,
            [this](NodeId const nodeId, PortType const, PortIndex const) { onNodeUpdated(nodeId); });

This connection does not appear to be disconnected when the scene is deleted. There's information online that Qt's automatic disconnect does not happen under some circumstances when lambdas are used. I believe this is one of those cases.

What I am seeing is that I replace the scene and then delete the old scene. When the inPortDataWasSet signal is later sent, the onNodeUpdated slot is called for the old delete scene. I overrode disconnectNotify and it was not called for this signal.

In response to your comment for 462. I see the setNodePainter method which should do what I need. I don't, however, see the code that you mention in your comment. NodeGraphicsObject.cpp, line 165 is the blank line in the middle of itemChange and I do not see anything requesting a node painter. The default node painter seems to be hardcoded in the constructor for BasicGraphicsScene, unless replaced by calling setNodePainter.

I'm wondering if I have old code. Most of the files I have are from march 2024. I don't see a version number anywhere but the person who built qtnodes labeled things v3-08

QVariant NodeGraphicsObject::itemChange(GraphicsItemChange change, const QVariant &value)
{
    if (change == ItemScenePositionHasChanged && scene()) {
        moveConnections();
    }

    return QGraphicsObject::itemChange(change, value);
}

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions