Skip to content

Commit d5a3383

Browse files
_UIAHandler.UIAHandler.isUIAWindow: normalize the window class name before checking for it in badUIAWindowClassList. Also add all the possible RichEdit window classes to badUIAWindowClassList so that UIA is no longer used for them. Windows 8 introduces UIA support for RichEdit which is wonderful, but for now causes some problems in NVDA -- more our fault than Microsofts. For now we disable support and fall back to our older win32 RichEdit window message code. this will also allow the poedit appModule to work on Windows 8. It also stops double selection announcement in RichEdit documents in Windows 8
1 parent 587abfc commit d5a3383

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

source/_UIAHandler.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
"CommonPlacesWrapperWndClass",
2828
"SysMonthCal32",
2929
"SUPERGRID", #Outlook 2010 message list
30+
"RichEdit",
31+
"RichEdit20",
32+
"RICHEDIT50W",
3033
]
3134

3235
UIAControlTypesToNVDARoles={
@@ -202,9 +205,10 @@ def isUIAWindow(self,hwnd):
202205
now=time.time()
203206
v=self.UIAWindowHandleCache.get(hwnd,None)
204207
if not v or (now-v[1])>0.5:
208+
import NVDAObjects.window
205209
if windll.kernel32.GetCurrentProcessId()==winUser.getWindowThreadProcessID(hwnd)[0]:
206210
isUIA=False
207-
elif winUser.getClassName(hwnd) in badUIAWindowClassNames:
211+
elif NVDAObjects.window.Window.normalizeWindowClassName(winUser.getClassName(hwnd)) in badUIAWindowClassNames:
208212
isUIA=False
209213
else:
210214
isUIA=windll.UIAutomationCore.UiaHasServerSideProvider(hwnd)

0 commit comments

Comments
 (0)