From cff06958fbd04f546d2448b2b6f54c6f66e6f06a Mon Sep 17 00:00:00 2001 From: Pranav Kant Date: Fri, 3 Feb 2017 17:00:51 +0530 Subject: lok: comments: emit add callback after layout finishes Change-Id: Ie6eba244dd5eb78813185f8c7aceed841d05d48b Reviewed-on: https://gerrit.libreoffice.org/33877 Tested-by: Jenkins Reviewed-by: pranavk (cherry picked from commit 5596b3f86f753b7ae0a262ccea84c6a61bdc9ca2) --- sw/inc/SidebarWin.hxx | 1 + sw/inc/postithelper.hxx | 2 ++ sw/source/uibase/docvw/PostItMgr.cxx | 27 ++++++++++++++++----------- 3 files changed, 19 insertions(+), 11 deletions(-) (limited to 'sw') 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& 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 0c9fe92da682..73d3cfe7a172 100644 --- a/sw/inc/postithelper.hxx +++ b/sw/inc/postithelper.hxx @@ -92,6 +92,7 @@ public: VclPtr 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 80332abad12f..3c87288e1bc3 100644 --- a/sw/source/uibase/docvw/PostItMgr.cxx +++ b/sw/source/uibase/docvw/PostItMgr.cxx @@ -357,17 +357,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 { @@ -875,6 +867,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 -- cgit