diff options
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java b/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java index 4e54f41143..d6b234226e 100644 --- a/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java @@ -198,6 +198,16 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate public void notifyObjectHide(int viewId) { + // If the object had accessibility focus, we need to clear it. + // Note: This code is mostly copied from + // AccessibilityNodeProvider::performAction, but we remove the + // focus only if the focused view id matches the one that was hidden. + if (m_focusedVirtualViewId == viewId) { + m_focusedVirtualViewId = INVALID_ID; + m_view.invalidate(); + sendEventForVirtualViewId(viewId, + AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED); + } invalidateVirtualViewId(viewId); } @@ -205,6 +215,7 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate { if (m_view == null) return; + m_focusedVirtualViewId = viewId; m_view.invalidate(); sendEventForVirtualViewId(viewId, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); |