nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.08k stars 626 forks source link

Excel 365 column/row headings created by NVDA+Shift+C and NVDA+Shift+R shortcuts do not speak in JAWS as indicated in the User Guide. #11801

Open gmchev opened 3 years ago

gmchev commented 3 years ago

The user guide claims that row heading can be set with NVDA and will be then read by JAWS.

Steps to reproduce:

  1. Open a small spreadsheet with several columns and rows.
  2. Use Insert+Shift+C to specify where the column headings start.
  3. Use Insert+Shift+R to specifuy where the row headings start.
  4. Close the spreadsheet.
  5. Open the spreadsheet in JAWS.

Actual behavior:

The defined column and row headings will not speak in JAWS. This would be ok except the NVDA User Guide says that they will speak in JAWS.

Expected behavior:

System configuration Laptop

NVDA installed/portable/running from source:

NVDA Installed

NVDA version:

2020.3

Windows version:

Windows10 Version 1909

Name and version of other software in use when reproducing the issue:

Excel 365

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

No.

If addons are disabled, is your problem still occuring?

Did you try to run the COM registry fixing tool in NVDA menu / tools?

No

If JAWS compatibility is required, enter the Defined Names headings manually according to the JAWS format and the headings will speak in both NVDA and JAWS. IF you only require the headings to speak in NVDA then the NVDA shortcuts will work.

Adriani90 commented 3 years ago

Please fill the issue template accordingly. It seems both methods work with NVDA, so this seems rather a jaws issue. I am closing this issue because the description is not clear enough.

gmchev commented 3 years ago

I’m not sure how to be more descriptive. Here are some steps to follow.

  1. Open a small spreadsheet with several columns and rows.
  2. Use Insert+Shift+C to specify where the column headings start.
  3. Use Insert+Shift+R to specifuy where the row headings start.
  4. Close the spreadsheet.
  5. Open the spreadsheet in JAWS.
  6. The defined column and row headings will not speak in JAWS. This would be ok except the NVDA User Guide says that they will speak in JAWS.
Adriani90 commented 3 years ago

Hello, thanks for this steps to reproduce. Now I understand. I think the str is now clear enough. I am reopening

feerrenrut commented 3 years ago

Hi @gmchev welcome to the NVDA project and thanks for opening an issue. In future please fill out the issue template, when you create a new issue on Github the edit field is pre-populated with a number of headings for information required (a heading starts with a hash (#) symbol. This information is very helpful for us in understanding what the problem is.

This seems like this issue should be raised with JAWS support, or perhaps we should remove the reference to JAWS from the user guide?

If JAWS compatibility is required, enter the Defined Names headings manually according to the JAWS format and the headings will speak in both NVDA and JAWS. IF you only require the headings to speak in NVDA then the NVDA shortcuts will work.

From the initial description, could you expand on the following.

Perhaps JAWS has changed their format for heading definitions?

CyrilleB79 commented 3 years ago

And also what are the languages of Excel UI and of Jaws? I remember some years ago that Jaws was using either localized and not localized cell range naming to define titles. But making a quick test recently, it seems it does not use anymore cell range naming to define title. So I imagine they changed the way they define title. Any more thorough testing would be required however.

gmchev commented 3 years ago

Hello Reef:

Sorry about the template. I remember filling in those fields so not sure why they are not appearing.

Personally, I think NVDA does a better job using Define Names for Excel column/row headers so maybe all you should do is remove the reference from the user guide about JAWS compatibility. I’m not sure the exact format JAWS uses because they only tell you what to do to set headings not the spec for them. Anyway, I have attached to XLSX documents each with the same cell data and one defined with JAWS procedure and the other with NVDA shortcuts. You can examine the Define Names and perhaps determine more than I am able to. JAWS Define Names are like this:

ColumnTitle..Z99

RowTitle..Z99

Where Z99 is a cell reference that marks the bottom right corner of the region the headings apply to.

NVDA Define Names look like this:

ColumnTitle_,string of random chars>

RowTitle_

Which JAWS doesn’t recognize but curiously NVDA recognizes the JAWS Define Names.

There is one more possibility for JAWS. If you place focus on the cell that intersects the column and row headers (in the case of the attached files, this would be cell A1) then you can Define Name:

Title..Z99

And that will specify that row 1 are the column titles and column A are the row titles. Even this format is honored by NVDA.

I wouldn’t call this issue a bug just misleading in the NVDA user guide.

feerrenrut commented 3 years ago

Thanks @gmchev, I think this is enough for someone to investigate further. My preference would be for maximum compatibility, but if there are reasons why we can't achieve that, we can just update the user guide. NV Access won't be working on this as a priority, but I'll be happy to accept a PR to address it.

FalkoBabbage commented 3 years ago

I checked today what Jaws is doing when defining a column header and it does not use the internal Define Name feature in excel anymore. It now generates a .jsi file in the users Appdata with the relevant information with the name of the excel sheet. I'm not sure why they changed it because now this information is not coupled to the actual excel sheet anymore.

MarcoZehe commented 3 years ago

This is how they have always done it if you didn't define the column/row headers yourself using the "Define Name" feature. They never wrote it to the Excel sheet AFAIK, they always created that JSI file if you defined using either the shortcuts or the Insert+V dialog. So the only way you can actually make this work cross-screen-reader is by using the Define Name feature manually in Excel and give that ColumnTitle or RowTitle or just Title name yourself. Then, both JAWS and NVDA should use it, if in JAWS, there is no override via JSI file.