summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2012-03-17 13:26:27 +0100
committerLeandro Melo <leandro.melo@nokia.com>2012-06-06 14:10:07 +0200
commit44a3a5e07024f365539b9ad977b195a458d5e61a (patch)
treeeb548d2f9041e4fc33551bf70abe61fe68174e8e /src
parent6147419f8712fda79539b9a94305ff04a22f73e5 (diff)
downloadqt-creator-44a3a5e07024f365539b9ad977b195a458d5e61a.tar.gz
Implemented Rename Macro Usages
Works the same way as Rename Usages for C++ Symbols. For now, no Search Again as this requieres further work. Task-number: QTCREATORBUG-413 Change-Id: I09e85ea1e8c247f5ce0b6bc566aba8018c1569e4 Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/cppeditor/cppeditor.cpp12
-rw-r--r--src/plugins/cpptools/ModelManagerInterface.h1
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp19
-rw-r--r--src/plugins/cpptools/cppfindreferences.h3
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp5
-rw-r--r--src/plugins/cpptools/cppmodelmanager.h1
6 files changed, 36 insertions, 5 deletions
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 668886aafc..11d8360067 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -742,10 +742,14 @@ void CPPEditorWidget::renameUsagesNow(const QString &replacement)
info.snapshot = CppModelManagerInterface::instance()->snapshot();
info.snapshot.insert(info.doc);
- CanonicalSymbol cs(this, info);
- if (Symbol *canonicalSymbol = cs(textCursor()))
- if (canonicalSymbol->identifier() != 0)
- m_modelManager->renameUsages(canonicalSymbol, cs.context(), replacement);
+ if (const Macro *macro = findCanonicalMacro(textCursor(), info.doc)) {
+ m_modelManager->renameMacroUsages(*macro, replacement);
+ } else {
+ CanonicalSymbol cs(this, info);
+ if (Symbol *canonicalSymbol = cs(textCursor()))
+ if (canonicalSymbol->identifier() != 0)
+ m_modelManager->renameUsages(canonicalSymbol, cs.context(), replacement);
+ }
}
void CPPEditorWidget::renameUsages()
diff --git a/src/plugins/cpptools/ModelManagerInterface.h b/src/plugins/cpptools/ModelManagerInterface.h
index 8bab7086e8..754579f93c 100644
--- a/src/plugins/cpptools/ModelManagerInterface.h
+++ b/src/plugins/cpptools/ModelManagerInterface.h
@@ -209,6 +209,7 @@ public:
const QString &replacement = QString()) = 0;
virtual void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context) = 0;
+ virtual void renameMacroUsages(const CPlusPlus::Macro &macro, const QString &replacement = QString()) = 0;
virtual void findMacroUsages(const CPlusPlus::Macro &macro) = 0;
virtual void setExtraDiagnostics(const QString &fileName, int key,
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 98a907b3f3..7b8a76a10d 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -646,11 +646,22 @@ static void findMacroUses_helper(QFutureInterface<Usage> &future,
void CppFindReferences::findMacroUses(const Macro &macro)
{
+ findMacroUses(macro, QString(), false);
+}
+
+void CppFindReferences::findMacroUses(const Macro &macro, const QString &replacement, bool replace)
+{
Find::SearchResult *search = Find::SearchResultWindow::instance()->startNewSearch(
tr("C++ Macro Usages:"),
QString(),
macro.name(),
- Find::SearchResultWindow::SearchOnly);
+ replace ? Find::SearchResultWindow::SearchAndReplace
+ : Find::SearchResultWindow::SearchOnly,
+ QLatin1String("CppEditor"));
+
+ search->setTextToReplace(replacement);
+ connect(search, SIGNAL(replaceButtonClicked(QString,QList<Find::SearchResultItem>)),
+ SLOT(onReplaceButtonClicked(QString,QList<Find::SearchResultItem>)));
Find::SearchResultWindow::instance()->popup(true);
@@ -685,6 +696,12 @@ void CppFindReferences::findMacroUses(const Macro &macro)
connect(progress, SIGNAL(clicked()), search, SLOT(popup()));
}
+void CppFindReferences::renameMacroUses(const Macro &macro, const QString &replacement)
+{
+ const QString textToReplace = replacement.isEmpty() ? macro.name() : replacement;
+ findMacroUses(macro, textToReplace, true);
+}
+
DependencyTable CppFindReferences::updateDependencyTable(CPlusPlus::Snapshot snapshot)
{
DependencyTable oldDeps = dependencyTable();
diff --git a/src/plugins/cpptools/cppfindreferences.h b/src/plugins/cpptools/cppfindreferences.h
index dfa7c114d0..4b4202297d 100644
--- a/src/plugins/cpptools/cppfindreferences.h
+++ b/src/plugins/cpptools/cppfindreferences.h
@@ -82,6 +82,7 @@ public:
const QString &replacement = QString());
void findMacroUses(const CPlusPlus::Macro &macro);
+ void renameMacroUses(const CPlusPlus::Macro &macro, const QString &replacement = QString());
CPlusPlus::DependencyTable updateDependencyTable(CPlusPlus::Snapshot snapshot);
@@ -97,6 +98,8 @@ private Q_SLOTS:
private:
void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context,
const QString &replacement, bool replace);
+ void findMacroUses(const CPlusPlus::Macro &macro, const QString &replacement,
+ bool replace);
void findAll_helper(Find::SearchResult *search);
CPlusPlus::DependencyTable dependencyTable() const;
void setDependencyTable(const CPlusPlus::DependencyTable &newTable);
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 79f91cbea8..dbc5db3a4f 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -870,6 +870,11 @@ void CppModelManager::findMacroUsages(const CPlusPlus::Macro &macro)
m_findReferences->findMacroUses(macro);
}
+void CppModelManager::renameMacroUsages(const CPlusPlus::Macro &macro, const QString &replacement)
+{
+ m_findReferences->renameMacroUses(macro, replacement);
+}
+
CppModelManager::WorkingCopy CppModelManager::buildWorkingCopyList()
{
WorkingCopy workingCopy;
diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h
index b0d08ff730..c165667a2f 100644
--- a/src/plugins/cpptools/cppmodelmanager.h
+++ b/src/plugins/cpptools/cppmodelmanager.h
@@ -129,6 +129,7 @@ public:
virtual void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context);
virtual void findMacroUsages(const CPlusPlus::Macro &macro);
+ virtual void renameMacroUsages(const CPlusPlus::Macro &macro, const QString &replacement);
virtual void setExtraDiagnostics(const QString &fileName, int key,
const QList<CPlusPlus::Document::DiagnosticMessage> &diagnostics);