diff --git a/src/folder/foldertreewidget.cpp b/src/folder/foldertreewidget.cpp index ab2f219..f519d12 100644 --- a/src/folder/foldertreewidget.cpp +++ b/src/folder/foldertreewidget.cpp @@ -143,6 +143,7 @@ void FolderTreeWidget::focusTreeView() void FolderTreeWidget::slotFilterFixedString(const QString &text) { delete d->saver; + bool shouldExpandAll = false; if (d->oldFilterStr.isEmpty()) { // Save it. Akonadi::ETMViewStateSaver saver; @@ -160,11 +161,26 @@ void FolderTreeWidget::slotFilterFixedString(const QString &text) } d->saver->restoreExpanded(d->expandedItems); d->saver->restoreCurrentItem(currentIndex); + // this should help to keep the selected item put, but it does not + QModelIndex current = d->folderTreeView->currentIndex(); + d->folderTreeView->scrollTo(current); } else { - d->folderTreeView->expandAll(); + shouldExpandAll = true; } d->oldFilterStr = text; - d->entityOrderProxy->setFilterWildcard(text); + d->entityOrderProxy->setFilterWildcard(text.trimmed()); + if (shouldExpandAll) { + d->folderTreeView->expandAll(); + } + if (!text.isEmpty()) { + // qDebug() << text << "focus last folder"; + d->folderTreeView->slotFocusLastFolder(); + d->folderTreeView->slotFocusLastFolder(); //why do I need to do it twice? + d->folderTreeView->slotSelectFocusFolder(); + // anyways, I need to make it focus the last child of the first folder; + QModelIndex current = d->folderTreeView->currentIndex(); + d->folderTreeView->scrollTo(current); + } } void FolderTreeWidget::disableContextMenuAndExtraColumn() @@ -319,8 +335,15 @@ void FolderTreeWidget::applyFilter(const QString &filter) { d->label->setText(filter.isEmpty() ? i18n("You can start typing to filter the list of folders.") : i18n("Filter: (%1)", filter)); - d->entityOrderProxy->setFilterWildcard(filter); + d->entityOrderProxy->setFilterWildcard(filter.trimmed()); d->folderTreeView->expandAll(); + + // d->folderTreeView->slotFocusFirstFolder(); + // QModelIndex current = d->folderTreeView->currentIndex(); + // d->folderTreeView->setCurrentIndex(current); + // d->folderTreeView->scrollTo(current); + + // This is just to set focus! QAbstractItemModel *model = d->folderTreeView->model(); QModelIndex current = d->folderTreeView->currentIndex(); QModelIndex start = current.isValid() ? current : model->index(0, 0);