fix logic errors in duplicate tracks dialog
authorPaul Davis <paul@linuxaudiosystems.com>
Sat, 14 Nov 2015 21:02:05 +0000 (16:02 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Sat, 14 Nov 2015 21:02:05 +0000 (16:02 -0500)
gtk2_ardour/ardour_ui.cc
gtk2_ardour/duplicate_routes_dialog.cc
gtk2_ardour/duplicate_routes_dialog.h

index eb4730a545810209c98f3f80f1e2c8a0e397386f..6a9137cd6c610d1c5283c76d1b79c4c258bf016f 100644 (file)
@@ -3759,9 +3759,11 @@ ARDOUR_UI::start_duplicate_routes ()
                duplicate_routes_dialog = new DuplicateRouteDialog;
        }
 
-       if (duplicate_routes_dialog->restart ()) {
-               duplicate_routes_dialog->present ();
+       if (duplicate_routes_dialog->restart (_session)) {
+               return;
        }
+
+       duplicate_routes_dialog->present ();
 }
 
 void
index 6db5b158a145b77a8d7ca9afe5f416e2f36358ca..d9bbc5ccaaa885b820b269ccff2f8c2afc2decd7 100644 (file)
@@ -56,8 +56,14 @@ DuplicateRouteDialog::DuplicateRouteDialog ()
 }
 
 int
-DuplicateRouteDialog::restart ()
+DuplicateRouteDialog::restart (Session* s)
 {
+       if (!s) {
+               return -1;
+       }
+
+       set_session (s);
+
        TrackSelection& tracks  (PublicEditor::instance().get_selection().tracks);
        uint32_t ntracks = 0;
        uint32_t nbusses = 0;
@@ -91,9 +97,11 @@ DuplicateRouteDialog::restart ()
           which is what we really want to happen here.
        */
 
-       if (ntracks == 0) {
+       if (playlist_button_box.get_parent()) {
                get_vbox()->remove (playlist_button_box);
-       } else {
+       }
+
+       if (ntracks > 0) {
                get_vbox()->pack_end (playlist_button_box, false, false);
        }
 
index 54fa1e2e65986f9ac955ee56538ea4c8fe620a2f..531ce9ce94e2942a01c7c14f7bf2095daacbc9de 100644 (file)
 
 #include "ardour_dialog.h"
 
+namespace ARDOUR {
+class Session;
+}
+
 class Editor;
 
 class DuplicateRouteDialog : public ArdourDialog
@@ -37,7 +41,7 @@ class DuplicateRouteDialog : public ArdourDialog
   public:
        DuplicateRouteDialog ();
 
-       int restart ();
+       int restart (ARDOUR::Session*);
 
   private:
        Gtk::Entry name_template_entry;