diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp --- a/src/search/dolphinsearchbox.cpp +++ b/src/search/dolphinsearchbox.cpp @@ -528,23 +528,50 @@ m_facetsWidget->resetOptions(); - setText(query.searchString()); - QStringList types = query.types(); if (!types.isEmpty()) { m_facetsWidget->setFacetType(types.first()); } + bool hasFileName = false; + QStringList searchTextItems; + const QStringList subTerms = query.searchString().split(' ', QString::SkipEmptyParts); foreach (const QString& subTerm, subTerms) { + QString value; if (subTerm.startsWith(QLatin1String("filename:"))) { - const QString value = subTerm.mid(9); - setText(value); + hasFileName = true; + value = subTerm.mid(9); } else if (m_facetsWidget->isRatingTerm(subTerm)) { m_facetsWidget->setRatingTerm(subTerm); + continue; + } else if (subTerm == QLatin1String("AND") && subTerm != subTerms.at(0) && subTerm != subTerms.back()) { + continue; + } else if (subTerm == QLatin1String("\"\"")) { + continue; + } else { + value = subTerm; + } + + if (!value.isEmpty() && value.at(0) == QLatin1Char('"')) { + value = value.mid(1); + } + if (!value.isEmpty() && value.back() == QLatin1Char('"')) { + value = value.mid(0, value.size() - 1); + } + if (!value.isEmpty()) { + searchTextItems << value; } } + setText(searchTextItems.join(QLatin1Char(' '))); + + if (hasFileName) { + m_fileNameButton->setChecked(true); + } else { + m_contentButton->setChecked(true); + } + m_startSearchTimer->stop(); blockSignals(false); #else