diff widgets/PropertyStack.cpp @ 723:d1c0abfb11be tonioni

Fix bug in choosing which layer to bring to the front when asked programmatically
author Chris Cannam
date Tue, 04 Feb 2014 14:35:59 +0000
parents 4806715f7a19
children 596414d20ef0
line wrap: on
line diff
--- a/widgets/PropertyStack.cpp	Tue Feb 04 13:54:42 2014 +0000
+++ b/widgets/PropertyStack.cpp	Tue Feb 04 14:35:59 2014 +0000
@@ -153,9 +153,19 @@
 int
 PropertyStack::getContainerIndex(PropertyContainer *pc) const
 {
-    for (size_t i = 0; i < m_client->getPropertyContainerCount(); ++i) {
-	PropertyContainer *container = m_client->getPropertyContainer(i);
-	if (pc == container) return i;
+    // This is used to obtain an index to be passed to setCurrentIndex
+    // -- which is the index of the property container's box in our
+    // stack of boxes. That is not the same thing as the index of the
+    // container (i.e. the layer) in the view: the view reorders its
+    // containers whenever one is raised to the top, while our boxes
+    // remain in the same order. So we must find this container in the
+    // box list, not in the view.
+
+    for (size_t i = 0; i < m_boxes.size(); ++i) {
+	PropertyContainer *container = m_boxes[i]->getContainer();
+	if (pc == container) {
+            return i;
+        }
     }
 
     return false;