summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagergui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/installer/packagemanagergui.cpp')
-rw-r--r--src/libs/installer/packagemanagergui.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index 26af00bdc..8c0877d3e 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -828,6 +828,12 @@ void PackageManagerGui::wizardWidgetInsertionRequested(QWidget *widget,
void PackageManagerGui::wizardWidgetRemovalRequested(QWidget *widget)
{
Q_ASSERT(widget);
+
+ const QList<int> pages = pageIds();
+ foreach (int id, pages) {
+ PackageManagerPage *managerPage = qobject_cast<PackageManagerPage *>(page(id));
+ managerPage->removeCustomWidget(widget);
+ }
widget->setParent(nullptr);
packageManagerCore()->controlScriptEngine()->removeFromGlobalObject(widget);
packageManagerCore()->componentScriptEngine()->removeFromGlobalObject(widget);
@@ -1357,6 +1363,18 @@ bool PackageManagerPage::validatePage()
}
/*!
+ \internal
+*/
+void PackageManagerPage::removeCustomWidget(const QWidget *widget)
+{
+ for (auto it = m_customWidgets.begin(); it != m_customWidgets.end();) {
+ if (it.value() == widget)
+ it = m_customWidgets.erase(it);
+ else
+ ++it;
+ }
+}
+/*!
Inserts \a widget at the position specified by \a offset in relation to
another widget specified by \a siblingName. The default position is directly
behind the sibling.