diff --git a/src/search/dolphinfacetswidget.cpp b/src/search/dolphinfacetswidget.cpp --- a/src/search/dolphinfacetswidget.cpp +++ b/src/search/dolphinfacetswidget.cpp @@ -30,6 +30,22 @@ #include #include +namespace { + +QString termValue(const QString& text, int start = 0) +{ + QString value = text.mid(start); + if (!value.isEmpty() && value.at(0) == QLatin1Char('"')) { + value = value.mid(1); + } + if (!value.isEmpty() && value.back() == QLatin1Char('"')) { + value = value.mid(0, value.size() - 1); + } + return value; +} + +} + DolphinFacetsWidget::DolphinFacetsWidget(QWidget* parent) : QWidget(parent), m_typeSelector(nullptr), @@ -131,7 +147,11 @@ if (!m_searchTags.isEmpty()) { for (auto const &tag : m_searchTags) { - terms << QStringLiteral("tag:%1").arg(tag); + if (tag.contains(QLatin1Char(' '))) { + terms << QStringLiteral("tag:\"%1\"").arg(tag); + } else { + terms << QStringLiteral("tag:%1").arg(tag); + } } } @@ -162,16 +182,16 @@ void DolphinFacetsWidget::setSearchTerm(const QString& term) { if (term.startsWith(QLatin1String("modified>="))) { - const QString value = term.mid(10); + const QString value = termValue(term, 10); const QDate date = QDate::fromString(value, Qt::ISODate); setTimespan(date); } else if (term.startsWith(QLatin1String("rating>="))) { - const QString value = term.mid(8); + const QString value = termValue(term, 8); const int stars = value.toInt() / 2; setRating(stars); } else if (term.startsWith(QLatin1String("tag:")) || term.startsWith(QLatin1String("tag="))) { - const QString value = term.mid(4); + const QString value = termValue(term, 4); addSearchTag(value); } }