]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocWidget.cpp
Use <cstdint> instead of <boost/cstdint.hpp>
[lyx.git] / src / frontends / qt4 / TocWidget.cpp
index c30d644fc00d96d1b4d8dd3fad392fb09464058e..dcd9c4d0e50420b61595f859bb3ec86773ff4640 100644 (file)
@@ -55,6 +55,13 @@ TocWidget::TocWidget(GuiView & gui_view, QWidget * parent)
        moveDownTB->setIcon(QIcon(getPixmap("images/", "outline-down", "svgz,png")));
        updateTB->setIcon(QIcon(getPixmap("images/", "reload", "svgz,png")));
 
+       QSize icon_size = gui_view.iconSize();
+       moveOutTB->setIconSize(icon_size);
+       moveInTB->setIconSize(icon_size);
+       moveUpTB->setIconSize(icon_size);
+       moveDownTB->setIconSize(icon_size);
+       updateTB->setIconSize(icon_size);
+
        // avoid flickering
        tocTV->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
 
@@ -149,7 +156,7 @@ bool TocWidget::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_OUTLINE_IN:
        case LFUN_OUTLINE_OUT:
        case LFUN_SECTION_SELECT:
-               status.setEnabled(item.dit() != 0);
+               status.setEnabled((bool)item.dit());
                return true;
 
        case LFUN_LABEL_COPY_AS_REFERENCE: {
@@ -171,6 +178,7 @@ bool TocWidget::getStatus(Cursor & cur, FuncRequest const & cmd,
 
 void TocWidget::doDispatch(Cursor & cur, FuncRequest const & cmd)
 {
+
        Inset * inset = itemInset();
        FuncRequest tmpcmd(cmd);
 
@@ -228,6 +236,7 @@ void TocWidget::on_tocTV_activated(QModelIndex const & index)
 
 void TocWidget::on_tocTV_pressed(QModelIndex const & index)
 {
+
        Qt::MouseButtons const button = QApplication::mouseButtons();
        if (button & Qt::LeftButton) {
                goTo(index);
@@ -242,7 +251,7 @@ void TocWidget::goTo(QModelIndex const & index)
        LYXERR(Debug::GUI, "goto " << index.row()
                << ", " << index.column());
 
-       gui_view_.tocModels().goTo(current_type_, index);
+       sendDispatch(gui_view_.tocModels().goTo(current_type_, index));
 }
 
 
@@ -307,6 +316,7 @@ void TocWidget::setTreeDepth(int depth)
 
 void TocWidget::on_typeCO_currentIndexChanged(int index)
 {
+
        if (index == -1)
                return;
        current_type_ = typeCO->itemData(index).toString();
@@ -321,14 +331,29 @@ void TocWidget::outline(FuncCode func_code)
        QModelIndexList const & list = tocTV->selectionModel()->selectedIndexes();
        if (list.isEmpty())
                return;
+
+       //if another window is active, this attempt will fail,
+       //but it will work at least for the second attempt
+       gui_view_.activateWindow(); 
+
        enableControls(false);
        goTo(list[0]);
-       dispatch(FuncRequest(func_code));
+       sendDispatch(FuncRequest(func_code));
        enableControls(true);
        gui_view_.setFocus();
 }
 
 
+void TocWidget::sendDispatch(FuncRequest fr)
+{
+
+       fr.setViewOrigin(&gui_view_);
+       DispatchResult dr=dispatch(fr);
+       if (dr.error())
+               gui_view_.message(dr.message());
+}
+
+
 void TocWidget::on_moveUpTB_clicked()
 {
        outline(LFUN_OUTLINE_UP);
@@ -443,15 +468,17 @@ void TocWidget::updateViewNow()
 void TocWidget::finishUpdateView()
 {
        // Profiling shows that this is the expensive stuff in the context of typing
-       // text and moving with arrows (still five times less than updateToolbars in
-       // my tests with a medium-sized document, however this grows linearly in the
-       // size of the document). For bigger operations, this is negligible, and
-       // outweighted by TocModels::reset() anyway.
+       // text and moving with arrows. For bigger operations, this is negligible,
+       // and outweighted by TocModels::reset() anyway.
        if (canNavigate()) {
                if (!persistent_)
                        setTreeDepth(depth_);
                persistentCB->setChecked(persistent_);
-               select(gui_view_.tocModels().currentIndex(current_type_));
+               // select the item at current cursor location
+               if (gui_view_.documentBufferView()) {
+                       DocIterator const & dit = gui_view_.documentBufferView()->cursor();
+                       select(gui_view_.tocModels().currentIndex(current_type_, dit));
+               }
        }
        filterContents();
 }