]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/PanelStack.cpp
Complete the removal of the embedding stuff. Maybe. It's hard to be sure we got every...
[lyx.git] / src / frontends / qt4 / PanelStack.cpp
index 08a24e7585b8a41acdb4f37413248b3dc4fd1af9..b4e24554d59361e55144f815041c0ac9c6f7a428 100644 (file)
@@ -22,7 +22,7 @@
 #include <QHBoxLayout>
 #include <QHeaderView>
 
-#include <boost/assert.hpp>
+#include "support/assert.h"
 
 #include <iostream>
 
@@ -48,6 +48,8 @@ PanelStack::PanelStack(QWidget * parent)
 
        connect(list_, SIGNAL(currentItemChanged (QTreeWidgetItem*, QTreeWidgetItem*)),
                this, SLOT(switchPanel(QTreeWidgetItem *, QTreeWidgetItem*)));
+       connect(list_, SIGNAL(itemClicked (QTreeWidgetItem*, int)),
+               this, SLOT(itemSelected(QTreeWidgetItem *, int)));
 
        QHBoxLayout * layout = new QHBoxLayout(this);
        layout->addWidget(list_, 0);
@@ -102,7 +104,7 @@ void PanelStack::addPanel(QWidget * panel, QString const & name, QString const &
 void PanelStack::setCurrentPanel(QString const & name)
 {
        QTreeWidgetItem * item = panel_map_.value(name, 0);
-       BOOST_ASSERT(item);
+       LASSERT(item, /**/);
 
        // force on first set
        if (list_->currentItem() == item)
@@ -113,19 +115,28 @@ void PanelStack::setCurrentPanel(QString const & name)
 
 
 void PanelStack::switchPanel(QTreeWidgetItem * item,
-                            QTreeWidgetItem * /*previous*/)
+                            QTreeWidgetItem * previous)
 {
        // if we have a category, expand the tree and go to the
        // first item
        if (item->childCount() > 0) {
                item->setExpanded(true);
-               list_->setCurrentItem(item->child(0));
+               if (previous != item->child(0))
+                       list_->setCurrentItem(item->child(0));
        }
        if (QWidget * w = widget_map_.value(item, 0))
                stack_->setCurrentWidget(w);
 }
 
 
+void PanelStack::itemSelected(QTreeWidgetItem * item, int)
+{
+       // de-select the category if a child is selected
+       if (item->childCount() > 0 && item->child(0)->isSelected())
+               item->setSelected(false);
+}
+
+
 QSize PanelStack::sizeHint() const
 {
        return QSize(list_->width() + stack_->width(),