diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2019-12-07 13:12:12 +0100 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2019-12-25 13:39:16 +0100 |
commit | c2fbc7ae2bb4defe709bdaf379f78f7c0387e569 (patch) | |
tree | f70180eeabe41bc353b30cd8560e1b4c4e0d2e83 | |
parent | 7c3f1d6afced8f32a4c4f56ce561a0b5dae45d2a (diff) |
acc. check: add check for Tables
Tables shouldn't use splitted or merge cells.
Change-Id: Ife6726413d9dd1ead098c081e03f4f82540f1012
-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 f327105dc864..2f724d17b102 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(); + AccessibilityCheckResult aResult; + aResult.m_aIssueText = sTableMergeSplit.replaceAll("%OBJECT_NAME%", sName); + m_aAccessibilityCheckResultCollection.push_back(aResult); + } + 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(); + AccessibilityCheckResult aResult; + aResult.m_aIssueText = sTableMergeSplit.replaceAll("%OBJECT_NAME%", sName); + m_aAccessibilityCheckResultCollection.push_back(aResult); + } + } + } } // 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 8a55142c63dd..2540b3063be5 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); }; |