create UI in constructor, no need to defer anymore
This commit is contained in:
parent
fcba898217
commit
fbdfb5aa19
|
@ -263,6 +263,34 @@ QskInputPanel::QskInputPanel( QQuickItem* parent ):
|
||||||
|
|
||||||
setFlag( ItemIsFocusScope, true );
|
setFlag( ItemIsFocusScope, true );
|
||||||
setTabFence( true );
|
setTabFence( true );
|
||||||
|
|
||||||
|
setAutoLayoutChildren( true );
|
||||||
|
|
||||||
|
auto& panelKeyData = keyData();
|
||||||
|
|
||||||
|
m_data->buttonsBox = new QskLinearBox( Qt::Vertical, this );
|
||||||
|
m_data->buttonsBox->setAutoAddChildren( true );
|
||||||
|
|
||||||
|
for( const auto& keyRow : panelKeyData )
|
||||||
|
{
|
||||||
|
QskLinearBox* rowBox = new QskLinearBox( Qt::Horizontal, m_data->buttonsBox );
|
||||||
|
rowBox->setAutoAddChildren( true );
|
||||||
|
|
||||||
|
for( const auto& keyData : keyRow )
|
||||||
|
{
|
||||||
|
if( !keyData.key )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
int keyIndex = m_data->keyTable[ m_data->mode ].indexOf( &keyData );
|
||||||
|
QskKeyButton* button = new QskKeyButton( keyIndex, this, rowBox );
|
||||||
|
|
||||||
|
button->installEventFilter( this );
|
||||||
|
|
||||||
|
m_data->keyButtons.append( button );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QskInputPanel::~QskInputPanel()
|
QskInputPanel::~QskInputPanel()
|
||||||
|
@ -614,12 +642,6 @@ void QskInputPanel::geometryChanged(
|
||||||
{
|
{
|
||||||
Inherited::geometryChanged( newGeometry, oldGeometry );
|
Inherited::geometryChanged( newGeometry, oldGeometry );
|
||||||
|
|
||||||
if( newGeometry != oldGeometry && !newGeometry.size().isNull() && !m_data->isUIInitialized )
|
|
||||||
{
|
|
||||||
createUI();
|
|
||||||
m_data->isUIInitialized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Q_EMIT keyboardRectChanged();
|
Q_EMIT keyboardRectChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -679,8 +701,8 @@ bool QskInputPanel::eventFilter( QObject* object, QEvent* event )
|
||||||
|
|
||||||
void QskInputPanel::updateLayout()
|
void QskInputPanel::updateLayout()
|
||||||
{
|
{
|
||||||
if( m_data->buttonsBox == nullptr )
|
if( geometry().isNull() )
|
||||||
return; // UI not initialized
|
return; // no need to calculate anything, will be called again
|
||||||
|
|
||||||
QMarginsF margins = marginsHint( Panel | QskAspect::Margin );
|
QMarginsF margins = marginsHint( Panel | QskAspect::Margin );
|
||||||
QRectF rect = keyboardRect().marginsRemoved( margins );
|
QRectF rect = keyboardRect().marginsRemoved( margins );
|
||||||
|
@ -703,40 +725,6 @@ void QskInputPanel::updateLayout()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskInputPanel::createUI()
|
|
||||||
{
|
|
||||||
// ### no need to defer:
|
|
||||||
// deferring the UI creation until we are visible so that the contentsRect() returns the proper value
|
|
||||||
|
|
||||||
setAutoLayoutChildren( true );
|
|
||||||
|
|
||||||
auto& panelKeyData = keyData();
|
|
||||||
|
|
||||||
m_data->buttonsBox = new QskLinearBox( Qt::Vertical, this );
|
|
||||||
m_data->buttonsBox->setAutoAddChildren( true );
|
|
||||||
|
|
||||||
for( const auto& keyRow : panelKeyData )
|
|
||||||
{
|
|
||||||
QskLinearBox* rowBox = new QskLinearBox( Qt::Horizontal, m_data->buttonsBox );
|
|
||||||
rowBox->setAutoAddChildren( true );
|
|
||||||
|
|
||||||
for( const auto& keyData : keyRow )
|
|
||||||
{
|
|
||||||
if( !keyData.key )
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
int keyIndex = m_data->keyTable[ m_data->mode ].indexOf( &keyData );
|
|
||||||
QskKeyButton* button = new QskKeyButton( keyIndex, this, rowBox );
|
|
||||||
|
|
||||||
button->installEventFilter( this );
|
|
||||||
|
|
||||||
m_data->keyButtons.append( button );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void QskInputPanel::updateUI()
|
void QskInputPanel::updateUI()
|
||||||
{
|
{
|
||||||
for( QskKeyButton* button : qskAsConst( m_data->keyButtons ) )
|
for( QskKeyButton* button : qskAsConst( m_data->keyButtons ) )
|
||||||
|
|
Loading…
Reference in New Issue