diff options
-rw-r--r-- | sw/inc/SidebarWin.hxx | 1 | ||||
-rw-r--r-- | sw/inc/postithelper.hxx | 2 | ||||
-rw-r--r-- | sw/source/uibase/docvw/PostItMgr.cxx | 27 |
3 files changed, 19 insertions, 11 deletions
diff --git a/sw/inc/SidebarWin.hxx b/sw/inc/SidebarWin.hxx index 4d114b8dfd58..de109fb4b5c4 100644 --- a/sw/inc/SidebarWin.hxx +++ b/sw/inc/SidebarWin.hxx @@ -84,6 +84,7 @@ class SwSidebarWin : public vcl::Window inline const SwRect& GetAnchorRect() { return mAnchorRect; } inline const std::vector<basegfx::B2DRange>& GetAnnotationTextRanges() { return maAnnotationTextRanges; } SwEditWin& EditWin(); + inline SwSidebarItem& GetSidebarItem() { return mrSidebarItem; } inline OutlinerView* GetOutlinerView() { return mpOutlinerView;} bool HasScrollbar() const; diff --git a/sw/inc/postithelper.hxx b/sw/inc/postithelper.hxx index 74857a124585..2d89cbc98734 100644 --- a/sw/inc/postithelper.hxx +++ b/sw/inc/postithelper.hxx @@ -92,6 +92,7 @@ public: VclPtr<sw::sidebarwindows::SwSidebarWin> pPostIt; bool bShow; bool bFocus; + bool bPendingLayout; SwPostItHelper::SwLayoutStatus mLayoutStatus; SwLayoutInfo maLayoutInfo; @@ -100,6 +101,7 @@ public: : pPostIt(nullptr) , bShow(true) , bFocus(aFocus) + , bPendingLayout(false) , mLayoutStatus( SwPostItHelper::INVISIBLE ) , maLayoutInfo() { diff --git a/sw/source/uibase/docvw/PostItMgr.cxx b/sw/source/uibase/docvw/PostItMgr.cxx index 5e07b2e123e8..4db1d62a2a19 100644 --- a/sw/source/uibase/docvw/PostItMgr.cxx +++ b/sw/source/uibase/docvw/PostItMgr.cxx @@ -355,17 +355,9 @@ void SwPostItMgr::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) if (bEmpty && !mvPostItFields.empty()) PrepareView(true); - // If LOK has disabled tiled annotations, emit annotation callbacks - if (comphelper::LibreOfficeKit::isActive() && !comphelper::LibreOfficeKit::isTiledAnnotations()) - { - CalcRects(); - Show(); - - if (pItem && pItem->pPostIt) - { - lcl_CommentNotification(mpView, CommentNotificationType::Add, pItem, 0); - } - } + // True until the layout of this post it finishes + if (pItem) + pItem->bPendingLayout = true; } else { @@ -874,6 +866,19 @@ void SwPostItMgr::LayoutPostIts() pPage->bScrollbar = false; bUpdate = (bOldScrollbar != pPage->bScrollbar) || bUpdate; } + + for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i != aVisiblePostItList.end() ; ++i) + { + if (comphelper::LibreOfficeKit::isActive() && !comphelper::LibreOfficeKit::isTiledAnnotations()) + { + if ((*i)->GetSidebarItem().bPendingLayout) + lcl_CommentNotification(mpView, CommentNotificationType::Add, &(*i)->GetSidebarItem(), 0); + } + + // Layout for this post it finished now + (*i)->GetSidebarItem().bPendingLayout = false; + } + aVisiblePostItList.clear(); } else |