fixed hiding of top level items when searching

This commit is contained in:
csoler 2018-01-24 21:26:35 +01:00
parent f139685438
commit 1fbd9d1625

View File

@ -1236,9 +1236,7 @@ void SharedFilesDialog::filterRegExpChanged()
if(text.length() > 0 && text.length() < 3) if(text.length() > 0 && text.length() < 3)
{ {
std::cout << "setting palette 1" << std::endl ;
valid = false; valid = false;
//color = QApplication::palette().color(QPalette::Disabled, QPalette::Base);
ui.filterStartButton->setEnabled(false) ; ui.filterStartButton->setEnabled(false) ;
ui.filterPatternFrame->setToolTip(tr("Search string should be at least 3 characters long.")) ; ui.filterPatternFrame->setToolTip(tr("Search string should be at least 3 characters long.")) ;
@ -1314,14 +1312,14 @@ void SharedFilesDialog::startFilter()
static void recursMakeAllVisible(QTreeView *tree,const QModelIndex& indx) static void recursMakeAllVisible(QTreeView *tree,const QModelIndex& indx)
{ {
tree->setRowHidden(indx.row(), indx.parent(), false) ;
int rowCount = tree->model()->rowCount(indx); int rowCount = tree->model()->rowCount(indx);
for (int row = 0; row < rowCount; ++row) for (int row = 0; row < rowCount; ++row)
{ {
QModelIndex child_index = indx.child(row,0); QModelIndex child_index = indx.child(row,0);
tree->setRowHidden(child_index.row(), indx, false) ;
recursMakeAllVisible(tree,child_index); recursMakeAllVisible(tree,child_index);
} }
#ifdef EXPAND_WHILE_SEARCHING #ifdef EXPAND_WHILE_SEARCHING
@ -1349,6 +1347,8 @@ static void recursMakeVisible(QTreeView *tree,const QSortFilterProxyModel *proxy
tree->setExpanded(indx,true) ; tree->setExpanded(indx,true) ;
#endif #endif
bool found = false ;
for (int row = 0; row < rowCount; ++row) for (int row = 0; row < rowCount; ++row)
{ {
QModelIndex child_index = indx.child(row,0); QModelIndex child_index = indx.child(row,0);
@ -1359,6 +1359,7 @@ static void recursMakeVisible(QTreeView *tree,const QSortFilterProxyModel *proxy
for(uint32_t i=0;i<depth+1;++i) std::cerr << " " ; std::cerr << "object " << proxyModel->mapToSource(child_index).internalPointer() << " visible" << std::endl; for(uint32_t i=0;i<depth+1;++i) std::cerr << " " ; std::cerr << "object " << proxyModel->mapToSource(child_index).internalPointer() << " visible" << std::endl;
#endif #endif
recursMakeVisible(tree,proxyModel,child_index,depth+1,pointers) ; recursMakeVisible(tree,proxyModel,child_index,depth+1,pointers) ;
found = true ;
} }
else else
{ {
@ -1372,6 +1373,9 @@ static void recursMakeVisible(QTreeView *tree,const QSortFilterProxyModel *proxy
#endif #endif
} }
} }
if(!found && depth == 0)
tree->setRowHidden(indx.row(), indx.parent(), true) ;
} }
void SharedFilesDialog::FilterItems() void SharedFilesDialog::FilterItems()
@ -1421,7 +1425,9 @@ void SharedFilesDialog::FilterItems()
else else
rsFiles->SearchKeywords(keywords,result_list, flags) ; rsFiles->SearchKeywords(keywords,result_list, flags) ;
#ifdef DEBUG_SHARED_FILES_DIALOG
std::cerr << "Found " << result_list.size() << " results" << std::endl; std::cerr << "Found " << result_list.size() << " results" << std::endl;
#endif
if(result_list.size() > MAX_SEARCH_RESULTS) if(result_list.size() > MAX_SEARCH_RESULTS)
return ; return ;