QSize QLayoutItemProto::maximumSize() const { QLayoutItem *item = qscriptvalue_cast<QLayoutItem*>(thisObject()); if (item) return item->maximumSize(); return QSize(); }
void QDockWidgetLayout::setGeometry(const QRect &geometry) { QDockWidget *q = qobject_cast<QDockWidget*>(parentWidget()); bool nativeDeco = nativeWindowDeco(); int fw = q->isFloating() && !nativeDeco ? q->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, 0) : 0; if (nativeDeco) { if (QLayoutItem *item = item_list[Content]) item->setGeometry(geometry); } else { int titleHeight = this->titleHeight(); if (verticalTitleBar) { _titleArea = QRect(QPoint(fw, fw), QSize(titleHeight, geometry.height() - (fw * 2))); } else { _titleArea = QRect(QPoint(fw, fw), QSize(geometry.width() - (fw * 2), titleHeight)); } if (QLayoutItem *item = item_list[TitleBar]) { item->setGeometry(_titleArea); } else { QStyleOptionDockWidgetV2 opt; q->initStyleOption(&opt); if (QLayoutItem *item = item_list[CloseButton]) { if (!item->isEmpty()) { QRect r = q->style() ->subElementRect(QStyle::SE_DockWidgetCloseButton, &opt, q); if (!r.isNull()) item->setGeometry(r); } } if (QLayoutItem *item = item_list[FloatButton]) { if (!item->isEmpty()) { QRect r = q->style() ->subElementRect(QStyle::SE_DockWidgetFloatButton, &opt, q); if (!r.isNull()) item->setGeometry(r); } } } if (QLayoutItem *item = item_list[Content]) { QRect r = geometry; if (verticalTitleBar) { r.setLeft(_titleArea.right() + 1); r.adjust(0, fw, -fw, -fw); } else { r.setTop(_titleArea.bottom() + 1); r.adjust(fw, 0, -fw, -fw); } item->setGeometry(r); } } QLayoutItem *item = item_list[Content]; if (item != 0 && q->isFloating()) { QSize s = sizeFromContent(item->maximumSize(), true); q->setMaximumSize(s); } else { q->setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); } }