Also honour QSizePolicy::Maximum
It's yet another way to say you want a max size
This commit is contained in:
@@ -144,9 +144,9 @@ QSize Widget_qwidget::widgetMaxSize(const QWidget *w)
|
||||
|
||||
const QSizePolicy policy = w->sizePolicy();
|
||||
|
||||
if (policy.verticalPolicy() == QSizePolicy::Fixed)
|
||||
if (policy.verticalPolicy() == QSizePolicy::Fixed || policy.verticalPolicy() == QSizePolicy::Maximum)
|
||||
max.setHeight(qMin(max.height(), w->sizeHint().height()));
|
||||
if (policy.horizontalPolicy() == QSizePolicy::Fixed)
|
||||
if (policy.horizontalPolicy() == QSizePolicy::Fixed || policy.horizontalPolicy() == QSizePolicy::Maximum)
|
||||
max.setWidth(qMin(max.width(), w->sizeHint().width()));
|
||||
|
||||
max = boundedMaxSize(min, max); // for safety against weird values
|
||||
|
||||
@@ -357,6 +357,7 @@ private Q_SLOTS:
|
||||
void tst_maxSizePropagates();
|
||||
void tst_maxSizeHonouredWhenDropped();
|
||||
void tst_fixedSizePolicy();
|
||||
void tst_maximumSizePolicy();
|
||||
|
||||
private:
|
||||
std::unique_ptr<MultiSplitter> createMultiSplitterFromSetup(MultiSplitterSetup setup, QHash<QWidget *, Frame *> &frameMap) const;
|
||||
@@ -5417,6 +5418,30 @@ void TestDocks::tst_fixedSizePolicy()
|
||||
delete dock1->window();
|
||||
}
|
||||
|
||||
void TestDocks::tst_maximumSizePolicy()
|
||||
{
|
||||
EnsureTopLevelsDeleted e;
|
||||
|
||||
auto widget = new MyWidget2();
|
||||
const int maxHeight = 250;
|
||||
widget->setMinSize(QSize(200, 200));
|
||||
widget->setSizeHint(QSize(250, maxHeight));
|
||||
widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
|
||||
|
||||
auto dock1 = createDockWidget("dock1", widget);
|
||||
dock1->show();
|
||||
dock1->window()->resize(QSize(500, 500));
|
||||
auto oldFw = dock1->window();
|
||||
dock1->close();
|
||||
dock1->show();
|
||||
|
||||
QVERIFY(dock1->window()->height() <= maxHeight + 20); // + 20 as the floating window is a bit bigger, due to margins etc.
|
||||
QVERIFY(dock1->height() <= maxHeight);
|
||||
|
||||
delete oldFw;
|
||||
delete dock1->window();
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (!qpaPassedAsArgument(argc, argv)) {
|
||||
|
||||
Reference in New Issue
Block a user