diff src/Analyser.cpp @ 133:c3b53a10c920

Make sure flexinote layer is always the current one for editing
author Chris Cannam
date Thu, 09 Jan 2014 20:58:05 +0000
parents 2abff42be385
children a19c3d0aa4e7
line wrap: on
line diff
--- a/src/Analyser.cpp	Thu Jan 09 17:20:15 2014 +0000
+++ b/src/Analyser.cpp	Thu Jan 09 20:58:05 2014 +0000
@@ -35,6 +35,7 @@
 Analyser::Analyser() :
     m_document(0),
     m_fileModel(0),
+    m_paneStack(0),
     m_pane(0)
 {
     QSettings settings;
@@ -63,6 +64,7 @@
 {
     m_document = doc;
     m_fileModel = model;
+    m_paneStack = paneStack;
     m_pane = pane;
 
     QString base = "vamp:pyin:pyin:";
@@ -131,7 +133,6 @@
             qobject_cast<TimeValueLayer *>(m_layers[PitchTrack]);
         if (pitchLayer) {
             pitchLayer->setBaseColour(cdb->getColourIndex(tr("Black")));
-            paneStack->setCurrentLayer(m_pane, pitchLayer);
             PlayParameters *params = pitchLayer->getPlayParameters();
             if (params) params->setPlayPan(-1);
         }
@@ -140,7 +141,6 @@
             qobject_cast<FlexiNoteLayer *>(m_layers[Notes]);
         if (flexiNoteLayer) {
             flexiNoteLayer->setBaseColour(cdb->getColourIndex(tr("Bright Blue")));
-            paneStack->setCurrentLayer(m_pane, flexiNoteLayer);
             PlayParameters *params = flexiNoteLayer->getPlayParameters();
             if (params) params->setPlayPan(0);
         }
@@ -204,6 +204,11 @@
 {
     if (m_layers[c]) {
         m_layers[c]->setLayerDormant(m_pane, !v);
+
+        if (v && (c == Notes)) {
+            m_paneStack->setCurrentLayer(m_pane, m_layers[c]);
+        }
+
         m_pane->layerParametersChanged();
         saveState(c);
     }