sw/qa/extras/layout/data/tdf136588.docx |binary sw/qa/extras/layout/layout.cxx | 11 +++++++++++ sw/source/core/text/portxt.cxx | 3 +-- sw/source/core/txtnode/fntcache.cxx | 7 +++++++ 4 files changed, 19 insertions(+), 2 deletions(-)
New commits: commit 0d28097fadf44ed58cb5e3e9b9c04a65a7a33fd6 Author: Attila Bakos <bakos.attilakar...@nisz.hu> AuthorDate: Tue Sep 22 16:37:22 2020 +0200 Commit: László Németh <nem...@numbertext.org> CommitDate: Thu Sep 24 13:54:23 2020 +0200 tdf#136588 sw: fix line break regression with small caps Regression from commit 1b03a449161af225302e4b4dd2bb2e69c6d8d170 (tdf#112290 sw: fix missing line break in small capital). This replaces the previous commit with a better solution. Change-Id: I7510b78cd6520f260e6a3804ec69e0364b93440f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103178 Tested-by: László Németh <nem...@numbertext.org> Reviewed-by: László Németh <nem...@numbertext.org> diff --git a/sw/qa/extras/layout/data/tdf136588.docx b/sw/qa/extras/layout/data/tdf136588.docx new file mode 100644 index 000000000000..606931286470 Binary files /dev/null and b/sw/qa/extras/layout/data/tdf136588.docx differ diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx index 5c7bfdab7ab3..4a348bdd7f09 100644 --- a/sw/qa/extras/layout/layout.cxx +++ b/sw/qa/extras/layout/layout.cxx @@ -192,6 +192,17 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testRedlineFootnotes) CheckRedlineFootnotesHidden(); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter, TestTdf136588) +{ + load(DATA_DIRECTORY, "tdf136588.docx"); + auto pXMLLayoutDump = parseLayoutDump(); + CPPUNIT_ASSERT(pXMLLayoutDump); + + //there was a bad line break before, the correct break layout is this: + assertXPath(pXMLLayoutDump, "/root/page/body/txt[2]/LineBreak[2]", "Line", + "effectively by modern-day small to "); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testRedlineFlysInBody) { loadURL("private:factory/swriter", nullptr); diff --git a/sw/source/core/text/portxt.cxx b/sw/source/core/text/portxt.cxx index 398b26e6706b..ace126870b54 100644 --- a/sw/source/core/text/portxt.cxx +++ b/sw/source/core/text/portxt.cxx @@ -344,8 +344,7 @@ bool SwTextPortion::Format_( SwTextFormatInfo &rInf ) Insert( aGuess.ReleaseHangingPortion() ); } // breakPos >= index - else if (aGuess.BreakPos() >= rInf.GetIdx() && aGuess.BreakPos() != TextFrameIndex(COMPLETE_STRING) - && rInf.GetFont()->GetCaseMap() != SvxCaseMap::SmallCaps ) + else if (aGuess.BreakPos() >= rInf.GetIdx() && aGuess.BreakPos() != TextFrameIndex(COMPLETE_STRING)) { // case B1 if( aGuess.HyphWord().is() && aGuess.BreakPos() > rInf.GetLineStart() diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx index 5d7188a0f4a1..b55821032936 100644 --- a/sw/source/core/txtnode/fntcache.cxx +++ b/sw/source/core/txtnode/fntcache.cxx @@ -2536,6 +2536,13 @@ TextFrameIndex SwFont::GetTextBreak(SwDrawTextInfo const & rInf, long nTextWidth ? TextFrameIndex(COMPLETE_STRING) : nTextBreak; + // tdf112290 tdf136588 Break the line correctly only if there is an image inline, + // and the image wider than the line... + if (GetCaseMap() == SvxCaseMap::SmallCaps && TextFrameIndex(COMPLETE_STRING) == nTextBreak2 && + ! bCompress && nTextWidth == 0) + // If nTextWidth == 0 means the line is full, we have to break it + nTextBreak2 = TextFrameIndex(1); + if ( ! bCompress ) return nTextBreak2; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits