diff options
author | Marius Kintel <marius@kintel.net> | 2011-09-04 16:53:09 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2011-09-04 16:53:09 (GMT) |
commit | 723c6b7cf28c54b93746dc99d58e16180f831e3a (patch) | |
tree | d3384b3cfc2a68006d99ad346f917aaf95f5043f /tests/opencsgtest.cc | |
parent | bdd7c1f583c8b37a5cbd302d66f8b5e55c5c85b8 (diff) |
bugfix: root modifier now works with test apps
Diffstat (limited to 'tests/opencsgtest.cc')
-rw-r--r-- | tests/opencsgtest.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/tests/opencsgtest.cc b/tests/opencsgtest.cc index 7e85322..06b7647 100644 --- a/tests/opencsgtest.cc +++ b/tests/opencsgtest.cc @@ -43,6 +43,15 @@ struct CsgInfo OffscreenView *glview; }; +AbstractNode *find_root_tag(AbstractNode *n) +{ + foreach(AbstractNode *v, n->children) { + if (v->modinst->tag_root) return v; + if (AbstractNode *vroot = find_root_tag(v)) return vroot; + } + return NULL; +} + int main(int argc, char *argv[]) { if (argc != 2) { @@ -99,7 +108,6 @@ int main(int argc, char *argv[]) AbstractModule *root_module; ModuleInstantiation root_inst; - AbstractNode *root_node; QFileInfo fileInfo(filename); handle_dep(filename); @@ -126,7 +134,10 @@ int main(int argc, char *argv[]) QDir::setCurrent(fileInfo.absolutePath()); AbstractNode::resetIndexCounter(); - root_node = root_module->evaluate(&root_ctx, &root_inst); + AbstractNode *absolute_root_node = root_module->evaluate(&root_ctx, &root_inst); + AbstractNode *root_node; + // Do we have an explicit root node (! modifier)? + if (!(root_node = find_root_tag(absolute_root_node))) root_node = absolute_root_node; Tree tree(root_node); |