From 4abd0aeff38d401a152ab8f1125d7604ed92df3e Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Tue, 24 Nov 2009 11:49:56 +0100
Subject: [PATCH] Removed the extra QTextCursor formal argument from
 QuickFixOperator::match().

---
 src/plugins/cppeditor/cppquickfix.cpp | 45 +++++++++++++--------------
 src/plugins/cppeditor/cppquickfix.h   |  7 +++--
 2 files changed, 27 insertions(+), 25 deletions(-)

diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp
index 410f8dbb15f..6f43c547ee0 100644
--- a/src/plugins/cppeditor/cppquickfix.cpp
+++ b/src/plugins/cppeditor/cppquickfix.cpp
@@ -108,10 +108,8 @@ public:
         return QLatin1String("Rewrite condition using ||"); // ### tr?
     }
 
-    virtual int match(const QList<AST *> &path, QTextCursor tc)
+    virtual int match(const QList<AST *> &path)
     {
-        setTextCursor(tc);
-
         BinaryExpressionAST *expression = 0;
 
         int index = path.size() - 1;
@@ -198,10 +196,8 @@ public:
         return true;
     }
 
-    virtual int match(const QList<AST *> &path, QTextCursor tc)
+    virtual int match(const QList<AST *> &path)
     {
-        setTextCursor(tc);
-
         CoreDeclaratorAST *core_declarator = 0;
 
         int index = path.size() - 1;
@@ -215,7 +211,7 @@ public:
                 if (checkDeclaration(simpleDecl)) {
                     declaration = simpleDecl;
 
-                    const int cursorPosition = tc.selectionStart();
+                    const int cursorPosition = selectionStart();
 
                     const int startOfDeclSpecifier = startOf(declaration->decl_specifier_list->firstToken());
                     const int endOfDeclSpecifier = endOf(declaration->decl_specifier_list->lastToken() - 1);
@@ -279,10 +275,8 @@ public:
         return QLatin1String("Add curly braces"); // ### tr?
     }
 
-    virtual int match(const QList<AST *> &path, QTextCursor tc)
+    virtual int match(const QList<AST *> &path)
     {
-        setTextCursor(tc);
-
         // show when we're on the 'if' of an if statement
         int index = path.size() - 1;
         IfStatementAST *ifStatement = path.at(index)->asIfStatement();
@@ -341,10 +335,8 @@ public:
         return QLatin1String("Move declaration out of condition"); // ### tr?
     }
 
-    virtual int match(const QList<AST *> &path, QTextCursor tc)
+    virtual int match(const QList<AST *> &path)
     {
-        setTextCursor(tc);
-
         condition = mk.Condition();
         pattern = mk.IfStatement(condition);
 
@@ -409,10 +401,8 @@ public:
         return QLatin1String("Move declaration out of condition"); // ### tr?
     }
 
-    virtual int match(const QList<AST *> &path, QTextCursor tc)
+    virtual int match(const QList<AST *> &path)
     {
-        setTextCursor(tc);
-
         condition = mk.Condition();
         pattern = mk.WhileStatement(condition);
 
@@ -505,10 +495,8 @@ public:
         return QLatin1String("Split if statement"); // ### tr?
     }
 
-    virtual int match(const QList<AST *> &path, QTextCursor tc)
+    virtual int match(const QList<AST *> &path)
     {
-        setTextCursor(tc);
-
         pattern = 0;
 
         int index = path.size() - 1;
@@ -634,6 +622,12 @@ QTextCursor QuickFixOperation::textCursor() const
 void QuickFixOperation::setTextCursor(const QTextCursor &cursor)
 { _textCursor = cursor; }
 
+int QuickFixOperation::selectionStart() const
+{ return _textCursor.selectionStart(); }
+
+int QuickFixOperation::selectionEnd() const
+{ return _textCursor.selectionEnd(); }
+
 const CPlusPlus::Token &QuickFixOperation::tokenAt(unsigned index) const
 { return _doc->translationUnit()->tokenAt(index); }
 
@@ -708,7 +702,7 @@ void QuickFixOperation::reindent(const Range &range)
 void QuickFixOperation::move(int start, int end, int to)
 {
     if (end > start)
-        _textWriter.move(start, end-start, to);
+        _changeSet.move(start, end-start, to);
 }
 
 void QuickFixOperation::move(unsigned tokenIndex, int to)
@@ -724,7 +718,7 @@ void QuickFixOperation::move(const CPlusPlus::AST *ast, int to)
 void QuickFixOperation::replace(int start, int end, const QString &replacement)
 {
     if (end >= start)
-        _textWriter.replace(start, end-start, replacement);
+        _changeSet.replace(start, end-start, replacement);
 }
 
 void QuickFixOperation::replace(unsigned tokenIndex, const QString &replacement)
@@ -758,13 +752,17 @@ QString QuickFixOperation::textOf(AST *ast) const
 void QuickFixOperation::applyChanges(AST *ast)
 {
     Range range;
+
     if (ast)
         range = createRange(ast);
 
     _textCursor.beginEditBlock();
-    _textWriter.write(&_textCursor);
+
+    _changeSet.write(&_textCursor);
+
     if (ast)
         reindent(range);
+
     _textCursor.endEditBlock();
 }
 
@@ -820,7 +818,8 @@ int CPPQuickFixCollector::startCompletion(TextEditor::ITextEditable *editable)
         QMap<int, QList<QuickFixOperationPtr> > matchedOps;
 
         foreach (QuickFixOperationPtr op, candidates) {
-            int priority = op->match(path, _editor->textCursor());
+            op->setTextCursor(_editor->textCursor());
+            int priority = op->match(path);
             if (priority != -1)
                 matchedOps[priority].append(op);
         }
diff --git a/src/plugins/cppeditor/cppquickfix.h b/src/plugins/cppeditor/cppquickfix.h
index 66e43254f14..d35460ca9d7 100644
--- a/src/plugins/cppeditor/cppquickfix.h
+++ b/src/plugins/cppeditor/cppquickfix.h
@@ -63,7 +63,7 @@ public:
     virtual ~QuickFixOperation();
 
     virtual QString description() const = 0;
-    virtual int match(const QList<CPlusPlus::AST *> &path, QTextCursor tc) = 0;
+    virtual int match(const QList<CPlusPlus::AST *> &path) = 0;
 
     CPlusPlus::Document::Ptr document() const { return _doc; }
     CPlusPlus::Snapshot snapshot() const { return _snapshot; }
@@ -71,6 +71,9 @@ public:
     QTextCursor textCursor() const;
     void setTextCursor(const QTextCursor &cursor);
 
+    int selectionStart() const;
+    int selectionEnd() const;
+
     CPPEditor *editor() const;
 
     virtual void apply() = 0;
@@ -114,7 +117,7 @@ private:
     CPlusPlus::Document::Ptr _doc;
     CPlusPlus::Snapshot _snapshot;
     QTextCursor _textCursor;
-    Utils::ChangeSet _textWriter;
+    Utils::ChangeSet _changeSet;
     CPPEditor *_editor;
 };
 
-- 
GitLab