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, [] {
|
||||
// This is the catch-all on rampdown. Individual items may
|
||||
// have been removed earlier by destroyStatusBarWidget().
|
||||
for (const QPointer<IContext> &context : m_contexts)
|
||||
for (const QPointer<IContext> &context : m_contexts) {
|
||||
ICore::removeContextObject(context);
|
||||
delete context;
|
||||
}
|
||||
m_contexts.clear();
|
||||
});
|
||||
}
|
||||
|
@@ -162,7 +162,7 @@ void WindowList::addWindow(QWidget *window)
|
||||
m_windows.append(window);
|
||||
Id id = Id("QtCreator.Window.").withSuffix(m_windows.size());
|
||||
m_windowActionIds.append(id);
|
||||
auto action = new QAction(window->windowTitle(), 0);
|
||||
auto action = new QAction(window->windowTitle(), ActionManager::instance());
|
||||
m_windowActions.append(action);
|
||||
QObject::connect(action, &QAction::triggered, [action]() { WindowList::activateWindow(action); });
|
||||
action->setCheckable(true);
|
||||
|
@@ -369,7 +369,7 @@ public:
|
||||
|
||||
m_selectorTree = new SelectorTree;
|
||||
m_selectorTree->setModel(&m_projectsModel);
|
||||
m_selectorTree->setItemDelegate(new SelectorDelegate);
|
||||
m_selectorTree->setItemDelegate(&m_selectorDelegate);
|
||||
m_selectorTree->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
connect(m_selectorTree, &QAbstractItemView::activated,
|
||||
this, &ProjectWindowPrivate::itemActivated);
|
||||
@@ -595,6 +595,7 @@ public:
|
||||
ProjectWindow *q;
|
||||
ProjectsModel m_projectsModel;
|
||||
ComboBoxModel m_comboBoxModel;
|
||||
SelectorDelegate m_selectorDelegate;
|
||||
QComboBox *m_projectSelection;
|
||||
SelectorTree *m_selectorTree;
|
||||
QPushButton *m_importBuild;
|
||||
|
Reference in New Issue
Block a user