diff options
author | con <qtc-committer@nokia.com> | 2010-07-19 14:46:53 +0200 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2010-07-23 16:34:22 +0200 |
commit | 2bda8675e509c5547a0057e50d9024b49054cf78 (patch) | |
tree | 00bbd4f434f501e59d9d056db535ffe859a65849 /src/plugins/texteditor/basefilefind.cpp | |
parent | 80d85e28874d1d37e5a16dc0825a6d3c0167fa61 (diff) | |
download | qt-creator-2bda8675e509c5547a0057e50d9024b49054cf78.tar.gz |
C++ symbols find filter for advanced find.
Required refactoring of the search result window to show real trees of
search results.
The backend is the backend from the Locator filter, which is a bit
outdated now.
Diffstat (limited to 'src/plugins/texteditor/basefilefind.cpp')
-rw-r--r-- | src/plugins/texteditor/basefilefind.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 9006e11a73..7360ade771 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -153,15 +153,16 @@ void BaseFileFind::displayResult(int index) { QList<Find::SearchResultItem> items; // this conversion is stupid... foreach (const Utils::FileSearchResult &result, results) { Find::SearchResultItem item; - item.fileName = result.fileName; + item.path = QStringList() << QDir::toNativeSeparators(result.fileName); item.lineNumber = result.lineNumber; - item.lineText = result.matchingLine; - item.searchTermLength = result.matchLength; - item.searchTermStart = result.matchStart; + item.text = result.matchingLine; + item.textMarkLength = result.matchLength; + item.textMarkPos = result.matchStart; + item.useTextEditorFont = true; item.userData = result.regexpCapturedTexts; items << item; } - m_resultWindow->addResults(items); + m_resultWindow->addResults(items, Find::SearchResultWindow::AddOrdered); if (m_resultLabel) m_resultLabel->setText(tr("%1 found").arg(m_resultWindow->numberOfResults())); } @@ -250,7 +251,11 @@ void BaseFileFind::updateComboEntries(QComboBox *combo, bool onTop) void BaseFileFind::openEditor(const Find::SearchResultItem &item) { - TextEditor::BaseTextEditor::openEditorAt(item.fileName, item.lineNumber, item.searchTermStart); + if (item.path.size() > 0) { + TextEditor::BaseTextEditor::openEditorAt(item.path.first(), item.lineNumber, item.textMarkPos); + } else { + Core::EditorManager::instance()->openEditor(item.text); + } } // #pragma mark Static methods @@ -263,7 +268,7 @@ static void applyChanges(QTextDocument *doc, const QString &text, const QList<Fi const int blockNumber = item.lineNumber - 1; QTextCursor tc(doc->findBlockByNumber(blockNumber)); - const int cursorPosition = tc.position() + item.searchTermStart; + const int cursorPosition = tc.position() + item.textMarkPos; int cursorIndex = 0; for (; cursorIndex < changes.size(); ++cursorIndex) { @@ -277,7 +282,7 @@ static void applyChanges(QTextDocument *doc, const QString &text, const QList<Fi continue; // skip this change. tc.setPosition(cursorPosition); - tc.setPosition(tc.position() + item.searchTermLength, + tc.setPosition(tc.position() + item.textMarkLength, QTextCursor::KeepAnchor); QString substitutionText; if (item.userData.canConvert<QStringList>() && !item.userData.toStringList().isEmpty()) @@ -302,7 +307,7 @@ QStringList BaseFileFind::replaceAll(const QString &text, QHash<QString, QList<Find::SearchResultItem> > changes; foreach (const Find::SearchResultItem &item, items) - changes[item.fileName].append(item); + changes[item.path.first()].append(item); Core::EditorManager *editorManager = Core::EditorManager::instance(); |