diff --git a/sources/ElementsCollection/elementscollectionwidget.cpp b/sources/ElementsCollection/elementscollectionwidget.cpp
index 198e6ddb1..222425243 100644
--- a/sources/ElementsCollection/elementscollectionwidget.cpp
+++ b/sources/ElementsCollection/elementscollectionwidget.cpp
@@ -1103,7 +1103,32 @@ void ElementsCollectionWidget::search()
return;
}
- showFlatResults(rankedSearch(text, m_showed_index));
+ QSettings settings;
+ if (settings.value(QStringLiteral("elementscollection/search-flat-list"),
+ true).toBool())
+ {
+ showFlatResults(rankedSearch(text, m_showed_index));
+ return;
+ }
+
+ //Tree search: hide what does not match, expand what does.
+ clearFlatResults();
+ hideCollection(true);
+ const QStringList text_list = text.split("+", Qt::SkipEmptyParts);
+ QModelIndexList match_index;
+ for (const QString &txt : text_list) {
+ match_index << m_model->match(m_showed_index.isValid()
+ ? m_model->index(0,0,m_showed_index)
+ : m_model->index(0,0),
+ Qt::UserRole+1,
+ QVariant(txt),
+ -1,
+ Qt::MatchContains
+ | Qt::MatchRecursive);
+ }
+
+ for (const QModelIndex &index : std::as_const(match_index))
+ showAndExpandItem(index);
}
/**
diff --git a/sources/ui/configpage/generalconfigurationpage.cpp b/sources/ui/configpage/generalconfigurationpage.cpp
index 41fa915bd..517548ad3 100644
--- a/sources/ui/configpage/generalconfigurationpage.cpp
+++ b/sources/ui/configpage/generalconfigurationpage.cpp
@@ -70,6 +70,7 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) :
//Stored as "inserts" but presented as "edits", so the default (insert)
//is the unchecked state -- a preference reads better as an opt-out.
ui->m_collection_dblclick_edits->setChecked(!settings.value("elementscollection/double-click-inserts", true).toBool());
+ ui->m_collection_search_flat_cb->setChecked(settings.value("elementscollection/search-flat-list", true).toBool());
ui->m_context_toolbar_cb->setChecked(settings.value("diagrameditor/context_toolbar", true).toBool());
ui->m_mouse_gestures_cb->setChecked(settings.value("diagrameditor/mouse_gestures", true).toBool());
ui->DiagramEditor_xGrid_sb->setValue(settings.value("diagrameditor/Xgrid", 10).toInt());
@@ -302,6 +303,7 @@ void GeneralConfigurationPage::applyConf()
settings.setValue("diagrameditor/grid_display_startup", ui->grid_startup_cb->isChecked());
settings.setValue("diagrameditor/guides_display_startup", ui->guides_startup_cb->isChecked());
settings.setValue("elementscollection/double-click-inserts", !ui->m_collection_dblclick_edits->isChecked());
+ settings.setValue("elementscollection/search-flat-list", ui->m_collection_search_flat_cb->isChecked());
settings.setValue("diagrameditor/context_toolbar", ui->m_context_toolbar_cb->isChecked());
settings.setValue("diagrameditor/mouse_gestures", ui->m_mouse_gestures_cb->isChecked());
//Grid step and key navigation
diff --git a/sources/ui/configpage/generalconfigurationpage.ui b/sources/ui/configpage/generalconfigurationpage.ui
index cfd57dd5c..027b73704 100644
--- a/sources/ui/configpage/generalconfigurationpage.ui
+++ b/sources/ui/configpage/generalconfigurationpage.ui
@@ -94,6 +94,16 @@
+ -
+
+
+ Coché : une seule liste, la meilleure correspondance en premier. Décoché : l'arborescence de la collection, filtrée sur la recherche.
+
+
+ Afficher les résultats de recherche sous forme de liste triée
+
+
+
-