X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_mixer.cc;h=d6ce61fc487c7cb960626c71805bcf651f60995e;hb=e11b3f90c2d02735a071d526d67cfd0de90cbac3;hp=95f59d46d59ca9d5af4c4b6d2fa0e7e415730206;hpb=666e0870554705f4fb466fc6b188fe9b4000ca49;p=ardour.git diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc index 95f59d46d5..d6ce61fc48 100644 --- a/gtk2_ardour/editor_mixer.cc +++ b/gtk2_ardour/editor_mixer.cc @@ -47,6 +47,23 @@ Editor::editor_mixer_button_toggled () } } +void +Editor::editor_list_button_toggled () +{ + Glib::RefPtr act = ActionManager::get_action (X_("Editor"), X_("show-editor-list")); + if (act) { + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); + show_editor_list (tact->get_active()); + } +} + +void +Editor::cms_new (boost::shared_ptr r) +{ + current_mixer_strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(), *session, r); + current_mixer_strip->GoingAway.connect (mem_fun (*this, &Editor::cms_deleted)); +} + void Editor::cms_deleted () { @@ -73,12 +90,7 @@ Editor::show_editor_mixer (bool yn) AudioTimeAxisView* atv; if ((atv = dynamic_cast (*i)) != 0) { - - current_mixer_strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(), - *session, - atv->route(), false); - - current_mixer_strip->GoingAway.connect (mem_fun(*this, &Editor::cms_deleted)); + cms_new (atv->route ()); break; } } @@ -91,11 +103,7 @@ Editor::show_editor_mixer (bool yn) AudioTimeAxisView* atv; if ((atv = dynamic_cast (*i)) != 0) { - - current_mixer_strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(), - *session, - atv->route(), false); - current_mixer_strip->GoingAway.connect (mem_fun(*this, &Editor::cms_deleted)); + cms_new (atv->route ()); break; } } @@ -130,13 +138,23 @@ Editor::show_editor_mixer (bool yn) } } +void +Editor::show_editor_list (bool yn) +{ + if (yn) { + the_notebook.show(); + } else { + the_notebook.hide(); + } +} + void Editor::set_selected_mixer_strip (TimeAxisView& view) { - AudioTimeAxisView* at; + RouteTimeAxisView* rt; bool show = false; - if (!session || (at = dynamic_cast(&view)) == 0) { + if (!session || (rt = dynamic_cast(&view)) == 0) { return; } @@ -144,7 +162,7 @@ Editor::set_selected_mixer_strip (TimeAxisView& view) /* might be nothing to do */ - if (current_mixer_strip->route() == at->route()) { + if (current_mixer_strip->route() == rt->route()) { return; } @@ -157,7 +175,7 @@ Editor::set_selected_mixer_strip (TimeAxisView& view) current_mixer_strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(), *session, - at->route()); + rt->route(), false); current_mixer_strip->GoingAway.connect (mem_fun(*this, &Editor::cms_deleted)); if (show) { @@ -173,7 +191,7 @@ Editor::update_current_screen () { if (session && session->engine().running()) { - nframes_t frame; + nframes64_t frame; frame = session->audible_frame(); @@ -183,9 +201,9 @@ Editor::update_current_screen () /* only update if the playhead is on screen or we are following it */ - if (_follow_playhead) { + if (_follow_playhead && session->requested_return_frame() < 0) { - playhead_cursor->canvas_item.show(); + //playhead_cursor->canvas_item.show(); if (frame != last_update_frame) { @@ -235,17 +253,16 @@ Editor::update_current_screen () } else { if (frame != last_update_frame) { - if (frame < leftmost_frame || frame > leftmost_frame + current_page_frames()) { - playhead_cursor->canvas_item.hide(); - } else { - playhead_cursor->set_position (frame); - } + playhead_cursor->set_position (frame); } } almost_done: last_update_frame = frame; - +#ifdef GTKOSX + /*XXX in a perfect world we would not have to do this. */ + track_canvas->update_now(); +#endif if (current_mixer_strip) { current_mixer_strip->fast_update (); } @@ -287,6 +304,8 @@ Editor::current_mixer_strip_hidden () void Editor::session_going_away () { + _have_idled = false; + for (vector::iterator i = session_connections.begin(); i != session_connections.end(); ++i) { (*i).disconnect (); } @@ -296,16 +315,17 @@ Editor::session_going_away () cut_buffer->clear (); clicked_regionview = 0; - clicked_trackview = 0; - clicked_audio_trackview = 0; + clicked_axisview = 0; + clicked_routeview = 0; clicked_crossfadeview = 0; entered_regionview = 0; entered_track = 0; - latest_regionview = 0; last_update_frame = 0; drag_info.item = 0; last_canvas_frame = 0; + playhead_cursor->canvas_item.hide (); + /* hide all tracks */ hide_all_tracks (false); @@ -327,7 +347,10 @@ Editor::session_going_away () named_selection_display.set_model (named_selection_model); edit_group_display.set_model (group_model); - edit_cursor_clock.set_session (0); + edit_point_clock_connection_a.disconnect(); + edit_point_clock_connection_b.disconnect(); + + edit_point_clock.set_session (0); zoom_range_clock.set_session (0); nudge_clock.set_session (0); @@ -335,8 +358,10 @@ Editor::session_going_away () editor_mixer_button.set_active(false); editor_mixer_button.set_sensitive(false); + editor_list_button.set_active(false); + editor_list_button.set_sensitive(false); + /* clear tempo/meter rulers */ - remove_metric_marks (); hide_measures (); clear_marker_display (); @@ -367,3 +392,4 @@ Editor::maybe_add_mixer_strip_width (XMLNode& node) node.add_property ("mixer-width", enum_2_string (current_mixer_strip->get_width())); } } +