]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocWidget.cpp
Fix bug http://www.lyx.org/trac/ticket/5812
[lyx.git] / src / frontends / qt4 / TocWidget.cpp
index 5c4e7d419d6824822ce4c98cd2dfab0990cf68e7..d9de4b6273f6a7950c96f3281198ad97a459ce57 100644 (file)
@@ -13,6 +13,7 @@
 
 #include "TocWidget.h"
 
+#include "GuiApplication.h"
 #include "GuiView.h"
 #include "qt_helpers.h"
 #include "TocModel.h"
@@ -39,11 +40,11 @@ TocWidget::TocWidget(GuiView & gui_view, QWidget * parent)
 {
        setupUi(this);
 
-       moveOutTB->setIcon(QIcon(":/images/promote.png"));
-       moveInTB->setIcon(QIcon(":/images/demote.png"));
-       moveUpTB->setIcon(QIcon(":/images/up.png"));
-       moveDownTB->setIcon(QIcon(":/images/down.png"));
-       updateTB->setIcon(QIcon(":/images/reload.png"));
+       moveOutTB->setIcon(QIcon(getPixmap("images/", "promote", "png")));
+       moveInTB->setIcon(QIcon(getPixmap("images/", "demote", "png")));
+       moveUpTB->setIcon(QIcon(getPixmap("images/", "up", "png")));
+       moveDownTB->setIcon(QIcon(getPixmap("images/", "down", "png")));
+       updateTB->setIcon(QIcon(getPixmap("images/", "reload", "png")));
 
        // avoid flickering
        tocTV->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
@@ -65,6 +66,8 @@ TocWidget::TocWidget(GuiView & gui_view, QWidget * parent)
        // Make sure the buttons are disabled when first shown without a loaded
        // Buffer.
        enableControls(false);
+
+       init(QString());
 }
 
 
@@ -140,6 +143,13 @@ void TocWidget::setTreeDepth(int depth)
        if (!tocTV->model())
                return;
 
+#if QT_VERSION >= 0x040300
+       // this should be faster than our own code below
+       if (depth == 0)
+               tocTV->collapseAll();
+       else
+               tocTV->expandToDepth(depth - 1);
+#else
        // expanding and then collapsing is probably better,
        // but my qt 4.1.2 doesn't have expandAll()..
        //tocTV->expandAll();
@@ -153,6 +163,7 @@ void TocWidget::setTreeDepth(int depth)
                QModelIndex index = indices[i];
                tocTV->setExpanded(index, indexDepth(index) < depth_);
        }
+#endif
 }
 
 
@@ -225,7 +236,6 @@ static bool canOutline(QString const & type)
 void TocWidget::enableControls(bool enable)
 {
        updateTB->setEnabled(enable);
-       sortCB->setEnabled(enable);
 
        if (!canOutline(current_type_))
                enable = false;
@@ -234,7 +244,6 @@ void TocWidget::enableControls(bool enable)
        moveDownTB->setEnabled(enable);
        moveInTB->setEnabled(enable);
        moveOutTB->setEnabled(enable);
-       persistentCB->setEnabled(enable);
        if (!enable) {
                depthSL->setMaximum(0);
                depthSL->setValue(0);
@@ -266,11 +275,12 @@ void TocWidget::updateView()
        tocTV->setEnabled(false);
        tocTV->setUpdatesEnabled(false);
 
-       QAbstractItemModel * toc_model = gui_view_.tocModels().model(current_type_);    
+       QAbstractItemModel * toc_model = gui_view_.tocModels().model(current_type_);
        if (tocTV->model() != toc_model) {
                tocTV->setModel(toc_model);
                tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
-               if (persistent_) setTreeDepth(depth_);
+               if (persistent_)
+                       setTreeDepth(depth_);
        }
 
        sortCB->blockSignals(true);
@@ -285,7 +295,8 @@ void TocWidget::updateView()
 
        depthSL->setMaximum(gui_view_.tocModels().depth(current_type_));
        depthSL->setValue(depth_);
-       if (!persistent_) setTreeDepth(depth_);
+       if (!persistent_)
+               setTreeDepth(depth_);
        if (canNavigate(current_type_))
                select(gui_view_.tocModels().currentIndex(current_type_));
        tocTV->setEnabled(true);
@@ -323,6 +334,8 @@ void TocWidget::init(QString const & str)
        if (new_index == -1) {
                current_type_ = "tableofcontents";
                new_index = typeCO->findData(current_type_);
+       } else {
+               current_type_ = typeCO->itemData(new_index).toString();
        }
 
        typeCO->blockSignals(true);
@@ -333,4 +346,4 @@ void TocWidget::init(QString const & str)
 } // namespace frontend
 } // namespace lyx
 
-#include "TocWidget_moc.cpp"
+#include "moc_TocWidget.cpp"