sw/inc/PostItMgr.hxx | 3 ++- sw/source/uibase/docvw/PostItMgr.cxx | 15 +++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-)
New commits: commit 0e83cdaf8a96fa06b95219e581fc2eed7df39c26 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Thu Nov 4 12:06:58 2021 +0000 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Fri Nov 5 10:30:49 2021 +0100 Resolves: tdf#143643 ensure relayout on undo of insert comment Change-Id: I732e23b8ff7c17abf4b5b9b7c7964fca6069543c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124707 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/sw/inc/PostItMgr.hxx b/sw/inc/PostItMgr.hxx index 760fc7f8abe7..5b12063d2eef 100644 --- a/sw/inc/PostItMgr.hxx +++ b/sw/inc/PostItMgr.hxx @@ -153,7 +153,8 @@ class SAL_DLLPUBLIC_RTTI SwPostItMgr final : public SfxListener bool LayoutByPage( std::vector<sw::annotation::SwAnnotationWin*> &aVisiblePostItList, const tools::Rectangle& rBorder, tools::Long lNeededHeight); - void CheckForRemovedPostIts(); + // return true if a postit was found to have been removed + bool CheckForRemovedPostIts(); bool ArrowEnabled(sal_uInt16 aDirection,tools::ULong aPage) const; bool BorderOverPageBorder(tools::ULong aPage) const; bool HasScrollbars() const; diff --git a/sw/source/uibase/docvw/PostItMgr.cxx b/sw/source/uibase/docvw/PostItMgr.cxx index d8b79c6e9d7e..f1b3a329f937 100644 --- a/sw/source/uibase/docvw/PostItMgr.cxx +++ b/sw/source/uibase/docvw/PostItMgr.cxx @@ -238,7 +238,7 @@ SwPostItMgr::~SwPostItMgr() mPages.clear(); } -void SwPostItMgr::CheckForRemovedPostIts() +bool SwPostItMgr::CheckForRemovedPostIts() { IDocumentRedlineAccess const& rIDRA(mpWrtShell->getIDocumentRedlineAccess()); bool bRemoved = false; @@ -260,7 +260,7 @@ void SwPostItMgr::CheckForRemovedPostIts() } if ( !bRemoved ) - return; + return false; // make sure that no deleted items remain in page lists // todo: only remove deleted ones?! @@ -270,9 +270,13 @@ void SwPostItMgr::CheckForRemovedPostIts() PrepareView(); } else - // if postits are their make sure that page lists are not empty + { + // if postits are there make sure that page lists are not empty // otherwise sudden paints can cause pain (in BorderOverPageBorder) CalcRects(); + } + + return true; } SwSidebarItem* SwPostItMgr::InsertItem(SfxBroadcaster* pItem, bool bCheckExistence, bool bFocus) @@ -370,7 +374,10 @@ void SwPostItMgr::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) { if (!pField) { - CheckForRemovedPostIts(); + const bool bWasRemoved = CheckForRemovedPostIts(); + // tdf#143643 ensure relayout on undo of insert comment + if (bWasRemoved) + mbLayout = true; break; } RemoveItem(pField);