File tree Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -1041,6 +1041,16 @@ QtNodes::Node* MainWindow::subTreeExpand(GraphicContainer &container,
10411041 if ( option == SUBTREE_EXPAND && subtree_model->expanded () == false )
10421042 {
10431043 auto subtree_container = getTabByName (subtree_name);
1044+
1045+ // Prevent expansion of invalid subtree
1046+ if ( !subtree_container->containsValidTree () )
1047+ {
1048+ QMessageBox::warning (this , tr (" Oops!" ),
1049+ tr (" Invalid SubTree. Can not expand SubTree." ),
1050+ QMessageBox::Cancel);
1051+ return &node;
1052+ }
1053+
10441054 auto abs_subtree = BuildTreeFromScene ( subtree_container->scene () );
10451055
10461056 subtree_model->setExpanded (true );
@@ -1361,6 +1371,16 @@ void MainWindow::refreshExpandedSubtrees()
13611371
13621372 for (auto subtree_node: subtree_nodes)
13631373 {
1374+ // expanded subtrees may have become invalid
1375+ // collapse invalid subtrees before refreshing them
1376+ auto subtree_model = dynamic_cast <SubtreeNodeModel*>(subtree_node->nodeDataModel ());
1377+ const QString& subtree_name = subtree_model->registrationName ();
1378+ auto subtree_container = getTabByName (subtree_name);
1379+ if ( subtree_model->expanded () && !subtree_container->containsValidTree () )
1380+ {
1381+ subTreeExpand ( *container, *subtree_node, SUBTREE_COLLAPSE );
1382+ }
1383+
13641384 subTreeExpand ( *container, *subtree_node, SUBTREE_REFRESH );
13651385 }
13661386}
You can’t perform that action at this time.
0 commit comments