diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index d8ebf6af6a53164cb229edbabb76ee897f728d5b..d048f6dee95b0a5dc4750c0fef8a5f214aaf90f6 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -869,6 +869,16 @@ void CPPEditor::findUsages() void CPPEditor::renameUsages() { + Core::EditorManager::instance()->showEditorInfoBar(QLatin1String("CppEditor.Rename"), + tr("This change cannot be undone."), + tr("Yes, I know what I am doing."), + this, SLOT(renameUsagesNow())); +} + +void CPPEditor::renameUsagesNow() +{ + Core::EditorManager::instance()->hideEditorInfoBar(QLatin1String("CppEditor.Rename")); + m_currentRenameSelection = -1; QList<QTextEdit::ExtraSelection> selections; diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index dfba054375c20ef5c5e849a972b00f14c65db894..b15e7d75551d75492988648f6ea46fc2bc10ae3b 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -192,6 +192,7 @@ public Q_SLOTS: void renameSymbolUnderCursor(); void renameUsages(); void findUsages(); + void renameUsagesNow(); void moveToPreviousToken(); void moveToNextToken(); diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 8faca99e0fca9ba4e502536d0bc526faf92d7b85..a5fd9c7eaa6ecb1f00e3658333ebfaeac3536b7e 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -58,7 +58,7 @@ #include <QtCore/QTime> #include <QtCore/QtConcurrentRun> #include <QtCore/QDir> - +#include <QtGui/QApplication> #include <qtconcurrent/runextensions.h> using namespace CppTools::Internal; @@ -545,15 +545,20 @@ void CppFindReferences::findUsages(Symbol *symbol) void CppFindReferences::renameUsages(Symbol *symbol) { - Find::SearchResult *search = _resultWindow->startNewSearch(Find::SearchResultWindow::SearchAndReplace); + if (Identifier *id = symbol->identifier()) { + const QString textToReplace = QString::fromUtf8(id->chars(), id->size()); - connect(search, SIGNAL(activated(Find::SearchResultItem)), - this, SLOT(openEditor(Find::SearchResultItem))); + Find::SearchResult *search = _resultWindow->startNewSearch(Find::SearchResultWindow::SearchAndReplace); + _resultWindow->setTextToReplace(textToReplace); - connect(search, SIGNAL(replaceButtonClicked(QString,QList<Find::SearchResultItem>)), - SLOT(onReplaceButtonClicked(QString,QList<Find::SearchResultItem>))); + connect(search, SIGNAL(activated(Find::SearchResultItem)), + this, SLOT(openEditor(Find::SearchResultItem))); - findAll_helper(symbol); + connect(search, SIGNAL(replaceButtonClicked(QString,QList<Find::SearchResultItem>)), + SLOT(onReplaceButtonClicked(QString,QList<Find::SearchResultItem>))); + + findAll_helper(symbol); + } } void CppFindReferences::findAll_helper(Symbol *symbol) @@ -651,6 +656,7 @@ void CppFindReferences::onReplaceButtonClicked(const QString &text, const QStringList fileNames = changes.keys(); _modelManager->updateSourceFiles(fileNames); + _resultWindow->hide(); } void CppFindReferences::displayResult(int index) diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp index 2f846cd89c88f95328b25ff00fbb992114df8941..a995dfc5b7bbb17c018851f00878c0f1f1cdd813 100644 --- a/src/plugins/find/searchresultwindow.cpp +++ b/src/plugins/find/searchresultwindow.cpp @@ -104,6 +104,17 @@ SearchResultWindow::~SearchResultWindow() m_items.clear(); } +void SearchResultWindow::setTextToReplace(const QString &textToReplace) +{ + m_replaceTextEdit->setText(textToReplace); + m_replaceTextEdit->selectAll(); +} + +QString SearchResultWindow::textToReplace() const +{ + return m_replaceTextEdit->text(); +} + void SearchResultWindow::setShowReplaceUI(bool show) { m_searchResultTreeView->model()->setShowReplaceUI(show); @@ -169,6 +180,7 @@ SearchResult *SearchResultWindow::startNewSearch(SearchMode searchOrSearchAndRep void SearchResultWindow::clearContents() { setReplaceUIEnabled(false); + m_replaceTextEdit->clear(); m_searchResultTreeView->clear(); m_items.clear(); m_widget->setCurrentWidget(m_searchResultTreeView); diff --git a/src/plugins/find/searchresultwindow.h b/src/plugins/find/searchresultwindow.h index 093eb26884359c4f6a7da2ed9f94424eaad3a9a8..c41ca3424f7b1b32a19302f4fd1f844ef135b25b 100644 --- a/src/plugins/find/searchresultwindow.h +++ b/src/plugins/find/searchresultwindow.h @@ -106,6 +106,9 @@ public: void setShowReplaceUI(bool show); bool isShowingReplaceUI() const; + void setTextToReplace(const QString &textToReplace); + QString textToReplace() const; + // search result object only lives till next startnewsearch call SearchResult *startNewSearch(SearchMode searchOrSearchAndReplace = SearchOnly);