X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_mixer.cc;h=67b33a6c87fd3b8e510e83d342d5bd99b802ac7b;hb=a373e4cfc80cfc1dc712ecdf8013c18286ce2a6b;hp=2154da5d70a007340a50745c7d3cf2a19a95cfe2;hpb=05f3adaba3eb42ba407864dd04064472e68948a6;p=ardour.git diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc index 2154da5d70..67b33a6c87 100644 --- a/gtk2_ardour/editor_mixer.cc +++ b/gtk2_ardour/editor_mixer.cc @@ -42,6 +42,7 @@ #include "mixer_strip.h" #include "mixer_ui.h" #include "selection.h" +#include "ui_config.h" #include "i18n.h" @@ -77,11 +78,16 @@ Editor::show_editor_mixer (bool yn) show_editor_mixer_when_tracks_arrive = false; if (yn) { - Glib::RefPtr win = get_window (); + Gtk::Window* toplevel = current_toplevel(); + Glib::RefPtr win; Glib::RefPtr screen; - + + if (toplevel) { + win = toplevel->get_window(); + } + if (win) { - screen = win->get_screen(); + screen = win->get_screen(); } else { screen = Gdk::Screen::get_default(); } @@ -155,13 +161,13 @@ Editor::show_editor_mixer (bool yn) } } -#ifdef GTKOSX +#ifdef __APPLE__ /* XXX gtk problem here */ ensure_all_elements_drawn(); #endif } -#ifdef GTKOSX +#ifdef __APPLE__ void Editor::ensure_all_elements_drawn () { @@ -173,38 +179,15 @@ Editor::ensure_all_elements_drawn () void Editor::create_editor_mixer () { - current_mixer_strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(), - _session, - false); + current_mixer_strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(), _session, false); current_mixer_strip->Hiding.connect (sigc::mem_fun(*this, &Editor::current_mixer_strip_hidden)); current_mixer_strip->WidthChanged.connect (sigc::mem_fun (*this, &Editor::mixer_strip_width_changed)); -#ifdef GTKOSX +#ifdef __APPLE__ current_mixer_strip->WidthChanged.connect (sigc::mem_fun(*this, &Editor::ensure_all_elements_drawn)); #endif current_mixer_strip->set_embedded (true); - - current_mixer_strip->signal_enter_notify_event().connect (sigc::mem_fun(*this, &Editor::mixer_strip_enter_event )); - current_mixer_strip->signal_leave_notify_event().connect (sigc::mem_fun(*this, &Editor::mixer_strip_leave_event )); - -} -bool -Editor::mixer_strip_enter_event (GdkEventCrossing *ev) -{ - current_mixer_strip->set_selected(true); - return false; -} - -bool -Editor::mixer_strip_leave_event (GdkEventCrossing *ev) -{ - //if we have moved outside our strip, but not into a child view, then deselect ourselves - if ( !(ev->detail == GDK_NOTIFY_INFERIOR) ) { - current_mixer_strip->set_selected(false); - } - - return false; } void @@ -214,21 +197,6 @@ Editor::set_selected_mixer_strip (TimeAxisView& view) return; } - Glib::RefPtr act = ActionManager::get_action (X_("Editor"), X_("show-editor-mixer")); - - if (act) { - Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); - if (!tact || !tact->get_active()) { - /* not showing mixer strip presently */ - return; - } - } - - if (current_mixer_strip == 0) { - create_editor_mixer (); - } - - // if this is an automation track, then we shold the mixer strip should // show the parent @@ -257,6 +225,22 @@ Editor::set_selected_mixer_strip (TimeAxisView& view) } } + _session->set_editor_mixer (route); + + Glib::RefPtr act = ActionManager::get_action (X_("Editor"), X_("show-editor-mixer")); + + if (act) { + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); + if (!tact || !tact->get_active()) { + /* not showing mixer strip presently */ + return; + } + } + + if (current_mixer_strip == 0) { + create_editor_mixer (); + } + if (current_mixer_strip->route() == route) { return; } @@ -288,7 +272,7 @@ Editor::maybe_add_mixer_strip_width (XMLNode& node) void Editor::mixer_strip_width_changed () { -#ifdef GTKOSX +#ifdef __APPLE__ ensure_all_elements_drawn (); #endif @@ -304,7 +288,7 @@ Editor::track_mixer_selection () void Editor::follow_mixer_selection () { - if (!ARDOUR::Config->get_link_editor_and_mixer_selection() || _following_mixer_selection) { + if (_following_mixer_selection) { return; }