diff view/PaneStack.cpp @ 1444:8e6a24110996 single-point

Avoid showing final (useless) alignment view
author Chris Cannam <cannam@all-day-breakfast.com>
date Thu, 25 Apr 2019 17:07:04 +0100
parents c8a6fd3f9dff
children 1ed6d666ec9e
line wrap: on
line diff
--- a/view/PaneStack.cpp	Wed Apr 24 15:42:35 2019 +0100
+++ b/view/PaneStack.cpp	Thu Apr 25 17:07:04 2019 +0100
@@ -73,8 +73,9 @@
 PaneStack::setShowAlignmentViews(bool show)
 {
     m_showAlignmentViews = show;
-    foreach (const PaneRec &r, m_panes) {
-        r.alignmentView->setVisible(m_showAlignmentViews);
+    for (int i = 0; in_range_for(m_panes, i); ++i) {
+        m_panes[i].alignmentView->setVisible(m_showAlignmentViews &&
+                                             in_range_for(m_panes, i+1));
     }
 }
 
@@ -125,8 +126,8 @@
 
     AlignmentView *av = new AlignmentView(frame);
     av->setFixedHeight(40);//!!!
-    av->setVisible(m_showAlignmentViews);
     av->setViewManager(m_viewManager);
+    av->setVisible(false); // for now
     layout->addWidget(av, 2, 1);
 
     QWidget *properties = nullptr;
@@ -197,8 +198,10 @@
         m_panes[i].alignmentView->setViewAbove(m_panes[i].pane);
         if (i + 1 < (int)m_panes.size()) {
             m_panes[i].alignmentView->setViewBelow(m_panes[i+1].pane);
+            m_panes[i].alignmentView->setVisible(true);
         } else {
             m_panes[i].alignmentView->setViewBelow(nullptr);
+            m_panes[i].alignmentView->setVisible(false);
         }
     }
 }
@@ -406,13 +409,12 @@
             showOrHidePaneAccessories();
             emit paneHidden(pane);
             emit paneHidden();
+            relinkAlignmentViews();
             return;
         }
         ++i;
     }
 
-    relinkAlignmentViews();
-
     SVCERR << "WARNING: PaneStack::hidePane(" << pane << "): Pane not found in visible panes" << endl;
 }
 
@@ -431,14 +433,13 @@
             //!!! update current pane
 
             showOrHidePaneAccessories();
+            relinkAlignmentViews();
 
             return;
         }
         ++i;
     }
 
-    relinkAlignmentViews();
-
     SVCERR << "WARNING: PaneStack::showPane(" << pane << "): Pane not found in hidden panes" << endl;
 }