diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-07-12 10:27:19 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-07-12 10:27:19 -0400 |
commit | 53274c5baef194e14850757ab623c40d8217ebd7 (patch) | |
tree | eaf7ab48590b81e553163f8de77c7c3f586972de /gtk2_ardour/window_manager.cc | |
parent | 600697513e71086203c8d382ae8455db9ffeaaa3 (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.cc | 17 |
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 (); } |