summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qformlayout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/kernel/qformlayout.cpp')
-rw-r--r--src/widgets/kernel/qformlayout.cpp25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/widgets/kernel/qformlayout.cpp b/src/widgets/kernel/qformlayout.cpp
index 3e60723f17..f3f7280030 100644
--- a/src/widgets/kernel/qformlayout.cpp
+++ b/src/widgets/kernel/qformlayout.cpp
@@ -1410,18 +1410,15 @@ static QLayoutItem *ownershipCleanedItem(QFormLayoutItem *item, QFormLayout *lay
return i;
}
-static void clearQLayoutItem(QLayoutItem *item)
+static void clearAndDestroyQLayoutItem(QLayoutItem *item)
{
if (Q_LIKELY(item)) {
+ delete item->widget();
if (QLayout *layout = item->layout()) {
- while (QLayoutItem *child = layout->takeAt(0)) {
- clearQLayoutItem(child);
- delete child;
- }
- delete layout;
+ while (QLayoutItem *child = layout->takeAt(0))
+ clearAndDestroyQLayoutItem(child);
}
- delete item->widget();
- delete item->spacerItem();
+ delete item;
}
}
@@ -1453,8 +1450,8 @@ static void clearQLayoutItem(QLayoutItem *item)
void QFormLayout::removeRow(int row)
{
TakeRowResult result = takeRow(row);
- clearQLayoutItem(result.labelItem);
- clearQLayoutItem(result.fieldItem);
+ clearAndDestroyQLayoutItem(result.labelItem);
+ clearAndDestroyQLayoutItem(result.fieldItem);
}
/*!
@@ -1485,8 +1482,8 @@ void QFormLayout::removeRow(int row)
void QFormLayout::removeRow(QWidget *widget)
{
TakeRowResult result = takeRow(widget);
- clearQLayoutItem(result.labelItem);
- clearQLayoutItem(result.fieldItem);
+ clearAndDestroyQLayoutItem(result.labelItem);
+ clearAndDestroyQLayoutItem(result.fieldItem);
}
/*!
@@ -1518,8 +1515,8 @@ void QFormLayout::removeRow(QWidget *widget)
void QFormLayout::removeRow(QLayout *layout)
{
TakeRowResult result = takeRow(layout);
- clearQLayoutItem(result.labelItem);
- clearQLayoutItem(result.fieldItem);
+ clearAndDestroyQLayoutItem(result.labelItem);
+ clearAndDestroyQLayoutItem(result.fieldItem);
}
/*!