diff options
author | David Robillard <d@drobilla.net> | 2006-12-13 04:25:46 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-12-13 04:25:46 +0000 |
commit | d80bbb83b77d3e1dcdc9bfd60f795c4c2cbb1ac9 (patch) | |
tree | c56fea6691161077a266a0a97cad21e2c1c36897 /src/progs/ingenuity/WindowFactory.cpp | |
parent | 443530680da9d6f909088ceb6a5c86178225b84f (diff) | |
download | ingen-d80bbb83b77d3e1dcdc9bfd60f795c4c2cbb1ac9.tar.gz ingen-d80bbb83b77d3e1dcdc9bfd60f795c4c2cbb1ac9.tar.bz2 ingen-d80bbb83b77d3e1dcdc9bfd60f795c4c2cbb1ac9.zip |
Repeated attaching/reattaching/etc/etc with Ingenuity.
Fixed behaviour on closing last window (quit).
git-svn-id: http://svn.drobilla.net/lad/ingen@221 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/progs/ingenuity/WindowFactory.cpp')
-rw-r--r-- | src/progs/ingenuity/WindowFactory.cpp | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/src/progs/ingenuity/WindowFactory.cpp b/src/progs/ingenuity/WindowFactory.cpp index 33d545ca..c9ec9040 100644 --- a/src/progs/ingenuity/WindowFactory.cpp +++ b/src/progs/ingenuity/WindowFactory.cpp @@ -61,6 +61,36 @@ WindowFactory::~WindowFactory() } +void +WindowFactory::clear() +{ + for (PatchWindowMap::iterator i = _patch_windows.begin(); i != _patch_windows.end(); ++i) + delete i->second; + + _patch_windows.clear(); + + for (ControlWindowMap::iterator i = _control_windows.begin(); i != _control_windows.end(); ++i) + delete i->second; + + _control_windows.clear(); +} + + +/** Returns the number of Patch windows currently visible. + */ +size_t +WindowFactory::num_open_patch_windows() +{ + size_t ret = 0; + for (PatchWindowMap::iterator i = _patch_windows.begin(); i != _patch_windows.end(); ++i) + if (i->second->is_visible()) + ++ret; + + return ret; +} + + + PatchWindow* WindowFactory::patch_window(SharedPtr<PatchModel> patch) { @@ -145,7 +175,7 @@ WindowFactory::remove_patch_window(PatchWindow* win, GdkEventAny* ignored) if (ret == Gtk::RESPONSE_CLOSE) App::instance().quit(); else - return false; + return true; } PatchWindowMap::iterator w = _patch_windows.find(win->patch()->path()); @@ -155,7 +185,7 @@ WindowFactory::remove_patch_window(PatchWindow* win, GdkEventAny* ignored) delete win; - return true; + return false; } |