[Summary] Added use cases for master bus selection

This commit is contained in:
GZharun 2014-12-17 13:26:25 +02:00
parent 1d17bd3321
commit cb4f49e3b4
2 changed files with 48 additions and 15 deletions

View file

@ -132,7 +132,7 @@ MasterBusUI::MasterBusUI (Session* sess, PublicEditor& ed)
_master_mute_button.signal_clicked.connect (sigc::mem_fun (*this, &MasterBusUI::on_master_mute_button)); _master_mute_button.signal_clicked.connect (sigc::mem_fun (*this, &MasterBusUI::on_master_mute_button));
_clear_solo_button.signal_clicked.connect (sigc::mem_fun (*this, &MasterBusUI::on_clear_solo_button)); _clear_solo_button.signal_clicked.connect (sigc::mem_fun (*this, &MasterBusUI::on_clear_solo_button));
_global_rec_button.signal_clicked.connect (sigc::mem_fun (*this, &MasterBusUI::on_global_rec_button)); _global_rec_button.signal_clicked.connect (sigc::mem_fun (*this, &MasterBusUI::on_global_rec_button));
_master_event_box.signal_button_press_event().connect (sigc::mem_fun (*this, &MasterBusUI::on_master_event_box_button_release)); _master_event_box.signal_button_press_event().connect (sigc::mem_fun (*this, &MasterBusUI::on_master_event_box_button_press));
_editor.get_selection().TracksChanged.connect (sigc::mem_fun(*this, &MasterBusUI::update_master_bus_selection)); _editor.get_selection().TracksChanged.connect (sigc::mem_fun(*this, &MasterBusUI::update_master_bus_selection));
@ -247,31 +247,64 @@ MasterBusUI::update_master_bus_selection ()
} }
bool bool
MasterBusUI::on_master_event_box_button_release (GdkEventButton *ev) MasterBusUI::on_master_event_box_button_press (GdkEventButton *ev)
{ {
if (ev->button == 1) { if (ev->button == 1) {
if (Keyboard::modifier_state_equals (ev->state, (Keyboard::TertiaryModifier|Keyboard::PrimaryModifier))) {
TimeAxisView* tv = _editor.axis_view_from_route (_route );
if (tv) {
/* special case: select/deselect all tracks along with master bus*/
if (_editor.get_selection().selected (tv)) {
_editor.get_selection().clear_tracks ();
} else {
_editor.select_all_tracks ();
}
}
return true;
}
switch (ArdourKeyboard::selection_type (ev->state)) { switch (ArdourKeyboard::selection_type (ev->state)) {
case Selection::Toggle: case Selection::Toggle:
if (_selected) { {
TimeAxisView* tv = _editor.axis_view_from_route (_route ); TimeAxisView* tv = _editor.axis_view_from_route (_route );
if (tv) { if (tv) {
_editor.set_selected_track(*tv, Selection::Toggle); _editor.get_selection().toggle (tv);
} }
_selected = false; _selected = false;
break; }
} /*else - just fall down*/ break;
case Selection::Set: case Selection::Set:
if (!_selected) { {
TimeAxisView* tv = _editor.axis_view_from_route (_route );
if (tv) {
_editor.set_selected_track(*tv);
}
_selected = true;
}
break;
case Selection::Extend:
{
TimeAxisView* tv = _editor.axis_view_from_route (_route );
if (tv) {
_editor.extend_selection_to_track (*tv);
}
_selected = true;
}
break;
case Selection::Add:
{
TimeAxisView* tv = _editor.axis_view_from_route (_route ); TimeAxisView* tv = _editor.axis_view_from_route (_route );
if (tv) { if (tv) {
_editor.set_selected_track(*tv); _editor.get_selection().add (tv);
} }
_selected = true; _selected = true;
break;
} }
break;
} }
} }

View file

@ -73,7 +73,7 @@ private:
void on_global_rec_button (WavesButton*); void on_global_rec_button (WavesButton*);
void on_output_connection_mode_changed (); void on_output_connection_mode_changed ();
bool on_level_meter_button_press (GdkEventButton*); bool on_level_meter_button_press (GdkEventButton*);
bool on_master_event_box_button_release (GdkEventButton*); bool on_master_event_box_button_press (GdkEventButton*);
PBD::ScopedConnection _route_meter_connection; PBD::ScopedConnection _route_meter_connection;