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;
|
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,
|
QRectF QskSubWindowSkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
const QRectF& contentsRect, QskAspect::Subcontrol subControl ) const
|
const QRectF& contentsRect, QskAspect::Subcontrol subControl ) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,6 +30,9 @@ class QSK_EXPORT QskSubWindowSkinlet : public QskPopupSkinlet
|
||||||
Q_INVOKABLE QskSubWindowSkinlet( QskSkin* = nullptr );
|
Q_INVOKABLE QskSubWindowSkinlet( QskSkin* = nullptr );
|
||||||
~QskSubWindowSkinlet() override;
|
~QskSubWindowSkinlet() override;
|
||||||
|
|
||||||
|
virtual QSizeF sizeHint( const QskSkinnable*,
|
||||||
|
Qt::SizeHint, const QSizeF& ) const override;
|
||||||
|
|
||||||
QRectF subControlRect( const QskSkinnable*,
|
QRectF subControlRect( const QskSkinnable*,
|
||||||
const QRectF&, QskAspect::Subcontrol ) const override;
|
const QRectF&, QskAspect::Subcontrol ) const override;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue