Find: Do not try to show weird control characters in results

Replace all non-printable characters by question marks for display
purposes.

Fixes: QTCREATORBUG-9108
Change-Id: I81d31880dd5b1b2f9dea66acfdbe78ce89e685ca
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2021-09-08 14:33:15 +02:00
parent 35095c542f
commit 1aa92b5dab

View File

@@ -231,6 +231,17 @@ void BaseFileFind::setCurrentSearchEngine(int index)
emit currentSearchEngineChanged();
}
static QString displayText(const QString &line)
{
QString result = line;
auto end = result.end();
for (auto it = result.begin(); it != end; ++it) {
if (!it->isPrint())
*it = QChar('?');
}
return result;
}
static void displayResult(QFutureWatcher<FileSearchResultList> *watcher,
SearchResult *search, int index)
{
@@ -240,7 +251,7 @@ static void displayResult(QFutureWatcher<FileSearchResultList> *watcher,
SearchResultItem item;
item.setFilePath(Utils::FilePath::fromString(result.fileName));
item.setMainRange(result.lineNumber, result.matchStart, result.matchLength);
item.setLineText(result.matchingLine);
item.setLineText(displayText(result.matchingLine));
item.setUseTextEditorFont(true);
item.setUserData(result.regexpCapturedTexts);
items << item;