QskSubWindow: Respect minimum size
E.g. Material 3 dialogs have a minimum size
This commit is contained in:
parent
f7cd259fb0
commit
f6a4e8d2d6
|
@ -21,6 +21,31 @@ QskSubWindowSkinlet::QskSubWindowSkinlet( QskSkin* skin )
|
|||
|
||||
QskSubWindowSkinlet::~QskSubWindowSkinlet() = default;
|
||||
|
||||
QSizeF QskSubWindowSkinlet::sizeHint( const QskSkinnable* skinnable,
|
||||
Qt::SizeHint, const QSizeF& size ) const
|
||||
{
|
||||
using Q = QskSubWindow;
|
||||
|
||||
const auto subWindow = static_cast< const QskSubWindow* >( skinnable );
|
||||
|
||||
auto panelSize = subWindow->strutSizeHint( QskSubWindow::Panel );
|
||||
auto s = size.expandedTo( panelSize );
|
||||
|
||||
const auto decorations = subWindow->decorations();
|
||||
|
||||
if ( ( decorations & Q::TitleBar ) && ( decorations & Q::Title ) )
|
||||
{
|
||||
auto titleBarSize = subWindow->strutSizeHint( QskSubWindow::TitleBarPanel );
|
||||
if( titleBarSize.isValid() )
|
||||
{
|
||||
s = s.expandedTo( { titleBarSize.width(), 0 } );
|
||||
s.rheight() += titleBarSize.height();
|
||||
}
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
QRectF QskSubWindowSkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||
const QRectF& contentsRect, QskAspect::Subcontrol subControl ) const
|
||||
{
|
||||
|
|
|
@ -30,6 +30,9 @@ class QSK_EXPORT QskSubWindowSkinlet : public QskPopupSkinlet
|
|||
Q_INVOKABLE QskSubWindowSkinlet( QskSkin* = nullptr );
|
||||
~QskSubWindowSkinlet() override;
|
||||
|
||||
virtual QSizeF sizeHint( const QskSkinnable*,
|
||||
Qt::SizeHint, const QSizeF& ) const override;
|
||||
|
||||
QRectF subControlRect( const QskSkinnable*,
|
||||
const QRectF&, QskAspect::Subcontrol ) const override;
|
||||
|
||||
|
|
Loading…
Reference in New Issue