summaryrefslogtreecommitdiff
path: root/sw/source/core/text
diff options
context:
space:
mode:
authorAttila Bakos (NISZ) <bakos.attilakaroly@nisz.hu>2022-04-05 13:37:55 +0200
committerLászló Németh <nemeth@numbertext.org>2022-04-28 11:47:42 +0200
commit41b012767feb8552b60a68c7be18d80c403304bf (patch)
treea0ec2781fbc34a50216c84b8be8d446deb5b7b86 /sw/source/core/text
parent6c724e18c2af227c2ad865342531ff35b0d511ac (diff)
tdf#100680 sw DOCX compatibility: fix wrap of as_char flys
New DOCX compatibility flag "WordLikeWrapForAsCharFlys" has been introduced which true in case of importing DOCX documents. It modifies the wrapping of long words with as_char anchored flys anchored into the same line, resulting e.g. correct import of poor man's header lines drawn by using underline characters under an image. Note: this example was imported as a broken header line: half of it was there after the left aligned image in the same line, and after the line break, only the other half under the image. Change-Id: I9474900ef778bcf5ddc9d95f39d536d67015f3b2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132571 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'sw/source/core/text')
-rw-r--r--sw/source/core/text/portxt.cxx7
1 files changed, 5 insertions, 2 deletions
diff --git a/sw/source/core/text/portxt.cxx b/sw/source/core/text/portxt.cxx
index cf827ab6c3bf..140e29c168cc 100644
--- a/sw/source/core/text/portxt.cxx
+++ b/sw/source/core/text/portxt.cxx
@@ -419,8 +419,11 @@ bool SwTextPortion::Format_( SwTextFormatInfo &rInf )
else
{
bool bFirstPor = rInf.GetLineStart() == rInf.GetIdx();
+ const bool bBreakLineIfHasFly
+ = rInf.GetTextFrame()->GetDoc().getIDocumentSettingAccess().get(
+ DocumentSettingId::WRAP_AS_CHAR_FLYS_LIKE_IN_OOXML);
if (aGuess.BreakPos() != TextFrameIndex(COMPLETE_STRING) &&
- aGuess.BreakPos() != rInf.GetLineStart() &&
+ (aGuess.BreakPos() != rInf.GetLineStart() || bBreakLineIfHasFly) &&
( !bFirstPor || rInf.GetFly() || rInf.GetLast()->IsFlyPortion() ||
rInf.IsFirstMulti() ) &&
( !rInf.GetLast()->IsBlankPortion() ||
@@ -430,7 +433,7 @@ bool SwTextPortion::Format_( SwTextFormatInfo &rInf )
}
else
// case C2, last exit
- BreakCut( rInf, aGuess );
+ BreakCut(rInf, aGuess);
}
return bFull;