ProjectExplorer: Add locator filter for debugging a run configuration

Complements the "run run config" filter.

Change-Id: Id1603fbfcbccce83e4b1f36dbdfa7fc9ef58c14f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2024-01-31 14:50:32 +01:00
parent 431690e04a
commit 40f84a37ff

View File

@@ -443,6 +443,15 @@ private:
Core::LocatorMatcherTasks matchers() final;
};
class RunConfigurationDebugFilter final : public ILocatorFilter
{
public:
RunConfigurationDebugFilter();
private:
Core::LocatorMatcherTasks matchers() final;
};
class RunConfigurationSwitchFilter final : public ILocatorFilter
{
public:
@@ -675,6 +684,7 @@ public:
CurrentProjectFilter m_currentProjectFilter;
AllProjectFilesFilter m_allProjectDirectoriesFilter;
RunConfigurationStartFilter m_runConfigurationStartFilter;
RunConfigurationDebugFilter m_runConfigurationDebugFilter;
RunConfigurationSwitchFilter m_runConfigurationSwitchFilter;
CopyFileStepFactory m_copyFileStepFactory;
@@ -4258,6 +4268,12 @@ static void runAcceptor(RunConfiguration *config)
ProjectExplorerPlugin::runRunConfiguration(config, Constants::NORMAL_RUN_MODE, true);
}
static void debugAcceptor(RunConfiguration *config)
{
if (!BuildManager::isBuilding(config->project()))
ProjectExplorerPlugin::runRunConfiguration(config, Constants::DEBUG_RUN_MODE, true);
}
RunConfigurationStartFilter::RunConfigurationStartFilter()
{
setId("Run run configuration");
@@ -4273,6 +4289,21 @@ LocatorMatcherTasks RunConfigurationStartFilter::matchers()
return runConfigurationMatchers(&runAcceptor);
}
RunConfigurationDebugFilter::RunConfigurationDebugFilter()
{
setId("Debug run configuration");
setDisplayName(Tr::tr("Debug Run Configuration"));
setDescription(Tr::tr("Starts debugging a run configuration of the active project."));
setDefaultShortcutString("dr");
setPriority(Medium);
setupFilter(this);
}
LocatorMatcherTasks RunConfigurationDebugFilter::matchers()
{
return runConfigurationMatchers(&debugAcceptor);
}
static void switchAcceptor(RunConfiguration *config)
{
ProjectManager::startupTarget()->setActiveRunConfiguration(config);