-Editor::popup_track_context_menu (int button, int32_t time, ItemType item_type, bool with_selection, nframes_t frame)
-{
- using namespace Menu_Helpers;
- Menu* (Editor::*build_menu_function)(nframes_t);
- Menu *menu;
-
- switch (item_type) {
- case RegionItem:
- case RegionViewName:
- case RegionViewNameHighlight:
- if (with_selection) {
- build_menu_function = &Editor::build_track_selection_context_menu;
- } else {
- build_menu_function = &Editor::build_track_region_context_menu;
- }
- break;
-
- case SelectionItem:
- if (with_selection) {
- build_menu_function = &Editor::build_track_selection_context_menu;
- } else {
- build_menu_function = &Editor::build_track_context_menu;
- }
- break;
-
- case CrossfadeViewItem:
- build_menu_function = &Editor::build_track_crossfade_context_menu;
- break;
-
- case StreamItem:
- if (clicked_audio_trackview->get_diskstream()) {
- build_menu_function = &Editor::build_track_context_menu;
- } else {
- build_menu_function = &Editor::build_track_bus_context_menu;
- }
- break;
-
- default:
- /* probably shouldn't happen but if it does, we don't care */
- return;
- }
-
- menu = (this->*build_menu_function)(frame);
- menu->set_name ("ArdourContextMenu");
-
- /* now handle specific situations */
-
- switch (item_type) {
- case RegionItem:
- case RegionViewName:
- case RegionViewNameHighlight:
- if (!with_selection) {
- if (region_edit_menu_split_item) {
- if (clicked_regionview && clicked_regionview->region()->covers (edit_cursor->current_frame)) {
- ActionManager::set_sensitive (ActionManager::edit_cursor_in_region_sensitive_actions, true);
- } else {
- ActionManager::set_sensitive (ActionManager::edit_cursor_in_region_sensitive_actions, false);
- }
- }
- /*
- if (region_edit_menu_split_multichannel_item) {
- if (clicked_regionview && clicked_regionview->region().n_channels() > 1) {
- // GTK2FIX find the action, change its sensitivity
- // region_edit_menu_split_multichannel_item->set_sensitive (true);
- } else {
- // GTK2FIX see above
- // region_edit_menu_split_multichannel_item->set_sensitive (false);
- }
- }*/
- }
- break;
-
- case SelectionItem:
- break;
-
- case CrossfadeViewItem:
- break;
-
- case StreamItem:
- break;
-
- default:
- /* probably shouldn't happen but if it does, we don't care */
- return;
- }
-
- if (clicked_audio_trackview && clicked_audio_trackview->audio_track()) {
-
- /* Bounce to disk */
-
- using namespace Menu_Helpers;
- MenuList& edit_items = menu->items();
-
- edit_items.push_back (SeparatorElem());
-
- switch (clicked_audio_trackview->audio_track()->freeze_state()) {
- case AudioTrack::NoFreeze:
- edit_items.push_back (MenuElem (_("Freeze"), mem_fun(*this, &Editor::freeze_route)));
- break;
-
- case AudioTrack::Frozen:
- edit_items.push_back (MenuElem (_("Unfreeze"), mem_fun(*this, &Editor::unfreeze_route)));
- break;
-
- case AudioTrack::UnFrozen:
- edit_items.push_back (MenuElem (_("Freeze"), mem_fun(*this, &Editor::freeze_route)));
- break;
- }
-
- }
-
- menu->popup (button, time);
-}
-
-Menu*
-Editor::build_track_context_menu (nframes_t ignored)