Bug 39606 - JAWS 4.5 not reading tabs
Summary: JAWS 4.5 not reading tabs
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: SWT (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Carolyn MacLeod CLA
QA Contact:
URL:
Whiteboard:
Keywords: accessibility
: 15779 (view as bug list)
Depends on:
Blocks:
 
Reported: 2003-07-03 11:15 EDT by Tod Creasey CLA
Modified: 2004-02-11 16:34 EST (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tod Creasey CLA 2003-07-03 11:15:40 EDT
R3.0 v2003627

The titles of tabs are not being read by JAWS 4.51 in build v20030627. However 
WindowEyes works fine so I suspect an issue with JAWS itself.
Comment 1 Carolyn MacLeod CLA 2003-12-08 15:49:23 EST
This is because we had to subclass the Windows control in order to work around 
a Windows problem where the tab control redraws on resize, causing fairly bad 
flashing of any child controls (in our subclass, we turn off the HREDRAW and 
VREDRAW control style bits).

Subclassing requires that you provide a new Window Class Name. So JAWS is 
looking for a window class named "SysTabControl32", but the name of our 
control is "SWT_SysTabControl32". The only difference is that those 2 bits are 
turned off.

I will investigate to see if I can find a way to fool Windows into thinking 
our control's name is actually "SysTabControl" or "SysTabControl32", however, 
in the meantime, there is a JAWS work-around that does work. With Eclipse and 
JAWS both running, give focus to one of the tabs of a Tab control (you may 
have to use ctrl+tab and/or shift+tab to get there). Then type "INSERT + 7". 
In the "New Class" field of the dialog that opens, make sure it 
says "SWT_SysTabControl32". Select "TabControl" in the "Assign to:" list, and 
the click the "Add Class" button. Then press "OK". This tells JAWS to treat 
anything named "SWT_SysTabControl32" as if it was a system tab control (which 
it is...).
Comment 2 Carolyn MacLeod CLA 2003-12-11 17:11:54 EST
OK, I have a fix. On Windows, you can register a local window class (ours) 
with the same name as a global class (SysTabControl32). According to the doc, 
this will not affect other applications or even processes that create a 
control with that class name - they just get the original global class. I was 
worried at first that other native code that was running *in-process* (i.e. 
native dialogs like the print dialog have a SysTabControl32, or maybe Active X 
controls that happen to use SysTabControl32) might get our subclassed window 
class. This would be bad because since we turn off the HREDRAW and VREDRAW 
control style bits, they would get cheese on resize (we don't because we work 
around it in the window messages). But I tested this possibility really well 
and didn't find a problem, and I read the fine print of the Windows doc, and 
it looks like any other non-SWT in-process code is getting the original 
class... probably because they use a different module instance than we do when 
they create the control. (i.e. They use the common controls dll, and we use 
the swt dll). Anyhow, the bottom line is that Window-Eyes and JAWS now read 
TabFolder tabs.

Fixed as of > 20031211.
Comment 3 Carolyn MacLeod CLA 2004-02-11 16:34:08 EST
*** Bug 15779 has been marked as a duplicate of this bug. ***