From 1aa92b5dabee638af54cec3eb572f349182e1613 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 8 Sep 2021 14:33:15 +0200 Subject: [PATCH] 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 --- src/plugins/texteditor/basefilefind.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 2f594021590..abe8777b347 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -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 *watcher, SearchResult *search, int index) { @@ -240,7 +251,7 @@ static void displayResult(QFutureWatcher *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;