summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/windows/accessible/iaccessible2.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/plugins/platforms/windows/accessible/iaccessible2.cpp b/src/plugins/platforms/windows/accessible/iaccessible2.cpp
index ddab3cb0f2..132a04dd9c 100644
--- a/src/plugins/platforms/windows/accessible/iaccessible2.cpp
+++ b/src/plugins/platforms/windows/accessible/iaccessible2.cpp
@@ -1363,15 +1363,16 @@ HRESULT STDMETHODCALLTYPE QWindowsIA2Accessible::QueryService(REFGUID guidServic
Q_UNUSED(guidService);
*iface = 0;
accessibleDebug("QWindowsIA2Accessible::QS(): %s", IIDToString(riid).constData());
- if (riid == IID_IAccessible || riid == IID_IUnknown || riid == IID_IDispatch) {
- *iface = static_cast<IAccessible*>(this);
- } else if (/*guidService == IID_IAccessible && */riid == IID_IAccessible2) {
+
+ if (guidService == IID_IAccessible && riid == IID_IAccessible2) {
+ // The conditions for entering here should be ok (from _dicoveringInterfaces in IAccessible2.idl)
*iface = static_cast<IAccessible2*>(this);
- } else if (riid == IID_IAccessibleApplication) {
+ } else if (guidService == IID_IAccessible && (riid == IID_IAccessible || riid == IID_IUnknown || riid == IID_IDispatch)) {
+ // The above conditions works with AccProbe and NVDA.
+ *iface = static_cast<IAccessible*>(this);
+ } else if (riid == IID_IAccessibleApplication) {
*iface = new AccessibleApplication;
return S_OK;
- } else {
- QueryInterface(riid, iface);
}
if (*iface) {
AddRef();