Make NVDA read aloud stuff from a Qt app again.
authorJan-Arve Saether <jan-arve.saether@nokia.com>
Tue, 24 Apr 2012 11:20:07 +0000 (13:20 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 24 Apr 2012 17:41:05 +0000 (19:41 +0200)
Previously, NVDA did not read aloud anything from a Qt app.

Change-Id: Ie738e7e7d7acc54f45fab9195adc09bfde930174
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
src/plugins/platforms/windows/accessible/iaccessible2.cpp

index ddab3cb..132a04d 100644 (file)
@@ -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();