Qtcalculations only for Qt::MinimumSize
This commit is contained in:
parent
f6a4e8d2d6
commit
d89adc4459
|
@ -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"
|
||||||
|
|
Loading…
Reference in New Issue