diff options
Diffstat (limited to 'src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp')
-rw-r--r-- | src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp b/src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp index 99efe27c34..6f3ad6dcd2 100644 --- a/src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp +++ b/src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp @@ -230,6 +230,14 @@ void QWinRTUiaMainProvider::notifyFocusChange(QAccessibleEvent *event) } } +void QWinRTUiaMainProvider::notifyVisibilityChange(QAccessibleEvent *event) +{ + if (QAccessibleInterface *accessible = event->accessibleInterface()) { + QAccessible::Id accid = idForAccessible(accessible); + QWinRTUiaMetadataCache::instance()->load(accid); + } +} + void QWinRTUiaMainProvider::notifyStateChange(QAccessibleStateChangeEvent *event) { if (QAccessibleInterface *accessible = event->accessibleInterface()) { @@ -517,7 +525,8 @@ HRESULT STDMETHODCALLTYPE QWinRTUiaMainProvider::GetChildrenCore(IVector<Automat if (QAccessibleInterface *childAcc = accessible->child(i)) { QAccessible::Id childId = idForAccessible(childAcc); QWinRTUiaMetadataCache::instance()->load(childId); - (*ptrChildren)->append(childId); + if (!childAcc->state().invisible) + (*ptrChildren)->append(childId); } } } @@ -683,7 +692,8 @@ HRESULT STDMETHODCALLTYPE QWinRTUiaMainProvider::IsOffscreenCore(boolean *return if (!returnValue) return E_INVALIDARG; - *returnValue = false; + QSharedPointer<QWinRTUiaControlMetadata> metadata = QWinRTUiaMetadataCache::instance()->metadataForId(id()); + *returnValue = (metadata->state().offscreen != 0); return S_OK; } |