diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp index fccf745fc39..cfaaefe1789 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp @@ -28,12 +28,13 @@ #include "cmakebuildstep.h" #include "cmakeproject.h" +#include #include +#include #include +#include #include #include -#include -#include #include @@ -160,3 +161,34 @@ void BuildCMakeTargetLocatorFilter::accept(Core::LocatorFilterEntry selection, ProjectExplorerPlugin::buildProject(cmakeProject); buildStep->setBuildTarget(oldTarget); } + +// -------------------------------------------------------------------- +// OpenCMakeTargetLocatorFilter: +// -------------------------------------------------------------------- + +OpenCMakeTargetLocatorFilter::OpenCMakeTargetLocatorFilter() +{ + setId("Open CMake target definition"); + setDisplayName(tr("Open CMake target")); + setShortcutString("cmo"); + setPriority(Medium); +} + +void OpenCMakeTargetLocatorFilter::accept(Core::LocatorFilterEntry selection, + QString *newText, + int *selectionStart, + int *selectionLength) const +{ + Q_UNUSED(newText) + Q_UNUSED(selectionStart) + Q_UNUSED(selectionLength) + + const QVariantMap extraData = selection.internalData.toMap(); + const int line = extraData.value("line").toInt(); + const QString file = extraData.value("file").toString(); + + if (line >= 0) + Core::EditorManager::openEditorAt(file, line); + else + Core::EditorManager::openEditor(file); +} diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h index d68db1a4967..7bf295dd289 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h @@ -61,5 +61,18 @@ public: int *selectionLength) const final; }; +class OpenCMakeTargetLocatorFilter : CMakeTargetLocatorFilter +{ + Q_OBJECT + +public: + OpenCMakeTargetLocatorFilter(); + + void accept(Core::LocatorFilterEntry selection, + QString *newText, + int *selectionStart, + int *selectionLength) const final; +}; + } // namespace Internal } // namespace CMakeProjectManager diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index facbcaa9f62..d8d2164395e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -75,7 +75,8 @@ public: SimpleRunWorkerFactory runWorkerFactory; CMakeBuildConfigurationFactory buildConfigFactory; CMakeEditorFactory editorFactor; - BuildCMakeTargetLocatorFilter buildCMakeTargetLocatorFiler; + BuildCMakeTargetLocatorFilter buildCMakeTargetLocatorFilter; + OpenCMakeTargetLocatorFilter openCMakeTargetLocationFilter; CMakeKitAspect cmakeKitAspect; CMakeGeneratorKitAspect cmakeGeneratorKitAspect;