diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index e7216e13ee3a05974f2b7184fa2134e40a69dc47..9acbd0ff90e439a54c179e857b184403b0b9fdfd 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -543,9 +543,6 @@ CPPEditor::CPPEditor(QWidget *parent) setCodeFoldingVisible(true); baseTextDocument()->setSyntaxHighlighter(new CppHighlighter); - new QShortcut(QKeySequence(tr("CTRL+SHIFT+r")), this, SLOT(renameInPlace()), - /*ambiguousMember=*/ 0, Qt::WidgetShortcut); - #ifdef WITH_TOKEN_MOVE_POSITION new QShortcut(QKeySequence::MoveToPreviousWord, this, SLOT(moveToPreviousToken()), /*ambiguousMember=*/ 0, Qt::WidgetShortcut); @@ -829,7 +826,7 @@ void CPPEditor::reformatDocument() c.insertText(QString::fromUtf8(str.c_str(), str.length())); } -void CPPEditor::renameInPlace() +void CPPEditor::renameSymbolUnderCursor() { updateSemanticInfo(m_semanticHighlighter->semanticInfo(currentSource())); @@ -1331,8 +1328,8 @@ void CPPEditor::contextMenuEvent(QContextMenuEvent *e) if (lastAction->menu() && QLatin1String(lastAction->menu()->metaObject()->className()) == QLatin1String("QUnicodeControlCharacterMenu")) menu->removeAction(lastAction); - Core::ActionContainer *mcontext = - Core::ICore::instance()->actionManager()->actionContainer(CppEditor::Constants::M_CONTEXT); + Core::ActionManager *am = Core::ICore::instance()->actionManager(); + Core::ActionContainer *mcontext = am->actionContainer(CppEditor::Constants::M_CONTEXT); QMenu *contextMenu = mcontext->menu(); foreach (QAction *action, contextMenu->actions()) @@ -1341,13 +1338,6 @@ void CPPEditor::contextMenuEvent(QContextMenuEvent *e) const QList<QTextEdit::ExtraSelection> selections = extraSelections(BaseTextEditor::CodeSemanticsSelection); - if (! selections.isEmpty()) { - const QString name = selections.first().cursor.selectedText(); - QAction *renameAction = new QAction(tr("Rename '%1'").arg(name), menu); - connect(renameAction, SIGNAL(triggered()), this, SLOT(renameInPlace())); - menu->addAction(renameAction); - } - menu->exec(e->globalPos()); delete menu; } diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index b13ac2a6366740a06ae5045dbb6902f887c9beac..eefb2b521c389c5f66ec37744c8730fbb55ffe7d 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -197,6 +197,7 @@ public Q_SLOTS: void setSortedMethodOverview(bool sort); void switchDeclarationDefinition(); void jumpToDefinition(); + void renameSymbolUnderCursor(); void moveToPreviousToken(); void moveToNextToken(); @@ -228,7 +229,6 @@ private Q_SLOTS: void updateUsesNow(); void onDocumentUpdated(CPlusPlus::Document::Ptr doc); void reformatDocument(); - void renameInPlace(); void onContentsChanged(int position, int charsRemoved, int charsAdded); void semanticRehighlight(); diff --git a/src/plugins/cppeditor/cppeditorconstants.h b/src/plugins/cppeditor/cppeditorconstants.h index 3f30d8537b7120b8720a6a3867ccd9bc0340f6a1..ab802531cf079ef290d81e2b027252642673b427 100644 --- a/src/plugins/cppeditor/cppeditorconstants.h +++ b/src/plugins/cppeditor/cppeditorconstants.h @@ -38,6 +38,7 @@ const char * const M_CONTEXT = "CppEditor.ContextMenu"; const char * const C_CPPEDITOR = "C++ Editor"; const char * const CPPEDITOR_KIND = QT_TRANSLATE_NOOP("OpenWith::Editors", "C++ Editor"); const char * const SWITCH_DECLARATION_DEFINITION = "CppEditor.SwitchDeclarationDefinition"; +const char * const RENAME_SYMBOL_UNDER_CURSOR = "CppEditor.RenameSymbolUnderCursor"; const char * const JUMP_TO_DEFINITION = "CppEditor.JumpToDefinition"; const char * const HEADER_FILE_TYPE = "CppHeaderFiles"; diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp index b5cc600ffa1fa374ef50bf44947ab2b44b0bef6b..e57e38a06f5061885db2ca7dd985a7fbd1da112f 100644 --- a/src/plugins/cppeditor/cppplugin.cpp +++ b/src/plugins/cppeditor/cppplugin.cpp @@ -212,6 +212,14 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess am->actionContainer(CppEditor::Constants::M_CONTEXT)->addAction(cmd); am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd); + QAction *renameSymbolUnderCursorAction = new QAction(tr("Rename Symbol under Cursor"), this); + cmd = am->registerAction(renameSymbolUnderCursorAction, + Constants::RENAME_SYMBOL_UNDER_CURSOR, context); + cmd->setDefaultKeySequence(QKeySequence("CTRL+SHIFT+R")); + connect(renameSymbolUnderCursorAction, SIGNAL(triggered()), this, SLOT(renameSymbolUnderCursor())); + am->actionContainer(CppEditor::Constants::M_CONTEXT)->addAction(cmd); + am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd); + m_actionHandler = new TextEditor::TextEditorActionHandler(CppEditor::Constants::C_CPPEDITOR, TextEditor::TextEditorActionHandler::Format | TextEditor::TextEditorActionHandler::UnCommentSelection @@ -265,4 +273,12 @@ void CppPlugin::jumpToDefinition() editor->jumpToDefinition(); } +void CppPlugin::renameSymbolUnderCursor() +{ + Core::EditorManager *em = Core::EditorManager::instance(); + CPPEditor *editor = qobject_cast<CPPEditor*>(em->currentEditor()->widget()); + if (editor) + editor->renameSymbolUnderCursor(); +} + Q_EXPORT_PLUGIN(CppPlugin) diff --git a/src/plugins/cppeditor/cppplugin.h b/src/plugins/cppeditor/cppplugin.h index 9e5cc9eeade83d0ce2a1309360fcc19bac73e53d..5e058fa3fc4ed7817fbbe1ed014f8cb2bc8b49b8 100644 --- a/src/plugins/cppeditor/cppplugin.h +++ b/src/plugins/cppeditor/cppplugin.h @@ -73,6 +73,7 @@ public slots: private slots: void switchDeclarationDefinition(); void jumpToDefinition(); + void renameSymbolUnderCursor(); private: Core::IEditor *createEditor(QWidget *parent);