forked from qt-creator/qt-creator
QmakeProjectManager: Rework run qmake action
Relied on some broken magic. Change-Id: I1641f4b135e825ef60d57e99741def018ab9b55a Task-number: QTCREATORBUG-13700 Reviewed-by: Robert Loehning <robert.loehning@theqtcompany.com> Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
This commit is contained in:
@@ -196,8 +196,8 @@ bool QmakeProjectManagerPlugin::initialize(const QStringList &arguments, QString
|
||||
connect(m_buildSubProjectAction, SIGNAL(triggered()), m_qmakeProjectManager, SLOT(buildSubDirContextMenu()));
|
||||
|
||||
m_runQMakeAction = new QAction(tr("Run qmake"), this);
|
||||
command = Core::ActionManager::registerAction(m_runQMakeAction, Constants::RUNQMAKE, projectContext);
|
||||
command->setAttribute(Core::Command::CA_Hide);
|
||||
const Core::Context globalcontext(Core::Constants::C_GLOBAL);
|
||||
command = Core::ActionManager::registerAction(m_runQMakeAction, Constants::RUNQMAKE, globalcontext);
|
||||
mbuild->addAction(command, ProjectExplorer::Constants::G_BUILD_BUILD);
|
||||
connect(m_runQMakeAction, SIGNAL(triggered()), m_qmakeProjectManager, SLOT(runQMake()));
|
||||
|
||||
@@ -231,8 +231,11 @@ bool QmakeProjectManagerPlugin::initialize(const QStringList &arguments, QString
|
||||
|
||||
connect(BuildManager::instance(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
||||
this, SLOT(buildStateChanged(ProjectExplorer::Project*)));
|
||||
connect(SessionManager::instance(), SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
|
||||
this, SLOT(startupProjectChanged()));
|
||||
connect(SessionManager::instance(), &SessionManager::startupProjectChanged,
|
||||
this, &QmakeProjectManagerPlugin::projectChanged);
|
||||
connect(ProjectTree::instance(), &ProjectTree::currentProjectChanged,
|
||||
this, &QmakeProjectManagerPlugin::projectChanged);
|
||||
|
||||
connect(ProjectTree::instance(), &ProjectTree::currentNodeChanged,
|
||||
this, &QmakeProjectManagerPlugin::updateContextActions);
|
||||
|
||||
@@ -272,13 +275,16 @@ bool QmakeProjectManagerPlugin::initialize(const QStringList &arguments, QString
|
||||
void QmakeProjectManagerPlugin::extensionsInitialized()
|
||||
{ }
|
||||
|
||||
void QmakeProjectManagerPlugin::startupProjectChanged()
|
||||
void QmakeProjectManagerPlugin::projectChanged()
|
||||
{
|
||||
if (m_previousStartupProject)
|
||||
disconnect(m_previousStartupProject, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)),
|
||||
this, SLOT(activeTargetChanged()));
|
||||
|
||||
m_previousStartupProject = qobject_cast<QmakeProject *>(SessionManager::startupProject());
|
||||
if (ProjectTree::currentProject())
|
||||
m_previousStartupProject = qobject_cast<QmakeProject *>(ProjectTree::currentProject());
|
||||
else
|
||||
m_previousStartupProject = qobject_cast<QmakeProject *>(SessionManager::startupProject());
|
||||
|
||||
if (m_previousStartupProject)
|
||||
connect(m_previousStartupProject, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)),
|
||||
@@ -305,11 +311,10 @@ void QmakeProjectManagerPlugin::activeTargetChanged()
|
||||
void QmakeProjectManagerPlugin::updateRunQMakeAction()
|
||||
{
|
||||
bool enable = true;
|
||||
if (BuildManager::isBuilding(ProjectTree::currentProject()))
|
||||
if (BuildManager::isBuilding(m_previousStartupProject))
|
||||
enable = false;
|
||||
QmakeProject *pro = qobject_cast<QmakeProject *>(ProjectTree::currentProject());
|
||||
if (!pro)
|
||||
pro = qobject_cast<QmakeProject *>(SessionManager::startupProject());
|
||||
QmakeProject *pro = qobject_cast<QmakeProject *>(m_previousStartupProject);
|
||||
m_runQMakeAction->setVisible(pro);
|
||||
if (!pro
|
||||
|| !pro->activeTarget()
|
||||
|| !pro->activeTarget()->activeBuildConfiguration())
|
||||
|
@@ -65,7 +65,7 @@ public:
|
||||
void extensionsInitialized();
|
||||
|
||||
private slots:
|
||||
void startupProjectChanged();
|
||||
void projectChanged();
|
||||
void activeTargetChanged();
|
||||
void updateRunQMakeAction();
|
||||
void updateContextActions(ProjectExplorer::Node *node, ProjectExplorer::Project *project);
|
||||
|
Reference in New Issue
Block a user