Further tweaks to EngineDialog z-axis stacking
authorRobin Gareus <robin@gareus.org>
Wed, 7 Dec 2016 13:50:17 +0000 (14:50 +0100)
committerRobin Gareus <robin@gareus.org>
Wed, 7 Dec 2016 13:50:17 +0000 (14:50 +0100)
When there's no main window (initial setup, no transient parent),
preset a normal window listed in the task-bar.

The duality the Engine Dialog being used as Ardour-WM managed non-modal
Window (Menu > A/M Setup) and modal Dialog (AudioEngineSetupRequired)
complicates this a bit.

gtk2_ardour/engine_dialog.cc
gtk2_ardour/engine_dialog.h

index a9b4dbdce04d868194747050546aaf4e14001f91..4dc806763fcea6751f0bffddd5a9d6981a625eaf 100644 (file)
@@ -53,6 +53,7 @@
 #include "engine_dialog.h"
 #include "gui_thread.h"
 #include "ui_config.h"
+#include "public_editor.h"
 #include "utils.h"
 #include "pbd/i18n.h"
 #include "splash.h"
@@ -114,12 +115,6 @@ EngineControl::EngineControl ()
 
        set_name (X_("AudioMIDISetup"));
 
-       if (UIConfiguration::instance().get_all_floating_windows_are_dialogs()) {
-               set_type_hint (Gdk::WINDOW_TYPE_HINT_DIALOG);
-       } else {
-               set_type_hint (Gdk::WINDOW_TYPE_HINT_UTILITY);
-       }
-
        /* the backend combo is the one thing that is ALWAYS visible */
 
        vector<const ARDOUR::AudioBackendInfo*> backends = ARDOUR::AudioEngine::instance()->available_backends();
@@ -432,6 +427,19 @@ EngineControl::on_show ()
        start_stop_button.grab_focus();
 }
 
+void
+EngineControl::on_map ()
+{
+       if (!ARDOUR_UI::instance()->session_loaded && !PublicEditor::_instance) {
+               set_type_hint (Gdk::WINDOW_TYPE_HINT_NORMAL);
+       } else if (UIConfiguration::instance().get_all_floating_windows_are_dialogs()) {
+               set_type_hint (Gdk::WINDOW_TYPE_HINT_DIALOG);
+       } else {
+               set_type_hint (Gdk::WINDOW_TYPE_HINT_UTILITY);
+       }
+       ArdourDialog::on_map ();
+}
+
 bool
 EngineControl::try_autostart ()
 {
index af13c3f78cb453c233b2d40e8956b42173ae05d3..142e1fea18d0ae7ae4f5963401883963a2221ce3 100644 (file)
@@ -304,6 +304,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
        sigc::connection output_channels_connection;
 
     void on_show ();
+    void on_map ();
     void control_app_button_clicked ();
     void start_stop_button_clicked ();
     void update_devices_button_clicked ();