summaryrefslogtreecommitdiff
path: root/gtk2_ardour/window_manager.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-07-12 10:27:19 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-07-12 10:27:19 -0400
commit53274c5baef194e14850757ab623c40d8217ebd7 (patch)
treeeaf7ab48590b81e553163f8de77c7c3f586972de /gtk2_ardour/window_manager.cc
parent600697513e71086203c8d382ae8455db9ffeaaa3 (diff)
do not show windows derived from ArdourDialog at startup.
See code comment for more details
Diffstat (limited to 'gtk2_ardour/window_manager.cc')
-rw-r--r--gtk2_ardour/window_manager.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/gtk2_ardour/window_manager.cc b/gtk2_ardour/window_manager.cc
index 24ed57da6d..73260b1f56 100644
--- a/gtk2_ardour/window_manager.cc
+++ b/gtk2_ardour/window_manager.cc
@@ -144,12 +144,27 @@ Manager::show_visible() const
{
for (Windows::const_iterator i = _windows.begin(); i != _windows.end(); ++i) {
if ((*i)->visible()) {
- if (! (*i)->get (true)) {
+ Gtk::Window* win = (*i)->get (true);
+ if (!win) {
/* the window may be a plugin GUI for a plugin which
* is disabled or longer present.
*/
continue;
}
+ if (dynamic_cast<ArdourDialog*> (win)) {
+ /* do not show dialogs at startup. Most
+ * dialogs require some signal connection work
+ * because we are trying to avoid recursive
+ * event loops (connecting instead to
+ * ::signal_response(). This means we need to
+ * destroy the window as well, so that the code
+ * which checks if it should be created will
+ * find that it is missing and will create it
+ * and connect to any necessary signals.
+ */
+ (*i)->drop_window ();
+ continue;
+ }
(*i)->show_all ();
(*i)->present ();
}