sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx | 22 +++++++------ sw/qa/core/accessibilitycheck/data/AccessibilityTests1.odt |binary sw/source/core/access/AccessibilityCheck.cxx | 10 +---- sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx | 13 ------- 4 files changed, 16 insertions(+), 29 deletions(-)
New commits: commit 1b483ccbff6a67618f8c58cf1b53fd31edf92733 Author: Balazs Varga <balazs.varga.ext...@allotropia.de> AuthorDate: Thu Jun 12 12:47:06 2025 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Wed Jun 18 10:00:43 2025 +0200 tdf#166970 sw a11y fix missing no_alt warnings from sidebar Not all kind of shape objects were checked for "No alt text", but only a few one. Let's extend it with the other possible shape types in this patch. Change-Id: Id3bcf4992fc8f281ee4a32c569cba3590ae6c002 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186413 Tested-by: Jenkins Reviewed-by: Balazs Varga <balazs.varga.ext...@allotropia.de> (cherry picked from commit 8a5172f61d703e9ab28329466e3d42a0adb4e987) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186540 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx b/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx index b2a8aae20e2f..d8093e57a4e8 100644 --- a/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx +++ b/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx @@ -47,7 +47,7 @@ CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testTableSplitMergeAndAltText) sw::AccessibilityCheck aCheck(pDoc); aCheck.check(); auto& aIssues = aCheck.getIssueCollection().getIssues(); - CPPUNIT_ASSERT_EQUAL(size_t(6), aIssues.size()); + CPPUNIT_ASSERT_EQUAL(size_t(7), aIssues.size()); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::NO_ALT_GRAPHIC, aIssues[0]->m_eIssueID); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueLevel::ERRORLEV, aIssues[0]->m_eIssueLvl); @@ -58,6 +58,8 @@ CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testTableSplitMergeAndAltText) CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueLevel::WARNLEV, aIssues[4]->m_eIssueLvl); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::NO_ALT_SHAPE, aIssues[5]->m_eIssueID); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueLevel::ERRORLEV, aIssues[5]->m_eIssueLvl); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::NO_ALT_SHAPE, aIssues[6]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueLevel::ERRORLEV, aIssues[6]->m_eIssueLvl); } CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckParagraphIssues) @@ -249,17 +251,19 @@ CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testCheckTabsFormatting) sw::AccessibilityCheck aCheck(pDoc); aCheck.check(); auto& aIssues = aCheck.getIssueCollection().getIssues(); - CPPUNIT_ASSERT_EQUAL(size_t(10), aIssues.size()); + CPPUNIT_ASSERT_EQUAL(size_t(20), aIssues.size()); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_TABS, aIssues[0]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[1]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_TABS, aIssues[2]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[3]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_TABS, aIssues[4]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[5]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_TABS, aIssues[6]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::NO_ALT_SHAPE, aIssues[1]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::NO_ALT_SHAPE, aIssues[2]->m_eIssueID); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[7]->m_eIssueID); CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_TABS, aIssues[8]->m_eIssueID); - CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[9]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[10]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_TABS, aIssues[11]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[13]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_TABS, aIssues[14]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[17]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::TEXT_TABS, aIssues[18]->m_eIssueID); + CPPUNIT_ASSERT_EQUAL(sfx::AccessibilityIssueID::DIRECT_FORMATTING, aIssues[19]->m_eIssueID); } //tdf#156550 - Accessibility sidebar complains about TOC hyperlinks diff --git a/sw/qa/core/accessibilitycheck/data/AccessibilityTests1.odt b/sw/qa/core/accessibilitycheck/data/AccessibilityTests1.odt index e6dffec6225e..219e6d132881 100644 Binary files a/sw/qa/core/accessibilitycheck/data/AccessibilityTests1.odt and b/sw/qa/core/accessibilitycheck/data/AccessibilityTests1.odt differ diff --git a/sw/source/core/access/AccessibilityCheck.cxx b/sw/source/core/access/AccessibilityCheck.cxx index 58e085ab5ce6..41d6783d36bd 100644 --- a/sw/source/core/access/AccessibilityCheck.cxx +++ b/sw/source/core/access/AccessibilityCheck.cxx @@ -2740,12 +2740,8 @@ void AccessibilityCheck::checkObject(SwNode* pCurrent, SwFrameFormat const& rFra pIssue->setNode(pCurrent); } - const SdrObjKind nObjId = pObject->GetObjIdentifier(); - const SdrInventor nInv = pObject->GetObjInventor(); - - if (nObjId == SdrObjKind::CustomShape || nObjId == SdrObjKind::Text - || nObjId == SdrObjKind::Media || nObjId == SdrObjKind::Group - || nObjId == SdrObjKind::Graphic || nInv == SdrInventor::FmForm) + // Graphic, OLE for alt (title) text already checked in NoTextNodeAltTextCheck + if (pObject->GetObjIdentifier() != SdrObjKind::SwFlyDrawObjIdentifier) { if (!pObject->IsDecorative() && pObject->GetTitle().isEmpty() && pObject->GetDescription().isEmpty()) @@ -2756,7 +2752,7 @@ void AccessibilityCheck::checkObject(SwNode* pCurrent, SwFrameFormat const& rFra sfx::AccessibilityIssueID::NO_ALT_SHAPE, sfx::AccessibilityIssueLevel::ERRORLEV); // Set FORM Issue for Form objects because of the design mode - if (nInv == SdrInventor::FmForm) + if (pObject->GetObjInventor() == SdrInventor::FmForm) pIssue->setIssueObject(IssueObject::FORM); else pIssue->setIssueObject(IssueObject::SHAPE); commit b297dc8b22001e34f1caad0c4810329610716300 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Jun 12 18:23:27 2025 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Wed Jun 18 10:00:29 2025 +0200 tdf#166968 A11Y sidebar hides direct formatting issues after PDF export Revert "prevent accessibility check from locking up the UI" This reverts commit e081e03342ca8c262403bd9febdc01151a2935be. Since it seems to cause problems. Change-Id: I278e51260bc921ff14ab6474a12bedf073ddc3dc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186427 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> (cherry picked from commit d73330a77fbf0b5d975d713fb28cac2a7be39495) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186448 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx b/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx index 701391081e6b..e495998871fa 100644 --- a/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx +++ b/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx @@ -148,12 +148,6 @@ void AccessibilityCheckLevel::addEntryForGroup( std::shared_ptr<sfx::AccessibilityIssue> const& pIssue) { auto nGroupIndex = size_t(eGroup); - // prevent the UI locking up forever, this is effectively an O(n^2) situation, given the way the UI additions work - if (m_aEntries[nGroupIndex].size() > 500) - { - SAL_WARN("sw", "too many a11y issues, not adding to panel"); - return; - } auto xEntry = std::make_unique<AccessibilityCheckEntry>(m_xBoxes[nGroupIndex].get(), pIssue); m_xBoxes[nGroupIndex]->reorder_child(xEntry->get_widget(), rIndices[nGroupIndex]++); m_aEntries[nGroupIndex].push_back(std::move(xEntry)); @@ -291,13 +285,6 @@ void A11yCheckIssuesPanel::addEntryForGroup(AccessibilityCheckGroups eGroup, std::vector<std::vector<sal_Int32>>& rIndices, std::shared_ptr<sfx::AccessibilityIssue> const& pIssue) { - // prevent the UI locking up forever, this is effectively an O(n^2) situation, given the way the UI additions work - if (m_aLevelEntries[0]->getEntrySize(eGroup) + m_aLevelEntries[1]->getEntrySize(eGroup) > 500) - { - SAL_WARN("sw", "too many a11y issues, not adding to panel"); - return; - } - size_t nLevel = static_cast<size_t>(pIssue->m_eIssueLvl); m_aLevelEntries[nLevel]->addEntryForGroup(eGroup, rIndices[nLevel], pIssue); }