summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <Michael.Stahl@cib.de>2019-07-02 18:31:46 +0200
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2019-09-17 00:35:05 +0200
commite6bdbd6f62d99e25360de7989bde34985c83c1af (patch)
tree8c765ce97506cdc568db7f1fd129e4565ce612e2
parentdd928e41f7b34f6fa0c01a94d20f4f33535f9797 (diff)
sw: fix moving of at-page anchored flys to different page
The problem is that some flys are anchored at a page with Y pos 35k and are moved to a page with Y pos 17k, while retaining mbFrameAreaPositionValid=true and their existing Y position. The flys will never be painted or even invalidated again because their position is off-page. This is somehow a regression from commit 0b53f794ffb2550288610b9488f11fd21ab85aae - without the new mutation of an empty-page to a normal page due to at-page flys by resetting m_bEmptyPage in SwPageFrame::UpdateAttr_() on it the problem didn't happen. Due to the above commit, the page 3 is not an empty-page any more as it has 2 flys anchored on it; previously those flys were moved (only in the layout, not in the model!) to page 4 by some funny code in SwRootFrame::AssertPageFlys(), which at first glance seems like an improvement. Change-Id: Ia071931b26e64245f90233232dd2ac0d64365ce6 Reviewed-on: https://gerrit.libreoffice.org/75009 Tested-by: Jenkins Reviewed-by: Michael Stahl <Michael.Stahl@cib.de> (cherry picked from commit 5cee586a97a11c23dd252accc42099bd5e9b4187) Reviewed-on: https://gerrit.libreoffice.org/75049 Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
-rw-r--r--sw/source/core/layout/flylay.cxx2
1 files changed, 2 insertions, 0 deletions
diff --git a/sw/source/core/layout/flylay.cxx b/sw/source/core/layout/flylay.cxx
index 36bc46ba762c..fea1582c226c 100644
--- a/sw/source/core/layout/flylay.cxx
+++ b/sw/source/core/layout/flylay.cxx
@@ -854,6 +854,8 @@ void SwPageFrame::AppendFlyToPage( SwFlyFrame *pNew )
pNew->InvalidatePage( this );
// #i28701#
pNew->UnlockPosition();
+ // needed to reposition at-page anchored flys moved from different page
+ pNew->InvalidateObjPos();
// Notify accessible layout. That's required at this place for
// frames only where the anchor is moved. Creation of new frames