Further tweaks to EngineDialog z-axis stacking

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.
This commit is contained in:
Robin Gareus 2016-12-07 14:50:17 +01:00
parent 581c7b6b10
commit d766095732
2 changed files with 15 additions and 6 deletions

View 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 ()
{

View 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 ();