Qtcalculations only for Qt::MinimumSize

This commit is contained in:
Uwe Rathmann 2022-07-07 08:39:29 +02:00
parent f6a4e8d2d6
commit d89adc4459
1 changed files with 28 additions and 25 deletions

View File

@ -21,31 +21,6 @@ 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
{ {
@ -210,4 +185,32 @@ QRectF QskSubWindowSkinlet::titleRect(
return rect; return rect;
} }
QSizeF QskSubWindowSkinlet::sizeHint( const QskSkinnable* skinnable,
Qt::SizeHint which, const QSizeF& ) const
{
using Q = QskSubWindow;
if ( which != Qt::MinimumSize )
return QSizeF();
const auto subWindow = static_cast< const QskSubWindow* >( skinnable );
auto hint = subWindow->strutSizeHint( Q::Panel );
if ( subWindow->decorations() != Q::NoDecoration )
{
const auto size = subWindow->strutSizeHint( Q::TitleBarPanel );
hint.rwidth() = qMax( hint.width(), size.width() );
if ( size.height() >= 0 )
{
hint.rheight() = qMax( hint.height(), 0.0 );
hint.rheight() += size.height();
}
}
return hint;
}
#include "moc_QskSubWindowSkinlet.cpp" #include "moc_QskSubWindowSkinlet.cpp"