diff options
Diffstat (limited to 'src/gui/GraphCanvas.cpp')
-rw-r--r-- | src/gui/GraphCanvas.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/gui/GraphCanvas.cpp b/src/gui/GraphCanvas.cpp index e9224cfc..fa5ed149 100644 --- a/src/gui/GraphCanvas.cpp +++ b/src/gui/GraphCanvas.cpp @@ -235,13 +235,14 @@ GraphCanvas::build_menus() void GraphCanvas::build() { - const Store::const_range kids = _app.store()->children_range(_graph); - // Create modules for blocks - for (Store::const_iterator i = kids.first; i != kids.second; ++i) { - SPtr<BlockModel> block = dynamic_ptr_cast<BlockModel>(i->second); - if (block && block->parent() == _graph) + for (Store::const_iterator n = _app.store()->find_first_child(_graph); + n != _app.store()->end() && n->first.is_child_of(_graph->uri()); + ++n) { + SPtr<BlockModel> block = dynamic_ptr_cast<BlockModel>(n->second); + if (block && block->parent() == _graph) { add_block(block); + } } // Create pseudo modules for ports (ports on this canvas, not on our module) @@ -699,7 +700,7 @@ GraphCanvas::paste() float min_x = std::numeric_limits<float>::max(); float min_y = std::numeric_limits<float>::max(); for (const auto& c : clipboard) { - if (c.first.parent() == Raul::Path("/")) { + if (uri_to_path(c.first).parent() == Raul::Path("/")) { const Atom& x = c.second->get_property(uris.ingen_canvasX); const Atom& y = c.second->get_property(uris.ingen_canvasY); if (x.type() == uris.atom_Float) { @@ -723,7 +724,8 @@ GraphCanvas::paste() // Put each top level object in the clipboard store ClashAvoider avoider(*_app.store().get()); for (const auto& c : clipboard) { - if (c.first.is_root() || c.first.parent() != Raul::Path("/")) { + const Raul::Path path(uri_to_path(c.first)); + if (path.is_root() || path.parent() != Raul::Path("/")) { continue; } |