heightForWidth/widthForHeight improved

This commit is contained in:
Uwe Rathmann 2018-05-30 11:05:02 +02:00
parent 4eb74f5b71
commit 62de379794
1 changed files with 3 additions and 38 deletions

View File

@ -639,33 +639,13 @@ void QskInputPanel::keyReleaseEvent( QKeyEvent* event )
qreal QskInputPanel::heightForWidth( qreal width ) const qreal QskInputPanel::heightForWidth( qreal width ) const
{ {
/*
This code looks like as it could be generalized
and moved to QskLinearBox. TODO ...
*/
const auto margins = this->margins(); const auto margins = this->margins();
width -= margins.left() + margins.right(); width -= margins.left() + margins.right();
const auto padding = innerPadding( const auto padding = innerPadding( Panel, QSizeF( width, width ) );
Panel, QSizeF( width, width ) );
width -= padding.left() + padding.right(); width -= padding.left() + padding.right();
qreal height = m_data->keyboard->heightForWidth( width ); qreal height = m_data->layout->heightForWidth( width );
const QskControl* controls[] =
{ m_data->prompt, m_data->inputProxy, m_data->predictionBar };
for ( auto control : controls )
{
if ( control->isVisible() )
{
height += m_data->layout->spacing();
height += control->sizeHint().height();
}
}
height += padding.top() + padding.bottom(); height += padding.top() + padding.bottom();
height += margins.top() + margins.bottom(); height += margins.top() + margins.bottom();
@ -676,26 +656,11 @@ qreal QskInputPanel::heightForWidth( qreal width ) const
qreal QskInputPanel::widthForHeight( qreal height ) const qreal QskInputPanel::widthForHeight( qreal height ) const
{ {
const auto margins = this->margins(); const auto margins = this->margins();
height -= margins.top() + margins.bottom(); height -= margins.top() + margins.bottom();
const auto padding = innerPadding( const auto padding = innerPadding( Panel, QSizeF( height, height ) );
Panel, QSizeF( height, height ) );
height -= padding.top() + padding.bottom(); height -= padding.top() + padding.bottom();
const QskControl* controls[] =
{ m_data->prompt, m_data->inputProxy, m_data->predictionBar };
for ( auto control : controls )
{
if ( control->isVisible() )
{
height -= m_data->layout->spacing();
height -= control->sizeHint().height();
}
}
qreal width = m_data->keyboard->widthForHeight( height ); qreal width = m_data->keyboard->widthForHeight( height );
width += padding.left() + padding.right(); width += padding.left() + padding.right();