QFormLayout: Avoid assertion with negative spacings.
It's not really clear if styles *must* return a non-negative value for
QStyle::pixelMetric(PM_Layout{Vertical,Horizontal}Spacing), but both
QBoxLayout and QGridLayout seems to be robust enough to handle this.
They will simply make sure that the spacing is never negative.
We therefore make QFormLayout equally robust.
Task-number: QTBUG-34731
Change-Id: I62235bfcd8adf7757cf15bc9927b29650ae6459d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
bb10
parent
191f96cb88
commit
de5b3780cf
|
|
@ -641,7 +641,7 @@ static inline int spacingHelper(QWidget* parent, QStyle *style, int userVSpacing
|
|||
spacing = qMax(spacing, prevItem2->geometry().top() - wid->geometry().top() );
|
||||
}
|
||||
}
|
||||
return spacing;
|
||||
return qMax(spacing, 0);
|
||||
}
|
||||
|
||||
static inline void initLayoutStruct(QLayoutStruct& sl, QFormLayoutItem* item)
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@
|
|||
#include <qproxystyle.h>
|
||||
#include <qsizepolicy.h>
|
||||
|
||||
#include <QtWidgets/QCheckBox>
|
||||
#include <QtWidgets/QLabel>
|
||||
#include <QtWidgets/QLineEdit>
|
||||
#include <QtWidgets/QPushButton>
|
||||
|
|
@ -347,6 +348,19 @@ void tst_QFormLayout::spacing()
|
|||
style->hspacing = 20;
|
||||
//QCOMPARE(fl->spacing(), 20);
|
||||
|
||||
|
||||
|
||||
// Do not assert if spacings are negative (QTBUG-34731)
|
||||
style->vspacing = -1;
|
||||
style->hspacing = -1;
|
||||
QLabel *label = new QLabel(tr("Asserts"));
|
||||
QCheckBox *checkBox = new QCheckBox(tr("Yes"));
|
||||
fl->setWidget(0, QFormLayout::LabelRole, label);
|
||||
fl->setWidget(1, QFormLayout::FieldRole, checkBox);
|
||||
w->resize(200, 100);
|
||||
w->show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(w));
|
||||
|
||||
delete w;
|
||||
delete style;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue