do a better job of erasing the browser sidebars
[mussa.git] / qui / seqbrowser / SequenceBrowserWidget.cpp
index ef3db3309334530d1b1b43e9e60238c58f7f46bd..615291347b8872942b47455ffde77d76476859c5 100644 (file)
@@ -37,6 +37,16 @@ void SequenceBrowserWidget::clear()
 {
   converted_sequences.clear();
   scrollable_browser.browser().clear();
+
+  SequenceBrowserSidebar::collection left = left_sidebar.descriptions;
+  SequenceBrowserSidebar::collection right = right_sidebar.descriptions;
+  for(size_t i = 0; i != left_sidebar.size(); ++i)
+  {
+    disconnect(left[i], SIGNAL(nameChanged(const QString &)),
+               right[i], SLOT(setName(const QString &)));
+    disconnect(right[i], SIGNAL(nameChanged(const QString &)),
+               left[i], SLOT(setName(const QString &)));
+  }
   left_sidebar.clear();
   right_sidebar.clear();
 }
@@ -82,8 +92,8 @@ void SequenceBrowserWidget::setSequences(
   right_sidebar.setSequences(converted_sequences);
 
   // connect the text change signals to each other
-  vector<SequenceDescription *> left = left_sidebar.descriptions;
-  vector<SequenceDescription *> right = right_sidebar.descriptions;
+  SequenceBrowserSidebar::collection left = left_sidebar.descriptions;
+  SequenceBrowserSidebar::collection right = right_sidebar.descriptions;
   for(size_t i = 0; i != sequences.size() and i != right.size(); ++i)
   {
     connect(left[i], SIGNAL(nameChanged(const QString &)),
@@ -155,8 +165,8 @@ void SequenceBrowserWidget::updatePosition()
 {
   const SequenceBrowser& browser = scrollable_browser.browser();
   const vector<boost::shared_ptr<GlSequence> > &sequences = browser.sequences();
-  vector<SequenceDescription *> left = left_sidebar.descriptions;
-  vector<SequenceDescription *> right = right_sidebar.descriptions;
+  SequenceBrowserSidebar::collection left = left_sidebar.descriptions;
+  SequenceBrowserSidebar::collection right = right_sidebar.descriptions;
   for(size_t i = 0; i != sequences.size() and i != right.size(); ++i)
   {
     left[i]->setPosition(sequences[i]->leftbase(browser.viewportLeft()));