diff view/PaneStack.cpp @ 500:666cdcae5f0d

* Make it possible to switch panes by clicking on the current-pane indicator area at left (#1935591)
author Chris Cannam
date Tue, 24 Feb 2009 12:02:19 +0000
parents 5e6991aefdc5
children e4e0ae491a48
line wrap: on
line diff
--- a/view/PaneStack.cpp	Mon Feb 23 22:28:24 2009 +0000
+++ b/view/PaneStack.cpp	Tue Feb 24 12:02:19 2009 +0000
@@ -18,6 +18,7 @@
 #include "Pane.h"
 #include "widgets/PropertyStack.h"
 #include "widgets/IconLoader.h"
+#include "widgets/ClickableLabel.h"
 #include "layer/Layer.h"
 #include "ViewManager.h"
 
@@ -67,23 +68,15 @@
     layout->setMargin(0);
     layout->setSpacing(2);
 
-
-//    QHBoxLayout *layout = new QHBoxLayout;
-
-//    QVBoxLayout *vlayout = new QVBoxLayout;
-//    layout->addLayout(vlayout);
-//    layout->setStretchFactor(vlayout, 0);
-
     QPushButton *xButton = new QPushButton(frame);
     xButton->setIcon(IconLoader().load("cross"));
     xButton->setFixedSize(QSize(16, 16));
     xButton->setFlat(true);
     layout->addWidget(xButton, 0, 0);
-//    vlayout->setStretchFactor(xButton, 0);
     connect(xButton, SIGNAL(clicked()), this, SLOT(paneDeleteButtonClicked()));
 
-    QLabel *currentIndicator = new QLabel(frame);
-//    currentIndicator->setFixedWidth(QPainter(this).fontMetrics().width("x"));
+    ClickableLabel *currentIndicator = new ClickableLabel(frame);
+    connect(currentIndicator, SIGNAL(clicked()), this, SLOT(indicatorClicked()));
     layout->addWidget(currentIndicator, 1, 0);
     layout->setRowStretch(1, 20);
     currentIndicator->setMinimumWidth(8);
@@ -541,6 +534,19 @@
 }
 
 void
+PaneStack::indicatorClicked()
+{
+    QObject *s = sender();
+
+    for (size_t i = 0; i < m_panes.size(); ++i) {
+	if (m_panes[i].currentIndicator == s) {
+            setCurrentPane(m_panes[i].pane);
+            return;
+        }
+    }
+}
+
+void
 PaneStack::sizePanesEqually()
 {
     QList<int> sizes = m_splitter->sizes();