tdf#122892 tdf#124366 sw: fix loop in SwTextFrame::CalcFollow()
commit1caea03fcc6c24e38b2d1d9f6097ad84183ffefd
authorMichael Stahl <Michael.Stahl@cib.de>
Mon, 6 May 2019 13:40:41 +0000 (6 15:40 +0200)
committerMichael Stahl <Michael.Stahl@cib.de>
Mon, 6 May 2019 15:48:54 +0000 (6 17:48 +0200)
tree7d0a8a46d4825b6695322aab4dda756b5326fbef
parent2ff22c0bf4c23c4bed9ccfcfa79dff848086650d
tdf#122892 tdf#124366 sw: fix loop in SwTextFrame::CalcFollow()

... differently; commit b7d4418c309c8bc4fd25485dd3a0ea6ad9edf34e
was partially wrong because if SetPrepWidows() isn't called and the
master and follow have fewer lines than the sum of orphans and
widows, then the frames must be merged, i.e., master must move
forward to the next page and follow must be deleted, but that only
happens with SetPrepWidows().

However if the SwTextFrame::PrepWidows() determines that no lines can be
moved from the master, SwTextFrame::CalcPreps() will grow the master
to force it to move to the next page, and then it sets SetWidow() too,
so check this flag to break the loop in SwTextFrame::CalcFollow().

Another question is what is the point of the "very cheesy" follow
formatting fall-back, which might be removable.

Change-Id: I0769a5a4f13ca4c95c2229a496207809d05576f9
Reviewed-on: https://gerrit.libreoffice.org/71866
Tested-by: Jenkins
Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
sw/source/core/text/frmform.cxx
sw/source/core/text/txtfrm.cxx