summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2019-12-07 13:12:12 +0100
committerTomaž Vajngerl <quikee@gmail.com>2019-12-26 11:34:25 +0100
commit1cafd1e50cbed6cf25730e03dc238bf687de5621 (patch)
treeea52ab05b7b4c52d05093f62755b7f8ea8ecb266
parentb9973ff6a17ff4c5b66be1835e5820bf6db3d507 (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.cxx55
-rw-r--r--sw/source/core/inc/AccessibilityCheck.hxx1
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);
};