]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocWidget.cpp
Fix the warning message "TocModel.cpp: type not found" when (re-)loading a file.
[lyx.git] / src / frontends / qt4 / TocWidget.cpp
index 6ea1bb93118548da6d7a0c59fca3c7d5dc06f19d..be4c9c7696adc5cda0af02bb524bb7c660bdfc9b 100644 (file)
@@ -68,6 +68,7 @@ TocWidget::TocWidget(GuiView & gui_view, QWidget * parent)
 
        // Only one item selected at a time.
        tocTV->setSelectionMode(QAbstractItemView::SingleSelection);
+       setFocusProxy(tocTV);
 
        // The toc types combo won't change its model.
        typeCO->setModel(gui_view_.tocModels().nameModel());
@@ -139,7 +140,7 @@ bool TocWidget::getStatus(Cursor & cur, FuncRequest const & cmd,
        TocItem const & item =
                gui_view_.tocModels().currentItem(current_type_, index);
 
-       switch (cmd.action)
+       switch (cmd.action())
        {
        case LFUN_CHANGE_ACCEPT:
        case LFUN_CHANGE_REJECT:
@@ -179,7 +180,7 @@ void TocWidget::doDispatch(Cursor & cur, FuncRequest const & cmd)
        // Start an undo group.
        cur.beginUndoGroup();
 
-       switch (cmd.action)
+       switch (cmd.action())
        {
        case LFUN_CHANGE_ACCEPT:
        case LFUN_CHANGE_REJECT:
@@ -200,7 +201,7 @@ void TocWidget::doDispatch(Cursor & cur, FuncRequest const & cmd)
        case LFUN_OUTLINE_DOWN:
        case LFUN_OUTLINE_IN:
        case LFUN_OUTLINE_OUT:
-               outline(cmd.action);
+               outline(cmd.action());
                break;
 
        default:
@@ -313,13 +314,10 @@ void TocWidget::setTreeDepth(int depth)
 
 void TocWidget::on_typeCO_currentIndexChanged(int index)
 {
+       if (index == -1)
+               return;
        current_type_ = typeCO->itemData(index).toString();
        updateView();
-       // In Qt 4.6.x, we can end up here programmatically, when the
-       // model is rebuilt. But the Buffer may not be ready for us to
-       // reset focus, start the cursor, etc. So we check to see if the
-       // combo box has focus. It will, if the user has changed the 
-       // value.
        if (typeCO->hasFocus())
                gui_view_.setFocus();
 }
@@ -392,25 +390,21 @@ void TocWidget::enableControls(bool enable)
 void TocWidget::updateView()
 {
        if (!gui_view_.documentBufferView()) {
-               enableControls(false);
-               typeCO->setEnabled(false);
                tocTV->setModel(0);
-               tocTV->setEnabled(false);
                depthSL->setMaximum(0);
                depthSL->setValue(0);
-               persistentCB->setEnabled(false);
-               sortCB->setEnabled(false);
-               depthSL->setEnabled(false);
+               setEnabled(false);
                return;
        }
+       setEnabled(true);
        bool const is_sortable = isSortable();
        sortCB->setEnabled(is_sortable);
-       depthSL->setEnabled(true);
-       typeCO->setEnabled(true);
+       bool focus_ = tocTV->hasFocus();
        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);
@@ -441,6 +435,8 @@ void TocWidget::updateView()
        filterContents();
        tocTV->setEnabled(true);
        tocTV->setUpdatesEnabled(true);
+       if (focus_)
+               tocTV->setFocus();
 }
 
 
@@ -459,7 +455,7 @@ void TocWidget::filterContents()
                QModelIndex index = indices[i];
                bool const matches =
                        index.data().toString().contains(
-                               filterLE->text(), Qt::CaseSensitive);
+                               filterLE->text(), Qt::CaseInsensitive);
                tocTV->setRowHidden(index.row(), index.parent(), !matches);
        }
        // recursively unhide parents of unhidden children