QmlProjectPlugin: Don't leak action on shutdown

Detected by memory analyzer.

Change-Id: I5c1ba80e9a1e1ca620b496ebe6cd9bb600e8b800
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Jarek Kobus
2022-06-27 14:24:35 +02:00
parent 175a61ad1b
commit a0de1f1848
8 changed files with 13 additions and 13 deletions

View File

@@ -195,7 +195,7 @@ QList<GenerateResource::ResourceFile> getFilesFromQrc(QFile *file, bool inProjec
return fileList;
}
void GenerateResource::generateMenuEntry()
void GenerateResource::generateMenuEntry(QObject *parent)
{
Core::ActionContainer *menu =
Core::ActionManager::actionContainer(Core::Constants::M_FILE);
@@ -203,7 +203,7 @@ void GenerateResource::generateMenuEntry()
const Core::Context projectContext(QmlProjectManager::Constants::QML_PROJECT_ID);
// ToDo: move this to QtCreator and add tr to the string then
auto action = new QAction(QCoreApplication::translate("QmlDesigner::GenerateResource",
"Generate QRC Resource File"));
"Generate QRC Resource File"), parent);
action->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr);
// todo make it more intelligent when it gets enabled
QObject::connect(ProjectExplorer::SessionManager::instance(),
@@ -352,7 +352,7 @@ void GenerateResource::generateMenuEntry()
// ToDo: move this to QtCreator and add tr to the string then
auto rccAction = new QAction(QCoreApplication::translate("QmlDesigner::GenerateResource",
"Generate Deployable Package"));
"Generate Deployable Package"), parent);
rccAction->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr);
QObject::connect(ProjectExplorer::SessionManager::instance(),
&ProjectExplorer::SessionManager::startupProjectChanged, [rccAction]() {

View File

@@ -33,7 +33,7 @@ struct ResourceFile
QString fileName;
bool inProject;
};
void generateMenuEntry();
void generateMenuEntry(QObject *parent);
QStringList getFileList(const QList<ResourceFile> &);
QTableWidget* createFilesTable(const QList<ResourceFile> &);
}

View File

@@ -237,7 +237,7 @@ bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString *e
return false;
d = new QmlDesignerPluginPrivate;
if (QmlProjectManager::QmlProject::isQtDesignStudio())
GenerateResource::generateMenuEntry();
GenerateResource::generateMenuEntry(this);
const QString fontPath
= Core::ICore::resourcePath(

View File

@@ -56,11 +56,11 @@ const QString ERROR_TEXT = QCoreApplication::translate("QmlDesigner::CmakeProjec
const QString SUCCESS_TEXT = QCoreApplication::translate("QmlDesigner::CmakeProjectConverter",
"Creating project succeeded.");
void CmakeProjectConverter::generateMenuEntry()
void CmakeProjectConverter::generateMenuEntry(QObject *parent)
{
Core::ActionContainer *menu =
Core::ActionManager::actionContainer(Core::Constants::M_FILE);
auto action = new QAction(MENU_ITEM_CONVERT);
auto action = new QAction(MENU_ITEM_CONVERT, parent);
QObject::connect(action, &QAction::triggered, CmakeProjectConverter::onConvertProject);
Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.ConvertToCmakeProject");
menu->addAction(cmd, Core::Constants::G_FILE_EXPORT);

View File

@@ -49,7 +49,7 @@ class CmakeProjectConverter {
public:
bool convertProject(const QmlProjectManager::QmlProject *project,
const Utils::FilePath &targetDir);
static void generateMenuEntry();
static void generateMenuEntry(QObject *parent);
static void onConvertProject();
static bool isProjectConvertable(const ProjectExplorer::Project *project);
static bool isProjectCurrentFormat(const ProjectExplorer::Project *project);

View File

@@ -81,11 +81,11 @@ enum ProjectDirectoryError {
const QString MENU_ITEM_GENERATE = QCoreApplication::translate("QmlDesigner::GenerateCmake",
"Generate CMake Build Files");
void generateMenuEntry()
void generateMenuEntry(QObject *parent)
{
Core::ActionContainer *menu =
Core::ActionManager::actionContainer(Core::Constants::M_FILE);
auto action = new QAction(MENU_ITEM_GENERATE);
auto action = new QAction(MENU_ITEM_GENERATE, parent);
QObject::connect(action, &QAction::triggered, GenerateCmake::onGenerateCmakeLists);
Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.CreateCMakeLists");
menu->addAction(cmd, Core::Constants::G_FILE_EXPORT);

View File

@@ -39,7 +39,7 @@ struct GeneratableFile {
bool operator==(const GeneratableFile &left, const GeneratableFile &right);
void generateMenuEntry();
void generateMenuEntry(QObject *parent);
void onGenerateCmakeLists();
bool isErrorFatal(int error);
int isProjectCorrectlyFormed(const Utils::FilePath &rootDir);

View File

@@ -378,8 +378,8 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage)
});
}
GenerateCmake::generateMenuEntry();
GenerateCmake::CmakeProjectConverter::generateMenuEntry();
GenerateCmake::generateMenuEntry(this);
GenerateCmake::CmakeProjectConverter::generateMenuEntry(this);
return true;
}