]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocWidget.cpp
Amend f441590c
[lyx.git] / src / frontends / qt4 / TocWidget.cpp
index 345b40ea21759a1ec20f42336a43b86fcd8b1b18..bb15f31e2b71bf9ca7dca027c130aa4267856c0f 100644 (file)
@@ -52,11 +52,11 @@ TocWidget::TocWidget(GuiView & gui_view, QWidget * parent)
 {
        setupUi(this);
 
-       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")));
+       moveOutTB->setIcon(QIcon(getPixmap("images/", "outline-out", "svgz,png")));
+       moveInTB->setIcon(QIcon(getPixmap("images/", "outline-in", "svgz,png")));
+       moveUpTB->setIcon(QIcon(getPixmap("images/", "outline-up", "svgz,png")));
+       moveDownTB->setIcon(QIcon(getPixmap("images/", "outline-down", "svgz,png")));
+       updateTB->setIcon(QIcon(getPixmap("images/", "reload", "svgz,png")));
 
        // avoid flickering
        tocTV->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
@@ -119,16 +119,12 @@ Inset * TocWidget::itemInset() const
 
        else if (current_type_ == "branch"
                         || current_type_ == "index"
-                        || current_type_ == "change")
+                        || current_type_ == "change"
+                        || current_type_ == "table" 
+                    || current_type_ == "listing"
+                    || current_type_ == "figure")
                inset = &dit.inset();
 
-       else if (current_type_ == "table" 
-                    || current_type_ == "listing"
-                    || current_type_ == "figure") {
-               DocIterator tmp_dit(dit);
-               tmp_dit.pop_back();
-               inset = &tmp_dit.inset();
-       }
        return inset;
 }
 
@@ -152,14 +148,15 @@ bool TocWidget::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_OUTLINE_IN:
        case LFUN_OUTLINE_OUT:
        case LFUN_SECTION_SELECT:
-               status.setEnabled(true);
+               status.setEnabled(item.dit() != 0);
                return true;
 
-       case LFUN_LABEL_COPY_AS_REF: {
+       case LFUN_LABEL_COPY_AS_REFERENCE: {
                // For labels in math, we need to supply the label as a string
-               FuncRequest label_copy(LFUN_LABEL_COPY_AS_REF, item.asString());
+               FuncRequest label_copy(LFUN_LABEL_COPY_AS_REFERENCE, item.str());
                if (inset)
                        return inset->getStatus(cur, label_copy, status);
+               break;
        }
 
        default:
@@ -187,19 +184,26 @@ void TocWidget::doDispatch(Cursor & cur, FuncRequest const & cmd)
        {
        case LFUN_CHANGE_ACCEPT:
        case LFUN_CHANGE_REJECT:
+               dispatch(item.action());
+               cur.dispatch(tmpcmd);
+               break;
+
        case LFUN_SECTION_SELECT:
                dispatch(item.action());
                cur.dispatch(tmpcmd);
+               // necessary to get the selection drawn.
+               cur.buffer()->changed(true);
+               gui_view_.setFocus();
                break;
 
-       case LFUN_LABEL_COPY_AS_REF: {
+       case LFUN_LABEL_COPY_AS_REFERENCE: {
                // For labels in math, we need to supply the label as a string
-               FuncRequest label_copy(LFUN_LABEL_COPY_AS_REF, item.asString());
+               FuncRequest label_copy(LFUN_LABEL_COPY_AS_REFERENCE, item.str());
                if (inset)
                        inset->dispatch(cur, label_copy);
                break;
        }
-       
+
        case LFUN_OUTLINE_UP:
        case LFUN_OUTLINE_DOWN:
        case LFUN_OUTLINE_IN:
@@ -262,6 +266,7 @@ void TocWidget::on_persistentCB_stateChanged(int state)
 }
 
 
+#if 0
 /* FIXME (Ugras 17/11/06):
 I have implemented a indexDepth function to get the model indices. In my
 opinion, somebody should derive a new qvariant class for tocModelItem
@@ -274,7 +279,7 @@ static int indexDepth(QModelIndex const & index, int depth = -1)
        return index.parent() == QModelIndex()
                ? depth : indexDepth(index.parent(), depth);
 }
-
+#endif
 
 void TocWidget::on_depthSL_valueChanged(int depth)
 {
@@ -291,27 +296,10 @@ 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();
-       QModelIndexList indices = tocTV->model()->match(
-               tocTV->model()->index(0, 0),
-               Qt::DisplayRole, "*", -1,
-               Qt::MatchFlags(Qt::MatchWildcard|Qt::MatchRecursive));
-
-       int size = indices.size();
-       for (int i = 0; i < size; i++) {
-               QModelIndex index = indices[i];
-               tocTV->setExpanded(index, indexDepth(index) < depth_);
-       }
-#endif
 }