workaround for setting the focus with Qt::PopupFocusReason
This commit is contained in:
parent
e2ca55819e
commit
79c53bb1c7
@ -151,6 +151,25 @@ QQuickItem* qskNearestFocusScope( const QQuickItem* item )
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void qskForceActiveFocus( QQuickItem* item, Qt::FocusReason reason )
|
||||
{
|
||||
/*
|
||||
For unknown reasons Qt::PopupFocusReason is blocked inside of
|
||||
QQuickItem::setFocus and so we can't use QQuickItem::forceActiveFocus
|
||||
*/
|
||||
|
||||
if ( item == nullptr || item->window() == nullptr )
|
||||
return;
|
||||
|
||||
auto wp = QQuickWindowPrivate::get( item->window() );
|
||||
|
||||
while ( const auto scope = qskNearestFocusScope( item ) )
|
||||
{
|
||||
wp->setFocusInScope( scope, item, reason );
|
||||
item = scope;
|
||||
}
|
||||
}
|
||||
|
||||
void qskUpdateInputMethod( const QQuickItem* item, Qt::InputMethodQueries queries )
|
||||
{
|
||||
auto inputMethod = QGuiApplication::inputMethod();
|
||||
|
@ -260,6 +260,8 @@ QSK_EXPORT QRectF qskItemGeometry( const QQuickItem* );
|
||||
QSK_EXPORT void qskSetItemGeometry( QQuickItem*, const QRectF& );
|
||||
|
||||
QSK_EXPORT QQuickItem* qskNearestFocusScope( const QQuickItem* );
|
||||
QSK_EXPORT void qskForceActiveFocus( QQuickItem*, Qt::FocusReason );
|
||||
|
||||
QSK_EXPORT QList< QQuickItem* > qskPaintOrderChildItems( const QQuickItem* );
|
||||
|
||||
QSK_EXPORT void qskUpdateInputMethod( const QQuickItem*, Qt::InputMethodQueries );
|
||||
|
Loading…
x
Reference in New Issue
Block a user