diff --git a/gui/librarypage.cpp b/gui/librarypage.cpp index 4833471f1..ddfeb0961 100644 --- a/gui/librarypage.cpp +++ b/gui/librarypage.cpp @@ -113,6 +113,7 @@ LibraryPage::LibraryPage(QWidget *p) #endif #endif // TAGLIB_FOUND connect(view, SIGNAL(updateToPlayQueue(QModelIndex,bool)), this, SLOT(updateToPlayQueue(QModelIndex,bool))); + view->setOpenAfterSearch(SqlLibraryModel::T_Album!=MpdLibraryModel::self()->topLevel()); } LibraryPage::~LibraryPage() @@ -301,6 +302,7 @@ void LibraryPage::groupByChanged() break; } } + view->setOpenAfterSearch(SqlLibraryModel::T_Album!=MpdLibraryModel::self()->topLevel()); } void LibraryPage::libraryAlbumSortChanged() diff --git a/online/onlinedbwidget.cpp b/online/onlinedbwidget.cpp index 6b26872ab..0a3c624ca 100644 --- a/online/onlinedbwidget.cpp +++ b/online/onlinedbwidget.cpp @@ -55,6 +55,7 @@ OnlineDbWidget::OnlineDbWidget(OnlineDbService *s, QWidget *p) init(ReplacePlayQueue|AddToPlayQueue|Refresh, QList() << menu); connect(view, SIGNAL(headerClicked(int)), SLOT(headerClicked(int))); connect(view, SIGNAL(updateToPlayQueue(QModelIndex,bool)), this, SLOT(updateToPlayQueue(QModelIndex,bool))); + view->setOpenAfterSearch(SqlLibraryModel::T_Album!=srv->topLevel()); } OnlineDbWidget::~OnlineDbWidget() @@ -72,6 +73,7 @@ void OnlineDbWidget::groupByChanged() } int mode=act->property(constValProp).toInt(); srv->setTopLevel((SqlLibraryModel::Type)mode); + view->setOpenAfterSearch(SqlLibraryModel::T_Album!=srv->topLevel()); } QStringList OnlineDbWidget::selectedFiles(bool allowPlaylists) const diff --git a/widgets/itemview.cpp b/widgets/itemview.cpp index 0530d4b61..d3adf325f 100644 --- a/widgets/itemview.cpp +++ b/widgets/itemview.cpp @@ -593,6 +593,7 @@ ItemView::ItemView(QWidget *p) , msgOverlay(0) , performedSearch(false) , searchResetLevel(0) + , openFirstLevelAfterSearch(false) { setupUi(this); if (!backAction) { @@ -1401,6 +1402,10 @@ void ItemView::modelReset() { if (Mode_List==mode || Mode_IconTop==mode) { goToTop(); + } else if (usingTreeView() && !searchText().isEmpty()) { + for (int r=0; rrowCount(); ++r) { + treeView->expand(itemModel->index(r, 0, QModelIndex())); + } } } diff --git a/widgets/itemview.h b/widgets/itemview.h index 133298bb4..af3322462 100644 --- a/widgets/itemview.h +++ b/widgets/itemview.h @@ -145,6 +145,7 @@ public: void setSearchResetLevel(int l) { searchResetLevel=l; } void showEvent(QShowEvent *ev); void goToTop(); + void setOpenAfterSearch(bool o) { openFirstLevelAfterSearch=o; } private: void setLevel(int level, bool haveChildren=true); @@ -207,6 +208,7 @@ private: QIcon bgndIcon; bool performedSearch; int searchResetLevel; + bool openFirstLevelAfterSearch; }; #endif