diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp
index 984c9a265f5e00bd9643efe843c58d4660246213..ea09db7d8c20116a10a55f68859f460f4eb55819 100644
--- a/src/plugins/cppeditor/cppquickfix.cpp
+++ b/src/plugins/cppeditor/cppquickfix.cpp
@@ -128,60 +128,36 @@ QTextCursor QuickFixOperation::textCursor() const
 void QuickFixOperation::setTextCursor(const QTextCursor &cursor)
 { _textCursor = cursor; }
 
-QTextCursor QuickFixOperation::cursor(AST *ast) const
-{
-    TranslationUnit *unit = document()->translationUnit();
-    unsigned startLine, startColumn, endLine, endColumn;
-    unit->getTokenStartPosition(ast->firstToken(), &startLine, &startColumn);
-    unit->getTokenEndPosition(ast->lastToken() - 1, &endLine, &endColumn);
-
-    QTextDocument *textDocument = _textCursor.document();
-    QTextCursor tc(textDocument);
-    tc.setPosition(textDocument->findBlockByNumber(startLine - 1).position() + startColumn - 1);
-    tc.setPosition(textDocument->findBlockByNumber(endLine - 1).position() + endColumn - 1,
-                   QTextCursor::KeepAnchor);
-
-    return tc;
-}
-
 const CPlusPlus::Token &QuickFixOperation::tokenAt(unsigned index) const
 { return _doc->translationUnit()->tokenAt(index); }
 
-void QuickFixOperation::getTokenStartPosition(unsigned index, unsigned *line, unsigned *column) const
-{ _doc->translationUnit()->getPosition(tokenAt(index).begin(), line, column); }
-
-void QuickFixOperation::getTokenEndPosition(unsigned index, unsigned *line, unsigned *column) const
-{ _doc->translationUnit()->getPosition(tokenAt(index).end(), line, column); }
-
-QTextCursor QuickFixOperation::cursor(unsigned index) const
+int QuickFixOperation::tokenStartPosition(unsigned index) const
 {
-    const Token &tk = tokenAt(index);
+    unsigned line, column;
+    _doc->translationUnit()->getPosition(tokenAt(index).begin(), &line, &column);
+    return _textCursor.document()->findBlockByNumber(line - 1).position() + column - 1;
+}
 
-    unsigned line, col;
-    getTokenStartPosition(index, &line, &col);
-    QTextCursor tc = _textCursor;
-    tc.setPosition(tc.document()->findBlockByNumber(line - 1).position() + col - 1);
-    tc.setPosition(tc.position() + tk.f.length, QTextCursor::KeepAnchor);
-    return tc;
+int QuickFixOperation::tokenEndPosition(unsigned index) const
+{
+    unsigned line, column;
+    _doc->translationUnit()->getPosition(tokenAt(index).end(), &line, &column);
+    return _textCursor.document()->findBlockByNumber(line - 1).position() + column - 1;
 }
 
-QTextCursor QuickFixOperation::moveAtStartOfToken(unsigned index) const
+QTextCursor QuickFixOperation::selectToken(unsigned index) const
 {
-    unsigned line, col;
-    getTokenStartPosition(index, &line, &col);
     QTextCursor tc = _textCursor;
-    tc.setPosition(tc.document()->findBlockByNumber(line - 1).position() + col - 1);
+    tc.setPosition(tokenStartPosition(index));
+    tc.setPosition(tokenEndPosition(index), QTextCursor::KeepAnchor);
     return tc;
 }
 
-QTextCursor QuickFixOperation::moveAtEndOfToken(unsigned index) const
+QTextCursor QuickFixOperation::selectNode(AST *ast) const
 {
-    const Token &tk = tokenAt(index);
-
-    unsigned line, col;
-    getTokenStartPosition(index, &line, &col);
     QTextCursor tc = _textCursor;
-    tc.setPosition(tc.document()->findBlockByNumber(line - 1).position() + col + tk.f.length - 1);
+    tc.setPosition(tokenStartPosition(ast->firstToken()));
+    tc.setPosition(tokenEndPosition(ast->lastToken() - 1), QTextCursor::KeepAnchor);
     return tc;
 }
 
diff --git a/src/plugins/cppeditor/cppquickfix.h b/src/plugins/cppeditor/cppquickfix.h
index eb62dbfc3598c0f5704f4482f5dd4d6d6fc34824..d519db556f3898ec9f3b1857107d91acd064ee45 100644
--- a/src/plugins/cppeditor/cppquickfix.h
+++ b/src/plugins/cppeditor/cppquickfix.h
@@ -70,16 +70,11 @@ public:
 
 protected:
     const CPlusPlus::Token &tokenAt(unsigned index) const;
-    void getTokenStartPosition(unsigned index, unsigned *line,
-                               unsigned *column) const;
-    void getTokenEndPosition(unsigned index, unsigned *line,
-                             unsigned *column) const;
+    int tokenStartPosition(unsigned index) const;
+    int tokenEndPosition(unsigned index) const;
 
-    QTextCursor cursor(unsigned index) const;
-    QTextCursor cursor(CPlusPlus::AST *ast) const;
-
-    QTextCursor moveAtStartOfToken(unsigned index) const;
-    QTextCursor moveAtEndOfToken(unsigned index) const;
+    QTextCursor selectToken(unsigned index) const;
+    QTextCursor selectNode(CPlusPlus::AST *ast) const;
 
 private:
     CPlusPlus::Document::Ptr _doc;