summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp
diff options
context:
space:
mode:
authorAndre de la Rocha <andre.rocha@qt.io>2018-07-24 16:26:28 +0200
committerAndre de la Rocha <andre.rocha@qt.io>2018-07-25 08:50:13 +0000
commit54e117d27d4015892ede52c11ac41f68ae8ea6a6 (patch)
treecfb881bd7936416b1e80a28e77d467eeb3ccac48 /src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp
parentf493324066e1b1763929799a32eacd1e567e9a23 (diff)
WinRT: Fix invisible element being included in the UI Automation tree
When an element is not visible then it should not be shown in the element tree at all when using tools like Inspect. Also, the IsOffscreen property was hardcoded to false instead of reflecting the actual object offscreen state. Task-number: QTBUG-69537 Change-Id: Ic8f55486685837cf5e21b3499085bb669c1dc6c8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp')
-rw-r--r--src/plugins/platforms/winrt/uiautomation/qwinrtuiamainprovider.cpp14
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;
}