diff --git a/plugins/switchtobuddy/kdevswitchtobuddy.rc b/plugins/switchtobuddy/kdevswitchtobuddy.rc --- a/plugins/switchtobuddy/kdevswitchtobuddy.rc +++ b/plugins/switchtobuddy/kdevswitchtobuddy.rc @@ -3,6 +3,7 @@ + diff --git a/plugins/switchtobuddy/switchtobuddyplugin.h b/plugins/switchtobuddy/switchtobuddyplugin.h --- a/plugins/switchtobuddy/switchtobuddyplugin.h +++ b/plugins/switchtobuddy/switchtobuddyplugin.h @@ -63,6 +63,11 @@ void switchToBuddy(const QString& url); /** + * Switch between header and source files + */ + void switchHeaderSource(); + + /** * @brief Switch between definitions and declarations * * E.g. if the cursor in the currently active view points to an implementation file diff --git a/plugins/switchtobuddy/switchtobuddyplugin.cpp b/plugins/switchtobuddy/switchtobuddyplugin.cpp --- a/plugins/switchtobuddy/switchtobuddyplugin.cpp +++ b/plugins/switchtobuddy/switchtobuddyplugin.cpp @@ -148,9 +148,25 @@ xmlFile = this->xmlFile(); QAction* switchDefinitionDeclaration = actions.addAction(QStringLiteral("switch_definition_declaration")); - switchDefinitionDeclaration->setText( i18n("&Switch Definition/Declaration") ); - actions.setDefaultShortcut( switchDefinitionDeclaration, Qt::CTRL | Qt::SHIFT | Qt::Key_C ); + switchDefinitionDeclaration->setText(i18n("&Switch Definition/Declaration")); + actions.setDefaultShortcut(switchDefinitionDeclaration, Qt::CTRL | Qt::SHIFT | Qt::Key_C); connect(switchDefinitionDeclaration, &QAction::triggered, this, &SwitchToBuddyPlugin::switchDefinitionDeclaration); + + QAction* switchHeaderSource = actions.addAction(QStringLiteral("switch_header_source")); + switchHeaderSource->setText(i18n("Switch Header/Source")); + actions.setDefaultShortcut(switchHeaderSource, Qt::Key_F2); + connect(switchHeaderSource, &QAction::triggered, this, &SwitchToBuddyPlugin::switchHeaderSource); +} + +void SwitchToBuddyPlugin::switchHeaderSource() +{ + auto doc = ICore::self()->documentController()->activeDocument(); + if (!doc) + return; + + QString buddyUrl = findSwitchCandidate(doc->url()); + if (!buddyUrl.isEmpty()) + switchToBuddy(buddyUrl); } void SwitchToBuddyPlugin::switchToBuddy(const QString& url)