diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp index 24300c1d182e2f9372365ac2f4064e99b71b5e37..e873ab87f95e4dcb98c738fa6dd9ea71d41caa6f 100644 --- a/src/plugins/cppeditor/cppquickfix.cpp +++ b/src/plugins/cppeditor/cppquickfix.cpp @@ -98,9 +98,8 @@ protected: class RewriteLogicalAndOp: public QuickFixOperation { public: - RewriteLogicalAndOp(Document::Ptr doc, const Snapshot &snapshot, CPPEditor *editor) - : QuickFixOperation(doc, snapshot, editor), - left(0), right(0), pattern(0) + RewriteLogicalAndOp() + : left(0), right(0), pattern(0) {} virtual QString description() const @@ -159,8 +158,8 @@ private: class SplitSimpleDeclarationOp: public QuickFixOperation { public: - SplitSimpleDeclarationOp(Document::Ptr doc, const Snapshot &snapshot, CPPEditor *editor) - : QuickFixOperation(doc, snapshot, editor), declaration(0) + SplitSimpleDeclarationOp() + : declaration(0) {} virtual QString description() const @@ -263,9 +262,8 @@ private: class AddBracesToIfOp: public QuickFixOperation { public: - AddBracesToIfOp(Document::Ptr doc, const Snapshot &snapshot, CPPEditor *editor) - : QuickFixOperation(doc, snapshot, editor), - _statement(0) + AddBracesToIfOp() + : _statement(0) {} virtual QString description() const @@ -323,9 +321,8 @@ private: class MoveDeclarationOutOfIfOp: public QuickFixOperation { public: - MoveDeclarationOutOfIfOp(Document::Ptr doc, const Snapshot &snapshot, CPPEditor *editor) - : QuickFixOperation(doc, snapshot, editor), - condition(0), pattern(0), core(0) + MoveDeclarationOutOfIfOp() + : condition(0), pattern(0), core(0) {} virtual QString description() const @@ -388,9 +385,8 @@ private: class MoveDeclarationOutOfWhileOp: public QuickFixOperation { public: - MoveDeclarationOutOfWhileOp(Document::Ptr doc, const Snapshot &snapshot, CPPEditor *editor) - : QuickFixOperation(doc, snapshot, editor), - condition(0), pattern(0), core(0) + MoveDeclarationOutOfWhileOp() + : condition(0), pattern(0), core(0) {} virtual QString description() const @@ -481,9 +477,8 @@ private: class SplitIfStatementOp: public QuickFixOperation { public: - SplitIfStatementOp(Document::Ptr doc, const Snapshot &snapshot, CPPEditor *editor) - : QuickFixOperation(doc, snapshot, editor), - condition(0), pattern(0) + SplitIfStatementOp() + : condition(0), pattern(0) {} virtual QString description() const @@ -598,19 +593,13 @@ private: } // end of anonymous namespace -QuickFixOperation::QuickFixOperation(CPlusPlus::Document::Ptr doc, - const CPlusPlus::Snapshot &snapshot, - CPPEditor *editor) - : _doc(doc), _snapshot(snapshot), - _editor(editor), _topLevelNode(0) +QuickFixOperation::QuickFixOperation() + : _editor(0), _topLevelNode(0) { } QuickFixOperation::~QuickFixOperation() { } -CPPEditor *QuickFixOperation::editor() const -{ return _editor; } - CPlusPlus::AST *QuickFixOperation::topLevelNode() const { return _topLevelNode; } @@ -620,6 +609,24 @@ void QuickFixOperation::setTopLevelNode(CPlusPlus::AST *topLevelNode) const Utils::ChangeSet &QuickFixOperation::changeSet() const { return _changeSet; } +Document::Ptr QuickFixOperation::document() const +{ return _document; } + +void QuickFixOperation::setDocument(CPlusPlus::Document::Ptr document) +{ _document = document; } + +Snapshot QuickFixOperation::snapshot() const +{ return _snapshot; } + +void QuickFixOperation::setSnapshot(const CPlusPlus::Snapshot &snapshot) +{ _snapshot = snapshot; } + +CPPEditor *QuickFixOperation::editor() const +{ return _editor; } + +void QuickFixOperation::setEditor(CPPEditor *editor) +{ _editor = editor; } + QTextCursor QuickFixOperation::textCursor() const { return _textCursor; } @@ -633,12 +640,12 @@ int QuickFixOperation::selectionEnd() const { return _textCursor.selectionEnd(); } const CPlusPlus::Token &QuickFixOperation::tokenAt(unsigned index) const -{ return _doc->translationUnit()->tokenAt(index); } +{ return _document->translationUnit()->tokenAt(index); } int QuickFixOperation::startOf(unsigned index) const { unsigned line, column; - _doc->translationUnit()->getPosition(tokenAt(index).begin(), &line, &column); + _document->translationUnit()->getPosition(tokenAt(index).begin(), &line, &column); return _textCursor.document()->findBlockByNumber(line - 1).position() + column - 1; } @@ -650,7 +657,7 @@ int QuickFixOperation::startOf(const CPlusPlus::AST *ast) const int QuickFixOperation::endOf(unsigned index) const { unsigned line, column; - _doc->translationUnit()->getPosition(tokenAt(index).end(), &line, &column); + _document->translationUnit()->getPosition(tokenAt(index).end(), &line, &column); return _textCursor.document()->findBlockByNumber(line - 1).position() + column - 1; } @@ -805,12 +812,12 @@ int CPPQuickFixCollector::startCompletion(TextEditor::ITextEditable *editable) if (path.isEmpty()) return -1; - QSharedPointer<RewriteLogicalAndOp> rewriteLogicalAndOp(new RewriteLogicalAndOp(info.doc, info.snapshot, _editor)); - QSharedPointer<SplitIfStatementOp> splitIfStatementOp(new SplitIfStatementOp(info.doc, info.snapshot, _editor)); - QSharedPointer<MoveDeclarationOutOfIfOp> moveDeclarationOutOfIfOp(new MoveDeclarationOutOfIfOp(info.doc, info.snapshot, _editor)); - QSharedPointer<MoveDeclarationOutOfWhileOp> moveDeclarationOutOfWhileOp(new MoveDeclarationOutOfWhileOp(info.doc, info.snapshot, _editor)); - QSharedPointer<SplitSimpleDeclarationOp> splitSimpleDeclarationOp(new SplitSimpleDeclarationOp(info.doc, info.snapshot, _editor)); - QSharedPointer<AddBracesToIfOp> addBracesToIfOp(new AddBracesToIfOp(info.doc, info.snapshot, _editor)); + QSharedPointer<RewriteLogicalAndOp> rewriteLogicalAndOp(new RewriteLogicalAndOp()); + QSharedPointer<SplitIfStatementOp> splitIfStatementOp(new SplitIfStatementOp()); + QSharedPointer<MoveDeclarationOutOfIfOp> moveDeclarationOutOfIfOp(new MoveDeclarationOutOfIfOp()); + QSharedPointer<MoveDeclarationOutOfWhileOp> moveDeclarationOutOfWhileOp(new MoveDeclarationOutOfWhileOp()); + QSharedPointer<SplitSimpleDeclarationOp> splitSimpleDeclarationOp(new SplitSimpleDeclarationOp()); + QSharedPointer<AddBracesToIfOp> addBracesToIfOp(new AddBracesToIfOp()); QList<QuickFixOperationPtr> candidates; candidates.append(rewriteLogicalAndOp); @@ -823,6 +830,9 @@ int CPPQuickFixCollector::startCompletion(TextEditor::ITextEditable *editable) QMap<int, QList<QuickFixOperationPtr> > matchedOps; foreach (QuickFixOperationPtr op, candidates) { + op->setSnapshot(info.snapshot); + op->setDocument(info.doc); + op->setEditor(_editor); op->setTextCursor(_editor->textCursor()); int priority = op->match(path); if (priority != -1) diff --git a/src/plugins/cppeditor/cppquickfix.h b/src/plugins/cppeditor/cppquickfix.h index 4e5a7f8d85d637293eaa01cf301ffac554e447ab..faed48f72ad5856c9158b990f266baacdf77976f 100644 --- a/src/plugins/cppeditor/cppquickfix.h +++ b/src/plugins/cppeditor/cppquickfix.h @@ -56,17 +56,20 @@ class QuickFixOperation Q_DISABLE_COPY(QuickFixOperation) public: - QuickFixOperation(CPlusPlus::Document::Ptr doc, - const CPlusPlus::Snapshot &snapshot, - CPPEditor *editor); - + QuickFixOperation(); virtual ~QuickFixOperation(); virtual QString description() const = 0; virtual int match(const QList<CPlusPlus::AST *> &path) = 0; - CPlusPlus::Document::Ptr document() const { return _doc; } - CPlusPlus::Snapshot snapshot() const { return _snapshot; } + CPlusPlus::Document::Ptr document() const; + void setDocument(CPlusPlus::Document::Ptr document); + + CPlusPlus::Snapshot snapshot() const; + void setSnapshot(const CPlusPlus::Snapshot &snapshot); + + CPPEditor *editor() const; + void setEditor(CPPEditor *editor); QTextCursor textCursor() const; void setTextCursor(const QTextCursor &cursor); @@ -74,7 +77,6 @@ public: int selectionStart() const; int selectionEnd() const; - CPPEditor *editor() const; const Utils::ChangeSet &changeSet() const; CPlusPlus::AST *topLevelNode() const; @@ -117,7 +119,7 @@ protected: void reindent(const Range &range); private: - CPlusPlus::Document::Ptr _doc; + CPlusPlus::Document::Ptr _document; CPlusPlus::Snapshot _snapshot; QTextCursor _textCursor; Utils::ChangeSet _changeSet;