summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBalazs Varga <balazs.varga991@gmail.com>2019-01-18 11:20:07 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2019-02-10 05:04:27 +0100
commit16b8cb5e1bce0098b253395030b3c8ae9f5ae39a (patch)
treebf51ab49ac7987e5a4033d76c0d395c9275acfec
parent69b13a0028c1d09f1c267775879685e18a498766 (diff)
tdf#122800 Chart view: Textbreak of X axis labels
Do not break the word into individual letters below each other in the X axis labels. Keep the default 45 degree (even if the textbreak is true) rotation if there is no enough space for a single word between two tickmark. (cherry picked from commit 82913d296709ccf4d4f35d53835bcbf49286ba28) Change-Id: I6f11e55b7ee8373210c1c417e64d552a6cd89812 Reviewed-on: https://gerrit.libreoffice.org/67546 Tested-by: Jenkins Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--chart2/source/view/axes/VCartesianAxis.cxx7
-rwxr-xr-xsw/qa/extras/layout/data/tdf122800.odtbin0 -> 14018 bytes
-rw-r--r--sw/qa/extras/layout/layout.cxx20
3 files changed, 25 insertions, 2 deletions
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 4db36271ce20..4699855548e0 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -855,14 +855,17 @@ bool VCartesianAxis::createTextShapes(
recordMaximumTextSize( pTickInfo->xTextShape, rAxisLabelProperties.fRotationAngleDegree );
+ // Label has multiple lines and the words are broken
if( nLimitedSpaceForText>0 && !rAxisLabelProperties.bOverlapAllowed
&& rAxisLabelProperties.fRotationAngleDegree == 0.0
- && m_aAxisProperties.m_bComplexCategories
&& lcl_hasWordBreak( pTickInfo->xTextShape ) )
{
// Label has multiple lines and belongs to a complex category
// axis. Rotate 90 degrees to try to avoid overlaps.
- rAxisLabelProperties.fRotationAngleDegree = 90;
+ if ( m_aAxisProperties.m_bComplexCategories )
+ {
+ rAxisLabelProperties.fRotationAngleDegree = 90;
+ }
rAxisLabelProperties.bLineBreakAllowed = false;
m_aAxisLabelProperties.fRotationAngleDegree = rAxisLabelProperties.fRotationAngleDegree;
removeTextShapesFromTicks();
diff --git a/sw/qa/extras/layout/data/tdf122800.odt b/sw/qa/extras/layout/data/tdf122800.odt
new file mode 100755
index 000000000000..ff1e35cfb44b
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf122800.odt
Binary files differ
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 1bff20b3a5cb..3b470ff8c2a6 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -42,6 +42,7 @@ public:
void testTdf116830();
void testTdf114163();
void testTdf108021();
+ void testTdf122800();
void testTdf116925();
void testTdf117028();
void testTdf106390();
@@ -79,6 +80,7 @@ public:
CPPUNIT_TEST(testTdf116830);
CPPUNIT_TEST(testTdf114163);
CPPUNIT_TEST(testTdf108021);
+ CPPUNIT_TEST(testTdf122800);
CPPUNIT_TEST(testTdf116925);
CPPUNIT_TEST(testTdf117028);
CPPUNIT_TEST(testTdf106390);
@@ -2343,6 +2345,24 @@ void SwLayoutWriter::testTdf108021()
// This failed, if the textarray length of the first axis label not 22.
}
+void SwLayoutWriter::testTdf122800()
+{
+ SwDoc* pDoc = createDoc("tdf122800.odt");
+ SwDocShell* pShell = pDoc->GetDocShell();
+
+ // Dump the rendering of the first page as an XML file.
+ std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile();
+ MetafileXmlDump dumper;
+ xmlDocPtr pXmlDoc = dumper.dumpAndParse(*xMetaFile);
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(
+ pXmlDoc,
+ "/metafile/push[1]/push[1]/push[1]/push[3]/push[1]/push[1]/push[1]/textarray[@length='22']",
+ 9);
+ // This failed, if the textarray length of the first axis label not 22.
+}
+
void SwLayoutWriter::testTdf116925()
{
SwDoc* pDoc = createDoc("tdf116925.docx");