diff --git a/src/plugins/android/androidmanifesteditor.cpp b/src/plugins/android/androidmanifesteditor.cpp index 65f4a92b21e22de9f61d2a809003f7aeaae568fe..cb9249371263265527ffe00c56a67ee5b86c8f37 100644 --- a/src/plugins/android/androidmanifesteditor.cpp +++ b/src/plugins/android/androidmanifesteditor.cpp @@ -36,6 +36,7 @@ #include <QActionGroup> #include <QToolBar> +#include <QTextBlock> using namespace Android; using namespace Internal; @@ -93,6 +94,17 @@ TextEditor::BaseTextEditorWidget *AndroidManifestEditor::textEditor() const return widget()->textEditorWidget(); } +int AndroidManifestEditor::currentLine() const +{ + return textEditor()->textCursor().blockNumber() + 1; +} + +int AndroidManifestEditor::currentColumn() const +{ + QTextCursor cursor = textEditor()->textCursor(); + return cursor.position() - cursor.block().position() + 1; +} + void AndroidManifestEditor::changeEditorPage(QAction *action) { if (!widget()->setActivePage(static_cast<AndroidManifestEditorWidget::EditorPage>(action->data().toInt()))) { diff --git a/src/plugins/android/androidmanifesteditor.h b/src/plugins/android/androidmanifesteditor.h index d7f51e91600f6dfd2a511e770d193b3a5ba7fb3a..aedd29c57c1b6e1ace2e29b1f61f14fd5e5c59c3 100644 --- a/src/plugins/android/androidmanifesteditor.h +++ b/src/plugins/android/androidmanifesteditor.h @@ -57,6 +57,10 @@ public: Core::IDocument *document(); TextEditor::BaseTextEditorWidget *textEditor() const; + int currentLine() const; + int currentColumn() const; + void gotoLine(int line, int column = 0) { textEditor()->gotoLine(line, column); } + private slots: void changeEditorPage(QAction *action); diff --git a/src/plugins/texteditor/linenumberfilter.cpp b/src/plugins/texteditor/linenumberfilter.cpp index a97af5dbdadba167d883b1dbe4620c2468cd63a3..3764bbedc713ef2848b21704de84d8ec483a5157 100644 --- a/src/plugins/texteditor/linenumberfilter.cpp +++ b/src/plugins/texteditor/linenumberfilter.cpp @@ -70,7 +70,7 @@ QList<LocatorFilterEntry> LineNumberFilter::matchesFor(QFutureInterface<Core::Lo column = lineAndColumn.at(1).toInt(&ok); if (!ok) return value; - if (currentTextEditor() && (line > 0 || column > 0)) { + if (EditorManager::currentEditor() && (line > 0 || column > 0)) { LineColumn data; data.first = line; data.second = column - 1; // column API is 0-based @@ -88,21 +88,13 @@ QList<LocatorFilterEntry> LineNumberFilter::matchesFor(QFutureInterface<Core::Lo void LineNumberFilter::accept(LocatorFilterEntry selection) const { - ITextEditor *editor = currentTextEditor(); + IEditor *editor = EditorManager::currentEditor(); if (editor) { EditorManager::addCurrentPositionToNavigationHistory(); LineColumn data = selection.internalData.value<LineColumn>(); - if (data.first < 1) { // jump to column in same line - int currLine, currColumn; - editor->convertPosition(editor->position(), &currLine, &currColumn); - data.first = currLine; - } + if (data.first < 1) // jump to column in same line + data.first = editor->currentLine(); editor->gotoLine(data.first, data.second); EditorManager::activateEditor(editor); } } - -ITextEditor *LineNumberFilter::currentTextEditor() const -{ - return qobject_cast<TextEditor::ITextEditor *>(EditorManager::currentEditor()); -} diff --git a/src/plugins/texteditor/linenumberfilter.h b/src/plugins/texteditor/linenumberfilter.h index 01617c2e5b82ff7c2e43bb2f8fb259042503c0d4..a4eb8b2c77b0f3c07f176b5a7994ea76cf05aadf 100644 --- a/src/plugins/texteditor/linenumberfilter.h +++ b/src/plugins/texteditor/linenumberfilter.h @@ -36,10 +36,11 @@ #include <QList> #include <QFutureInterface> -namespace TextEditor { - -class ITextEditor; +namespace Core { +class IEditor; +} +namespace TextEditor { namespace Internal { class LineNumberFilter : public Core::ILocatorFilter @@ -52,9 +53,6 @@ public: QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future, const QString &entry); void accept(Core::LocatorFilterEntry selection) const; void refresh(QFutureInterface<void> &) {} - -private: - ITextEditor *currentTextEditor() const; }; } // namespace Internal