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 <tim.jenssen@theqtcompany.com>
This commit is contained in:
Thomas Hartmann
2015-07-17 19:09:28 +02:00
parent 82a1006433
commit 9d8441986e
2 changed files with 11 additions and 0 deletions

View File

@@ -192,6 +192,13 @@ DesignModeWidget::DesignModeWidget(QWidget *parent) :
DesignModeWidget::~DesignModeWidget() DesignModeWidget::~DesignModeWidget()
{ {
m_leftSideBar.reset();
m_rightSideBar.reset();
foreach (QPointer<QWidget> widget, m_viewWidgets) {
if (widget)
widget.clear();
}
} }
void DesignModeWidget::restoreDefaultView() void DesignModeWidget::restoreDefaultView()
@@ -382,7 +389,9 @@ void DesignModeWidget::setup()
Core::SideBarItem *sideBarItem = new DesignerSideBarItem(widgetInfo.widget, widgetInfo.toolBarWidgetFactory, widgetInfo.uniqueId); Core::SideBarItem *sideBarItem = new DesignerSideBarItem(widgetInfo.widget, widgetInfo.toolBarWidgetFactory, widgetInfo.uniqueId);
sideBarItems.append(sideBarItem); sideBarItems.append(sideBarItem);
rightSideBarItems.append(sideBarItem); rightSideBarItems.append(sideBarItem);
} }
m_viewWidgets.append(widgetInfo.widget);
} }
if (projectsExplorer) { if (projectsExplorer) {

View File

@@ -160,6 +160,8 @@ private: // variables
QStringList m_navigatorHistory; QStringList m_navigatorHistory;
int m_navigatorHistoryCounter; int m_navigatorHistoryCounter;
bool m_keepNavigatorHistory; bool m_keepNavigatorHistory;
QList<QPointer<QWidget> >m_viewWidgets;
}; };
} // namespace Internal } // namespace Internal