solo_isolate_state_column->set_sizing(TREE_VIEW_COLUMN_FIXED);
solo_isolate_state_column->set_alignment(ALIGN_CENTER);
solo_isolate_state_column->set_expand(false);
- solo_isolate_state_column->set_fixed_width(15);
+ solo_isolate_state_column->set_fixed_width(22);
// Solo safe toggle
CellRendererPixbufMulti* solo_safe_renderer = manage (new CellRendererPixbufMulti ());
}
bool
-EditorRoutes::enter_notify (GdkEventCrossing* ev)
+EditorRoutes::enter_notify (GdkEventCrossing*)
{
+ if (name_editable) {
+ return true;
+ }
+
/* arm counter so that ::selection_filter() will deny selecting anything for the
next two attempts to change selection status.
*/
}
bool
-EditorRoutes::leave_notify (GdkEventCrossing* ev)
+EditorRoutes::leave_notify (GdkEventCrossing*)
{
selection_countdown = 0;
// Get the model row that has been toggled.
Gtk::TreeModel::Row row = *_model->get_iter (Gtk::TreeModel::Path (path_string));
- TimeAxisView *tv = row[_columns.tv];
- AudioTimeAxisView *atv = dynamic_cast<AudioTimeAxisView*> (tv);
+ TimeAxisView* tv = row[_columns.tv];
+ RouteTimeAxisView *rtv = dynamic_cast<RouteTimeAxisView*> (tv);
- if (atv != 0 && atv->is_audio_track()){
+ if (rtv && rtv->track()) {
boost::shared_ptr<RouteList> rl (new RouteList);
- rl->push_back (atv->route());
- _session->set_record_enabled (rl, !atv->track()->record_enabled(), Session::rt_cleanup);
+ rl->push_back (rtv->route());
+ _session->set_record_enabled (rl, !rtv->track()->record_enabled(), Session::rt_cleanup);
}
}
Gtk::TreeModel::Row row = *_model->get_iter (Gtk::TreeModel::Path (path_string));
TimeAxisView *tv = row[_columns.tv];
- AudioTimeAxisView *atv = dynamic_cast<AudioTimeAxisView*> (tv);
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tv);
- if (atv != 0) {
+ if (rtv != 0) {
boost::shared_ptr<RouteList> rl (new RouteList);
- rl->push_back (atv->route());
- _session->set_solo (rl, !atv->route()->soloed(), Session::rt_cleanup);
+ rl->push_back (rtv->route());
+ if (Config->get_solo_control_is_listen_control()) {
+ _session->set_listen (rl, !rtv->route()->listening_via_monitor(), Session::rt_cleanup);
+ } else {
+ _session->set_solo (rl, !rtv->route()->self_soloed(), Session::rt_cleanup);
+ }
}
}
Gtk::TreeModel::Row row = *_model->get_iter (Gtk::TreeModel::Path (path_string));
TimeAxisView *tv = row[_columns.tv];
- AudioTimeAxisView *atv = dynamic_cast<AudioTimeAxisView*> (tv);
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tv);
- if (atv != 0) {
- atv->route()->set_solo_isolated (!atv->route()->solo_isolated(), this);
+ if (rtv) {
+ rtv->route()->set_solo_isolated (!rtv->route()->solo_isolated(), this);
}
}
Gtk::TreeModel::Row row = *_model->get_iter (Gtk::TreeModel::Path (path_string));
TimeAxisView *tv = row[_columns.tv];
- AudioTimeAxisView *atv = dynamic_cast<AudioTimeAxisView*> (tv);
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tv);
- if (atv != 0) {
- atv->route()->set_solo_safe (!atv->route()->solo_safe(), this);
+ if (rtv) {
+ rtv->route()->set_solo_safe (!rtv->route()->solo_safe(), this);
}
}
n++;
}
+
/* whenever we go idle, update the track view list to reflect the new order.
we can't do this here, because we could mess up something that is traversing
the track order and has caused a redisplay of the list.
*/
Glib::signal_idle().connect (sigc::mem_fun (*_editor, &Editor::sync_track_view_list_and_routes));
+ _editor->reset_controls_layout_height (position);
+ _editor->reset_controls_layout_width ();
_editor->full_canvas_height = position + _editor->canvas_timebars_vsize;
_editor->vertical_adjustment.set_upper (_editor->full_canvas_height);
row[_columns.route] = (*x)->route ();
row[_columns.is_track] = (boost::dynamic_pointer_cast<Track> ((*x)->route()) != 0);
row[_columns.mute_state] = (*x)->route()->muted();
- row[_columns.solo_state] = (*x)->route()->soloed();
+ row[_columns.solo_state] = RouteUI::solo_visual_state ((*x)->route());
row[_columns.solo_isolate_state] = (*x)->route()->solo_isolated();
row[_columns.solo_safe_state] = (*x)->route()->solo_safe();
row[_columns.name_editable] = true;
(*x)->route()->mute_changed.connect (*this, MISSING_INVALIDATOR, boost::bind (&EditorRoutes::update_mute_display, this), gui_context());
(*x)->route()->solo_changed.connect (*this, MISSING_INVALIDATOR, ui_bind (&EditorRoutes::update_solo_display, this, _1), gui_context());
+ (*x)->route()->listen_changed.connect (*this, MISSING_INVALIDATOR, ui_bind (&EditorRoutes::update_solo_display, this, _1), gui_context());
(*x)->route()->solo_isolated_changed.connect (*this, MISSING_INVALIDATOR, boost::bind (&EditorRoutes::update_solo_isolate_display, this), gui_context());
(*x)->route()->solo_safe_changed.connect (*this, MISSING_INVALIDATOR, boost::bind (&EditorRoutes::update_solo_safe_display, this), gui_context());
}
break;
case 's':
- if (get_relevant_routes (rl)) {
- _session->set_solo (rl, !rl->front()->soloed(), Session::rt_cleanup);
- }
+ if (Config->get_solo_control_is_listen_control()) {
+ _session->set_listen (rl, !rl->front()->listening_via_monitor(), Session::rt_cleanup);
+ } else {
+ _session->set_solo (rl, !rl->front()->self_soloed(), Session::rt_cleanup);
+ }
return true;
break;
}
bool
-EditorRoutes::selection_filter (Glib::RefPtr<TreeModel> const &, TreeModel::Path const &path , bool selected)
+EditorRoutes::selection_filter (Glib::RefPtr<TreeModel> const &, TreeModel::Path const&, bool /*selected*/)
{
if (selection_countdown) {
if (--selection_countdown == 0) {