forked from qt-creator/qt-creator
Avoid some memory leaks at shutdown
StatusBarManager needs to delete its contexts when dropping them, QActions should be parented, and in ProjectWindow we can save an allocation. Change-Id: Idee075d4f2ce8014f22f73453987d1ab6539cf18 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -95,8 +95,10 @@ static void createStatusBarManager()
|
|||||||
QObject::connect(ICore::instance(), &ICore::coreAboutToClose, [] {
|
QObject::connect(ICore::instance(), &ICore::coreAboutToClose, [] {
|
||||||
// This is the catch-all on rampdown. Individual items may
|
// This is the catch-all on rampdown. Individual items may
|
||||||
// have been removed earlier by destroyStatusBarWidget().
|
// have been removed earlier by destroyStatusBarWidget().
|
||||||
for (const QPointer<IContext> &context : m_contexts)
|
for (const QPointer<IContext> &context : m_contexts) {
|
||||||
ICore::removeContextObject(context);
|
ICore::removeContextObject(context);
|
||||||
|
delete context;
|
||||||
|
}
|
||||||
m_contexts.clear();
|
m_contexts.clear();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -162,7 +162,7 @@ void WindowList::addWindow(QWidget *window)
|
|||||||
m_windows.append(window);
|
m_windows.append(window);
|
||||||
Id id = Id("QtCreator.Window.").withSuffix(m_windows.size());
|
Id id = Id("QtCreator.Window.").withSuffix(m_windows.size());
|
||||||
m_windowActionIds.append(id);
|
m_windowActionIds.append(id);
|
||||||
auto action = new QAction(window->windowTitle(), 0);
|
auto action = new QAction(window->windowTitle(), ActionManager::instance());
|
||||||
m_windowActions.append(action);
|
m_windowActions.append(action);
|
||||||
QObject::connect(action, &QAction::triggered, [action]() { WindowList::activateWindow(action); });
|
QObject::connect(action, &QAction::triggered, [action]() { WindowList::activateWindow(action); });
|
||||||
action->setCheckable(true);
|
action->setCheckable(true);
|
||||||
|
@@ -369,7 +369,7 @@ public:
|
|||||||
|
|
||||||
m_selectorTree = new SelectorTree;
|
m_selectorTree = new SelectorTree;
|
||||||
m_selectorTree->setModel(&m_projectsModel);
|
m_selectorTree->setModel(&m_projectsModel);
|
||||||
m_selectorTree->setItemDelegate(new SelectorDelegate);
|
m_selectorTree->setItemDelegate(&m_selectorDelegate);
|
||||||
m_selectorTree->setContextMenuPolicy(Qt::CustomContextMenu);
|
m_selectorTree->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
connect(m_selectorTree, &QAbstractItemView::activated,
|
connect(m_selectorTree, &QAbstractItemView::activated,
|
||||||
this, &ProjectWindowPrivate::itemActivated);
|
this, &ProjectWindowPrivate::itemActivated);
|
||||||
@@ -595,6 +595,7 @@ public:
|
|||||||
ProjectWindow *q;
|
ProjectWindow *q;
|
||||||
ProjectsModel m_projectsModel;
|
ProjectsModel m_projectsModel;
|
||||||
ComboBoxModel m_comboBoxModel;
|
ComboBoxModel m_comboBoxModel;
|
||||||
|
SelectorDelegate m_selectorDelegate;
|
||||||
QComboBox *m_projectSelection;
|
QComboBox *m_projectSelection;
|
||||||
SelectorTree *m_selectorTree;
|
SelectorTree *m_selectorTree;
|
||||||
QPushButton *m_importBuild;
|
QPushButton *m_importBuild;
|
||||||
|
Reference in New Issue
Block a user