From 3c9248d28aab722dbed1a29d7df3eba7f1ec6c82 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Mon, 28 Sep 2015 10:00:32 +0200 Subject: [PATCH] Avanced search in "Any Clause" mode: directory filter would not filter but add an ORed clause! Fixes issue #269 --- src/qtgui/advsearch_w.cpp | 17 ++++++++++++++--- src/rcldb/searchdata.h | 4 ++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/qtgui/advsearch_w.cpp b/src/qtgui/advsearch_w.cpp index a3270c9a..0c4f9b0d 100644 --- a/src/qtgui/advsearch_w.cpp +++ b/src/qtgui/advsearch_w.cpp @@ -424,9 +424,20 @@ void AdvSearch::runSearch() if (!subtreeCMB->currentText().isEmpty()) { QString current = subtreeCMB->currentText(); - sdata->addClause(new Rcl::SearchDataClausePath( - (const char*)current.toLocal8Bit(), - direxclCB->isChecked())); + + Rcl::SearchDataClausePath *pathclause = + new Rcl::SearchDataClausePath((const char*)current.toLocal8Bit(), + direxclCB->isChecked()); + if (sdata->getTp() == SCLT_AND) { + sdata->addClause(pathclause); + } else { + STD_SHARED_PTR + nsdata(new SearchData(SCLT_AND, stemLang)); + nsdata->addClause(new Rcl::SearchDataClauseSub(sdata)); + nsdata->addClause(pathclause); + sdata = nsdata; + } + // Keep history clean and sorted. Maybe there would be a // simpler way to do this list entries; diff --git a/src/rcldb/searchdata.h b/src/rcldb/searchdata.h index a83399ec..26653aa1 100644 --- a/src/rcldb/searchdata.h +++ b/src/rcldb/searchdata.h @@ -150,6 +150,10 @@ public: m_tp = tp; } + SClType getTp() { + return m_tp; + } + void setMaxExpand(int max) { m_softmaxexpand = max;