fix focus locking

This commit is contained in:
IlyaShurupov 2024-10-20 12:01:42 +03:00
parent fcd5eb2d2a
commit f68f91f7d5
2 changed files with 26 additions and 8 deletions

View file

@ -76,10 +76,19 @@ void UpdateManager::handleFocusChanges(Widget* root, EventHandler& events) {
mInFocusWidget = nullptr;
if (!mFocusLockWidget) {
findFocusWidget(root, &mInFocusWidget, events.getPointer());
} else {
mInFocusWidget = mFocusLockWidget;
findFocusWidget(root, &mInFocusWidget, events.getPointer());
if (mFocusLockWidget) {
bool hasLockedWidget = false;
for (auto iter = mInFocusWidget; iter; iter = iter->mParent) {
if (iter == mFocusLockWidget) {
hasLockedWidget = true;
break;
}
}
if (!hasLockedWidget) {
mInFocusWidget = mFocusLockWidget;
}
}
// if (mInFocusWidget == prevFocus) return;