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