From 9d8441986e7e1ca74d1b45217e3a0b85463a165c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 17 Jul 2015 19:09:28 +0200 Subject: [PATCH] QmlDesigner: Avoid leaking unused view widgets IF a widget is never shown it has no parent and has to be deleted manually. Change-Id: I5cf34e3a7706dd3472d4388a04bf12910530fe4d Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/designmodewidget.cpp | 9 +++++++++ src/plugins/qmldesigner/designmodewidget.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index f035fe37b60..7fba11374e4 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -192,6 +192,13 @@ DesignModeWidget::DesignModeWidget(QWidget *parent) : DesignModeWidget::~DesignModeWidget() { + m_leftSideBar.reset(); + m_rightSideBar.reset(); + + foreach (QPointer widget, m_viewWidgets) { + if (widget) + widget.clear(); + } } void DesignModeWidget::restoreDefaultView() @@ -382,7 +389,9 @@ void DesignModeWidget::setup() Core::SideBarItem *sideBarItem = new DesignerSideBarItem(widgetInfo.widget, widgetInfo.toolBarWidgetFactory, widgetInfo.uniqueId); sideBarItems.append(sideBarItem); rightSideBarItems.append(sideBarItem); + } + m_viewWidgets.append(widgetInfo.widget); } if (projectsExplorer) { diff --git a/src/plugins/qmldesigner/designmodewidget.h b/src/plugins/qmldesigner/designmodewidget.h index 7716fd46b3c..5250023644c 100644 --- a/src/plugins/qmldesigner/designmodewidget.h +++ b/src/plugins/qmldesigner/designmodewidget.h @@ -160,6 +160,8 @@ private: // variables QStringList m_navigatorHistory; int m_navigatorHistoryCounter; bool m_keepNavigatorHistory; + + QList >m_viewWidgets; }; } // namespace Internal