Skip to content

Commit 944ff15

Browse files
committed
[ui] Additive mode for select following Nodes
Implement additive selection behavior when selecting downstream nodes from a node, using Alt+Shift+Click.
1 parent 4730cc0 commit 944ff15

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

meshroom/ui/graph.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -952,9 +952,12 @@ def selectNodes(self, nodes, command=QItemSelectionModel.SelectionFlag.ClearAndS
952952
self.selectNodesByIndices(indices, command)
953953

954954
@Slot(Node)
955-
def selectFollowing(self, node: Node):
955+
@Slot(Node, int)
956+
def selectFollowing(self, node: Node, command=QItemSelectionModel.SelectionFlag.ClearAndSelect):
956957
"""Select all the nodes that depend on `node`."""
957-
self.selectNodes(self._graph.dfsOnDiscover(startNodes=[node], reverse=True, dependenciesOnly=True)[0])
958+
self.selectNodes(
959+
self._graph.dfsOnDiscover(startNodes=[node], reverse=True, dependenciesOnly=True)[0], command
960+
)
958961
self.selectedNode = node
959962

960963
@Slot(int)

meshroom/ui/qml/GraphEditor/GraphEditor.qml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -864,7 +864,12 @@ Item {
864864
selectionMode = ItemSelectionModel.Toggle;
865865
}
866866
if(mouse.modifiers & Qt.AltModifier) {
867-
uigraph.selectFollowing(node);
867+
let selectFollowingMode = ItemSelectionModel.ClearAndSelect;
868+
if(mouse.modifiers & Qt.ShiftModifier) {
869+
selectFollowingMode = ItemSelectionModel.Select;
870+
}
871+
uigraph.selectFollowing(node, selectFollowingMode);
872+
// Indicate selection has been dealt with by setting conservative Select mode.
868873
selectionMode = ItemSelectionModel.Select;
869874
}
870875
}

0 commit comments

Comments
 (0)