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);
 }

Reply via email to