From 91c0f143ecdb05cbe8a8acfa5e57fa57c0ff98b0 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 31 Mar 2023 22:06:41 +0200 Subject: [PATCH] Set sensitvity of "Insert Selected Region" --- gtk2_ardour/editor.cc | 3 +++ gtk2_ardour/editor.h | 1 + gtk2_ardour/editor_ops.cc | 23 +++++++++++++++-------- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index f69da2fc60..d962ddfb97 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -2056,6 +2056,9 @@ Editor::add_dstream_context_items (Menu_Helpers::MenuList& edit_items) edit_items.push_back (SeparatorElem()); edit_items.push_back (MenuElem (_("Insert Selected Region"), sigc::bind (sigc::mem_fun(*this, &Editor::insert_source_list_selection), 1.0f))); + if (!current_playlist () || !_sources->get_single_selection ()) { + edit_items.back ().set_sensitive (false); + } edit_items.push_back (MenuElem (_("Insert Existing Media"), sigc::bind (sigc::mem_fun(*this, &Editor::add_external_audio_action), ImportToTrack))); /* Nudge track */ diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 072287793c..60069f737a 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1438,6 +1438,7 @@ private: void temporal_zoom_by_sample (samplepos_t start, samplepos_t end); void temporal_zoom_to_sample (bool coarser, samplepos_t sample); + std::shared_ptr current_playlist () const; void insert_source_list_selection (float times); /* import & embed */ diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 9f7f469d06..59a0d8e285 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -2656,28 +2656,35 @@ Editor::unhide_ranges () } /* INSERT/REPLACE */ - -void -Editor::insert_source_list_selection (float times) +std::shared_ptr +Editor::current_playlist () const { - RouteTimeAxisView *tv = 0; std::shared_ptr playlist; + RouteTimeAxisView *tv = 0; if (clicked_routeview != 0) { tv = clicked_routeview; } else if (!selection->tracks.empty()) { if ((tv = dynamic_cast(selection->tracks.front())) == 0) { - return; + return playlist; } } else if (entered_track != 0) { if ((tv = dynamic_cast(entered_track)) == 0) { - return; + return playlist;; } } else { - return; + return playlist; } - if ((playlist = tv->playlist()) == 0) { + return tv->playlist (); +} + +void +Editor::insert_source_list_selection (float times) +{ + std::shared_ptr playlist = current_playlist (); + + if (!playlist) { return; }