diff options
author | David Robillard <d@drobilla.net> | 2006-09-18 06:24:53 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-09-18 06:24:53 +0000 |
commit | 6f93b3d7c80f9dee2d95fac1bbc4f781a6f45979 (patch) | |
tree | 82b27a4802198215546558c006f7ac4228ab0599 /src/progs/ingenuity/BreadCrumbBox.cpp | |
parent | d520692eb49ff9e5aded38061a204713571b095b (diff) | |
download | ingen-6f93b3d7c80f9dee2d95fac1bbc4f781a6f45979.tar.gz ingen-6f93b3d7c80f9dee2d95fac1bbc4f781a6f45979.tar.bz2 ingen-6f93b3d7c80f9dee2d95fac1bbc4f781a6f45979.zip |
Work on loading old (deprecated) patches.
More error tolerance in Store, related bugfixes.
Patch port adding (threading) bug fixed (made event blocking).
Better PatchView cacheing.
Moved generic things from engine to util (shared)
Bug fixes, features, etc.
git-svn-id: http://svn.drobilla.net/lad/ingen@142 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/progs/ingenuity/BreadCrumbBox.cpp')
-rw-r--r-- | src/progs/ingenuity/BreadCrumbBox.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/progs/ingenuity/BreadCrumbBox.cpp b/src/progs/ingenuity/BreadCrumbBox.cpp index c4234e8a..5fa5eb6e 100644 --- a/src/progs/ingenuity/BreadCrumbBox.cpp +++ b/src/progs/ingenuity/BreadCrumbBox.cpp @@ -28,6 +28,17 @@ BreadCrumbBox::BreadCrumbBox() } +CountedPtr<PatchView> +BreadCrumbBox::view(const Path& path) +{ + for (std::list<BreadCrumb*>::const_iterator i = _breadcrumbs.begin(); i != _breadcrumbs.end(); ++i) + if ((*i)->path() == path) + return (*i)->view(); + + return CountedPtr<PatchView>(); +} + + /** Sets up the crumbs to display a @a path. * * If @a path is already part of the shown path, it will be selected and the @@ -45,7 +56,12 @@ BreadCrumbBox::build(Path path, CountedPtr<PatchView> view) for (std::list<BreadCrumb*>::iterator i = _breadcrumbs.begin(); i != _breadcrumbs.end(); ++i) { if ((*i)->path() == path) { (*i)->set_active(true); - (*i)->set_view(view); + if (!(*i)->view()) + (*i)->set_view(view); + + // views are expensive, having two around for the same patch is a bug + assert((*i)->view() == view); + } else { (*i)->set_active(false); } |