Make sure we don't deactivate un-activated plugins or re-activate already activated...
[ardour.git] / gtk2_ardour / editor_audio_import.cc
index 0633b5ccaf23a26fd34b137deb916c3ff3c15047..0b674ad3ab3a95df19f3dd7acf34c9a063b44227 100644 (file)
@@ -73,6 +73,7 @@ void
 Editor::external_audio_dialog ()
 {
        vector<Glib::ustring> paths;
+       uint32_t track_cnt;
 
        if (session == 0) {
                MessageDialog msg (0, _("You can't import or embed an audiofile until you have a session loaded."));
@@ -80,10 +81,22 @@ Editor::external_audio_dialog ()
                return;
        }
        
+       track_cnt = 0;
+
+       for (TrackSelection::iterator x = selection->tracks.begin(); x != selection->tracks.end(); ++x) {
+               AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*>(*x);
+               
+               if (!atv) {
+                       continue;
+               } else if (atv->is_audio_track()) {
+                       track_cnt++;
+               }
+       }
+
        if (sfbrowser == 0) {
-               sfbrowser = new SoundFileOmega (*this, _("Add existing audio"), session, selection->tracks.size());
+               sfbrowser = new SoundFileOmega (*this, _("Add existing audio"), session, track_cnt);
        } else {
-               sfbrowser->reset (selection->tracks.size());
+               sfbrowser->reset (track_cnt);
        }
 
        sfbrowser->show_all ();
@@ -99,6 +112,7 @@ Editor::external_audio_dialog ()
        case RESPONSE_OK:
                sfbrowser->hide ();
                break;
+
        default:
                // cancel from the browser - we are done
                sfbrowser->hide ();
@@ -150,7 +164,12 @@ Editor::get_nth_selected_audio_track (int nth) const
        TrackSelection::iterator x;
        
        for (x = selection->tracks.begin(); nth > 0 && x != selection->tracks.end(); ++x) {
-               if (dynamic_cast<AudioTimeAxisView*>(*x)) {
+
+               atv = dynamic_cast<AudioTimeAxisView*>(*x);
+               
+               if (!atv) {
+                       continue;
+               } else if (atv->is_audio_track()) {
                        --nth;
                }
        }
@@ -161,7 +180,7 @@ Editor::get_nth_selected_audio_track (int nth) const
                atv = dynamic_cast<AudioTimeAxisView*>(*x);
        }
        
-       if (!atv) {
+       if (!atv || !atv->is_audio_track()) {
                return boost::shared_ptr<AudioTrack>();
        }
        
@@ -648,17 +667,11 @@ Editor::finish_bringing_in_audio (boost::shared_ptr<AudioRegion> region, uint32_
        {
                if (!existing_track) {
 
-                       if (selection->tracks.empty()) {
-                               return -1;
-                       }
-                       
-                       AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*>(selection->tracks.front());
-                       
-                       if (!atv) {
+                       existing_track = get_nth_selected_audio_track (0);
+
+                       if (!existing_track) {
                                return -1;
                        }
-                       
-                       existing_track = atv->audio_track();
                }
 
                boost::shared_ptr<Playlist> playlist = existing_track->diskstream()->playlist();