From 16b1430d2a7f421491966402fdf8d7a52a5b66e2 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 3 Jan 2016 16:12:31 +0200 Subject: [PATCH] Locator: Fix handling of prefix with empty input For example: "f ", "m ". Broken by b6e4e966f4352797bee50a807058f755c96c2f3f. Change-Id: Ic1e389c52579c86479e2c066eadfb4aaf4b66700 Reviewed-by: Eike Ziller --- .../coreplugin/locator/locatorwidget.cpp | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp index 2b8a99e271e..b4fd73d1907 100644 --- a/src/plugins/coreplugin/locator/locatorwidget.cpp +++ b/src/plugins/coreplugin/locator/locatorwidget.cpp @@ -464,25 +464,27 @@ void LocatorWidget::showPopupNow() QList LocatorWidget::filtersFor(const QString &text, QString &searchText) { - const QString trimmedText = text.trimmed(); - QList filters = m_locatorPlugin->filters(); - const int whiteSpace = trimmedText.indexOf(QLatin1Char(' ')); - QString prefix; - if (whiteSpace >= 0) - prefix = trimmedText.left(whiteSpace); - if (!prefix.isEmpty()) { - prefix = prefix.toLower(); + const int length = text.size(); + int firstNonSpace; + for (firstNonSpace = 0; firstNonSpace < length; ++firstNonSpace) { + if (!text.at(firstNonSpace).isSpace()) + break; + } + const int whiteSpace = text.indexOf(QChar::Space, firstNonSpace); + const QList filters = m_locatorPlugin->filters(); + if (whiteSpace >= 0) { + const QString prefix = text.mid(firstNonSpace, whiteSpace - firstNonSpace).toLower(); QList prefixFilters; foreach (ILocatorFilter *filter, filters) { if (prefix == filter->shortcutString()) { - searchText = trimmedText.mid(whiteSpace).trimmed(); + searchText = text.mid(whiteSpace).trimmed(); prefixFilters << filter; } } if (!prefixFilters.isEmpty()) return prefixFilters; } - searchText = trimmedText; + searchText = text.trimmed(); QList activeFilters; foreach (ILocatorFilter *filter, filters) if (filter->isIncludedByDefault())