diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2019-12-07 13:12:12 +0100 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2019-12-26 11:34:25 +0100 |
commit | 1cafd1e50cbed6cf25730e03dc238bf687de5621 (patch) | |
tree | ea52ab05b7b4c52d05093f62755b7f8ea8ecb266 | |
parent | b9973ff6a17ff4c5b66be1835e5820bf6db3d507 (diff) |
acc. check: add check for Tables
Tables shouldn't use splitted or merge cells.
Change-Id: Ife6726413d9dd1ead098c081e03f4f82540f1012
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85827
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
-rw-r--r-- | sw/source/core/access/AccessibilityCheck.cxx | 55 | ||||
-rw-r--r-- | sw/source/core/inc/AccessibilityCheck.hxx | 1 |
2 files changed, 56 insertions, 0 deletions
diff --git a/sw/source/core/access/AccessibilityCheck.cxx b/sw/source/core/access/AccessibilityCheck.cxx index 870f67169e11..31cd12c8b07e 100644 --- a/sw/source/core/access/AccessibilityCheck.cxx +++ b/sw/source/core/access/AccessibilityCheck.cxx @@ -19,6 +19,55 @@ namespace { OUString sNoAlt("No alt text for graphic '%OBJECT_NAME%'"); +OUString sTableMergeSplit("Table '%OBJECT_NAME%' contains merges or splits"); +} + +void AccessibilityCheck::checkTableNode(SwTableNode* pTableNode) +{ + if (!pTableNode) + return; + + SwTable const& rTable = pTableNode->GetTable(); + if (rTable.IsTableComplex()) + { + OUString sName = rTable.GetTableStyleName(); + svx::AccessibilityIssue aIssue; + aIssue.m_aIssueText = sTableMergeSplit.replaceAll("%OBJECT_NAME%", sName); + m_aAccessibilityIssueCollection.push_back(aIssue); + } + else + { + if (rTable.GetTabLines().size() > 1) + { + int i = 0; + size_t nFirstLineSize = 0; + bool bAllColumnsSameSize = true; + + for (SwTableLine const* pTableLine : rTable.GetTabLines()) + { + if (i == 0) + { + nFirstLineSize = pTableLine->GetTabBoxes().size(); + } + else + { + size_t nLineSize = pTableLine->GetTabBoxes().size(); + if (nFirstLineSize != nLineSize) + { + bAllColumnsSameSize = false; + } + } + i++; + } + if (!bAllColumnsSameSize) + { + OUString sName = rTable.GetTableStyleName(); + svx::AccessibilityIssue aIssue; + aIssue.m_aIssueText = sTableMergeSplit.replaceAll("%OBJECT_NAME%", sName); + m_aAccessibilityIssueCollection.push_back(aIssue); + } + } + } } // Check NoTextNodes: Graphic, OLE @@ -73,6 +122,12 @@ void AccessibilityCheck::check() if (pNoTextNode) checkNoTextNode(pNoTextNode); } + if (pNode->GetNodeType() & SwNodeType::Table) + { + SwTableNode* pTableNode = pNode->GetTableNode(); + if (pTableNode) + checkTableNode(pTableNode); + } } } diff --git a/sw/source/core/inc/AccessibilityCheck.hxx b/sw/source/core/inc/AccessibilityCheck.hxx index 4648b06dce70..5d268856d67e 100644 --- a/sw/source/core/inc/AccessibilityCheck.hxx +++ b/sw/source/core/inc/AccessibilityCheck.hxx @@ -32,6 +32,7 @@ public: } void check(); + void checkTableNode(SwTableNode* pTableNode); void checkNoTextNode(SwNoTextNode* pNoTextNode); void checkObject(SdrObject* pObject); }; |