https://bugs.documentfoundation.org/show_bug.cgi?id=146307
--- Comment #4 from Michael Weghorn <[email protected]> --- (In reply to Richard B. McDonald from comment #0) > With Calc, it seems that the full accessibility hierarchy of a cell > in Calc is being announced any time a change is made to that cell (e.g., > entering a number, changing the format, etc.). During a first analysis, I realized that it's not actually the whole hierarchy (any more) that is being announced with a current development version (e.g. the one used in screencast attachment 177025), while that was the case in LibreOffice 7.2, for which Richard has originally reported this issue. I have attached another screencast for LO 7.2: attachment 177517 For LO 7.2, it says for example (around second 22 in attachment 177025, manual transcript): "Untitled 2 - LibreOffice Calc, Untitled 2 LibreOffice spreadsheets document editable, sheet Sheet1 table editable, D8" For current master, it only says (around second 26 in attachment 177025): "sheet Sheet1 table editable, G12". That means, only a single additional hierarchy level is spoken in addition to the cell, the spreadsheet itself: "sheet Sheet1 table editable" So there's some improvement. Bibisecting points to this commit: commit 836a226205df9e76e77d26af80f402de7b876d61 Author: Michael Weghorn <[email protected]> Date: Thu Sep 16 07:11:47 2021 +0100 tdf#100086 wina11y: Don't delete a11y object for removed cell right away >From a first analysis, the reason for the spreadsheet still being announced is probably that there are two different a11y objects for the cell that just gets focus and the one that is edited. The one that "just has focus" has the spreadsheet as a parent object, the one that is edited doesn't, but has the document as parent (which is one level further up in the hierarchy), so when switching from the latter to the former, that additional level is announced by NVDA. >From what I can see, the a11y object for the editable cell is created here (comment about the hierarchy added by myself while looking into this): --- a/sc/source/ui/Accessibility/AccessibleDocument.cxx +++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx @@ -1503,7 +1503,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) ScViewData& rViewData = mpViewShell->GetViewData(); const EditEngine* pEditEng = rViewData.GetEditView(meSplitPos)->GetEditEngine(); if (pEditEng && pEditEng->IsUpdateLayout()) - { + { // note how the ScAccessibleEditObject is created here, and gets the document as parent, not the spreadsheet mpTempAccEdit = new ScAccessibleEditObject(this, rViewData.GetEditView(meSplitPos), mpViewShell->GetWindowByPos(meSplitPos), GetCurrentCellName(), ScResId(STR_ACC_EDITLINE_DESCR), ScAccessibleEditObject::CellInEditMode); So, one approach might be to set the spreadsheet as parent for the corresponding 'ScAccessibleEditObject' as well. However, that would need more work, since just doing so in this place breaks things elsewhere. Some things currently rely on the implementation as it is. Given this will probably take more time to look into, I'll leave that aside for now (but *might* come back to it at some point in time in the future). -- You are receiving this mail because: You are the assignee for the bug.
