compilerplugins/clang/mergeclasses.results |    1 
 sw/inc/AnnotationWin.hxx                   |    8 ++--
 sw/inc/PostItMgr.hxx                       |   14 ++++----
 sw/inc/postithelper.hxx                    |   48 +++++++----------------------
 sw/qa/extras/uiwriter/uiwriter7.cxx        |    2 -
 sw/source/core/fields/postithelper.cxx     |    5 +--
 sw/source/core/inc/unofield.hxx            |    2 +
 sw/source/core/txtnode/atrfld.cxx          |    6 +++
 sw/source/core/unocore/unofield.cxx        |   11 +++---
 sw/source/uibase/docvw/AnnotationWin.cxx   |   10 +++---
 sw/source/uibase/docvw/AnnotationWin2.cxx  |   26 +++++++--------
 sw/source/uibase/docvw/PostItMgr.cxx       |   34 ++++++++++----------
 sw/source/uibase/docvw/SidebarWinAcc.cxx   |    4 +-
 sw/source/uibase/docvw/SidebarWinAcc.hxx   |    6 +--
 sw/source/uibase/sidebar/CommentsPanel.hxx |    2 -
 15 files changed, 82 insertions(+), 97 deletions(-)

New commits:
commit 5e9ab8a8ee883975c1217d855c1c4f9fe9968b05
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Fri Dec 27 16:03:05 2024 +0200
Commit:     Noel Grandin <noelgran...@gmail.com>
CommitDate: Fri Dec 27 17:08:09 2024 +0100

    Simplify SwFormatField/SwXTextField interaction
    
    No need to use listeners here, both sides hold a pointer
    to a concrete class.
    And we only need to deal with destruction in one direction,
    because the other direction uses a weak reference.
    
    Change-Id: Ia7825f16d0754cbc74c59baa6ef9996311869a21
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179446
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sw/source/core/inc/unofield.hxx b/sw/source/core/inc/unofield.hxx
index dde5ccb4c505..747b41e6decc 100644
--- a/sw/source/core/inc/unofield.hxx
+++ b/sw/source/core/inc/unofield.hxx
@@ -191,6 +191,8 @@ public:
             const css::uno::Reference< css::beans::XPropertySet > & 
xFieldMaster) override;
     virtual css::uno::Reference< css::beans::XPropertySet> SAL_CALL 
getTextFieldMaster() override;
 
+    void OnFormatFieldDelete();
+
 };
 
 typedef ::cppu::WeakImplHelper
diff --git a/sw/source/core/txtnode/atrfld.cxx 
b/sw/source/core/txtnode/atrfld.cxx
index e9086f5ffed3..afbed838791d 100644
--- a/sw/source/core/txtnode/atrfld.cxx
+++ b/sw/source/core/txtnode/atrfld.cxx
@@ -218,7 +218,11 @@ SwFormatField* SwFormatField::Clone( SfxItemPool* ) const
 
 void SwFormatField::InvalidateField()
 {
-    CallSwClientNotify(sw::RemoveUnoObjectHint(this));
+    if (auto xUnoField = m_wXTextField.get())
+    {
+        xUnoField->OnFormatFieldDelete();
+        m_wXTextField.clear();
+    }
 }
 
 void SwFormatField::SwClientNotify( const SwModify& rModify, const SfxHint& 
rHint )
diff --git a/sw/source/core/unocore/unofield.cxx 
b/sw/source/core/unocore/unofield.cxx
index ed08b1d52525..d87978919c06 100644
--- a/sw/source/core/unocore/unofield.cxx
+++ b/sw/source/core/unocore/unofield.cxx
@@ -1103,8 +1103,6 @@ public:
                 : nServiceId)
         , m_pProps(pFormat ? nullptr : new SwFieldProperties_Impl)
     {
-        if(m_pFormatField)
-            StartListening(m_pFormatField->GetNotifier());
     }
 
     virtual ~Impl() override
@@ -1122,7 +1120,6 @@ public:
         if(m_pFormatField)
         {
             EndListeningAll();
-            StartListening(m_pFormatField->GetNotifier());
         }
     }
     SwFormatField* GetFormatField()
@@ -2649,8 +2646,6 @@ void SwXTextField::Impl::Notify(const SfxHint& rHint)
 
     if(rHint.GetId() == SfxHintId::Dying)
         Invalidate();
-    else if(SfxHintId::SwRemoveUnoObject == rHint.GetId())
-        Invalidate();
     else if (rHint.GetId() == SfxHintId::SwLegacyModify)
     {
         auto pLegacyHint = static_cast<const sw::LegacyModifyHint*>(&rHint);
@@ -2668,6 +2663,12 @@ const SwField* SwXTextField::Impl::GetField() const
     return m_pFormatField ? m_pFormatField->GetField() : nullptr;
 }
 
+void SwXTextField::OnFormatFieldDelete()
+{
+    m_pImpl->Invalidate();
+}
+
+
 OUString SwXTextFieldMasters::getImplementationName()
 {
     return u"SwXTextFieldMasters"_ustr;
commit 3642472bea67c6e0c35bee1e6567e1fe9d560e1a
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Fri Dec 27 15:48:45 2024 +0200
Commit:     Noel Grandin <noelgran...@gmail.com>
CommitDate: Fri Dec 27 17:07:59 2024 +0100

    merge SwSidebarItem and SwAnnotationItem classes
    
    Because the separation is not doing useful.
    
    Which reveals that SwAnnotationWin::ChangeSidebarItem was
    doing some very dodgy object slicing when assigning
    to mrSidebarItem.
    Fix that by using a pointer in SwAnnotationWin instead.
    
    Change-Id: I516dfaac7066d8f1effe351ef388c03dd1127fd7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179445
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Jenkins

diff --git a/compilerplugins/clang/mergeclasses.results 
b/compilerplugins/clang/mergeclasses.results
index 3ed6cdea7300..7d96c32e075e 100644
--- a/compilerplugins/clang/mergeclasses.results
+++ b/compilerplugins/clang/mergeclasses.results
@@ -248,7 +248,6 @@ merge SwImpBlocks with SwXMLTextBlocks
 merge SwInterHyphInfo with (anonymous namespace)::SwHyphArgs
 merge SwNumberTreeNode with SwNodeNum
 merge SwSelPaintRects with SwShellCursor
-merge SwSidebarItem with SwAnnotationItem
 merge SwTextAdjuster with SwTextCursor
 merge SwUndoTextFormatCollCreate with SwUndoCondTextFormatCollCreate
 maybe merge SwXFrame with cppu::ImplInheritanceHelper, in modules sw and 
cppuhelper
diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx
index 0a91496bea86..9e5aaeba6aeb 100644
--- a/sw/inc/AnnotationWin.hxx
+++ b/sw/inc/AnnotationWin.hxx
@@ -61,7 +61,7 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public 
InterimItemWindow
     public:
         SwAnnotationWin( SwEditWin& rEditWin,
                          SwPostItMgr& aMgr,
-                         SwSidebarItem& rSidebarItem,
+                         SwAnnotationItem& rSidebarItem,
                          SwFormatField* aField );
         virtual ~SwAnnotationWin() override;
         virtual void dispose() override;
@@ -105,7 +105,7 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public 
InterimItemWindow
         void ResetAnchorRectChanged() { mbAnchorRectChanged = false; }
         const std::vector<basegfx::B2DRange>& GetAnnotationTextRanges() const 
{ return maAnnotationTextRanges; }
         SwEditWin& EditWin();
-        SwSidebarItem& GetSidebarItem() { return mrSidebarItem; }
+        SwAnnotationItem& GetSidebarItem() { return *mpSidebarItem; }
 
         OutlinerView* GetOutlinerView() { return mpOutlinerView.get();}
         const OutlinerView* GetOutlinerView() const { return 
mpOutlinerView.get();}
@@ -175,7 +175,7 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public 
InterimItemWindow
 
         bool IsMouseOverSidebarWin() const { return mbMouseOver; }
 
-        void ChangeSidebarItem( SwSidebarItem const & rSidebarItem );
+        void ChangeSidebarItem( SwAnnotationItem & rSidebarItem );
         virtual css::uno::Reference< css::accessibility::XAccessible > 
CreateAccessible() override;
 
         void DrawForPage(OutputDevice* pDev, const Point& rPos);
@@ -276,7 +276,7 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public 
InterimItemWindow
         bool            mbReadonly;
         bool            mbIsFollow;
 
-        SwSidebarItem& mrSidebarItem;
+        SwAnnotationItem* mpSidebarItem;
         const SwFrame* mpAnchorFrame;
 
         SwFormatField*       mpFormatField;
diff --git a/sw/inc/PostItMgr.hxx b/sw/inc/PostItMgr.hxx
index 8c25f381641b..a7abeb9514f3 100644
--- a/sw/inc/PostItMgr.hxx
+++ b/sw/inc/PostItMgr.hxx
@@ -48,7 +48,7 @@ class SfxItemSet;
 class SvxSearchItem;
 namespace sw::annotation { class SwAnnotationWin; }
 namespace sw::sidebarwindows { class SwFrameSidebarWinContainer; }
-class SwSidebarItem;
+class SwAnnotationItem;
 class SwFrame;
 namespace vcl { class Window; }
 struct ImplSVEvent;
@@ -64,7 +64,7 @@ struct SwPostItPageItem
     sw::sidebarwindows::SidebarPosition eSidebarPosition;
     tools::Long lOffset;
     SwRect mPageRect;
-    std::vector<SwSidebarItem*> mvSidebarItems;
+    std::vector<SwAnnotationItem*> mvSidebarItems;
     SwPostItPageItem(): bScrollbar(false), eSidebarPosition( 
sw::sidebarwindows::SidebarPosition::NONE ), lOffset(0)
     {
     }
@@ -87,7 +87,7 @@ class SAL_DLLPUBLIC_RTTI SwPostItMgr final : public 
SfxListener,
         SwView*                         mpView;
         SwWrtShell*                     mpWrtShell;
         VclPtr<SwEditWin>               mpEditWin;
-        std::vector<std::unique_ptr<SwSidebarItem>>     mvPostItFields;
+        std::vector<std::unique_ptr<SwAnnotationItem>>  mvPostItFields;
         std::vector<std::unique_ptr<SwPostItPageItem>>  mPages;
         ImplSVEvent *                   mnEventId;
         bool                            mbWaitingForCalcRects;
@@ -128,19 +128,19 @@ class SAL_DLLPUBLIC_RTTI SwPostItMgr final : public 
SfxListener,
 
         sw::annotation::SwAnnotationWin* GetSidebarWin(const SfxBroadcaster* 
pBroadcaster) const;
 
-        SwSidebarItem*  InsertItem( SfxBroadcaster* pItem, bool 
bCheckExistence, bool bFocus);
+        SwAnnotationItem*  InsertItem( SfxBroadcaster* pItem, bool 
bCheckExistence, bool bFocus);
         void            RemoveItem( SfxBroadcaster* pBroadcast );
 
-        VclPtr<sw::annotation::SwAnnotationWin> 
GetOrCreateAnnotationWindow(SwSidebarItem& rItem);
+        VclPtr<sw::annotation::SwAnnotationWin> 
GetOrCreateAnnotationWindow(SwAnnotationItem& rItem);
 
     public:
         SwPostItMgr(SwView* aDoc);
         virtual ~SwPostItMgr() override;
 
-        typedef std::vector< std::unique_ptr<SwSidebarItem> >::const_iterator 
const_iterator;
+        typedef std::vector< std::unique_ptr<SwAnnotationItem> 
>::const_iterator const_iterator;
         const_iterator begin()  const { return mvPostItFields.begin(); }
         const_iterator end()    const { return mvPostItFields.end();  }
-        const std::vector<std::unique_ptr<SwSidebarItem>>& GetPostItFields() { 
return mvPostItFields; }
+        const std::vector<std::unique_ptr<SwAnnotationItem>>& 
GetPostItFields() { return mvPostItFields; }
 
         void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
 
diff --git a/sw/inc/postithelper.hxx b/sw/inc/postithelper.hxx
index 174e103231bd..30c9606a0d4d 100644
--- a/sw/inc/postithelper.hxx
+++ b/sw/inc/postithelper.hxx
@@ -94,63 +94,41 @@ namespace SwPostItHelper
     void ImportHTML(Outliner& rOutliner, const OUString& rHtml);
 }
 
-class SAL_DLLPUBLIC_RTTI SwSidebarItem
+class SwAnnotationItem final
 {
 public:
     VclPtr<sw::annotation::SwAnnotationWin> mpPostIt;
     bool mbShow;
     bool mbFocus;
     bool mbPendingLayout;
-
     SwPostItHelper::SwLayoutStatus mLayoutStatus;
     SwLayoutInfo maLayoutInfo;
 
-    SwSidebarItem( const bool aFocus);
-
-    virtual ~SwSidebarItem();
-
-    SwSidebarItem(SwSidebarItem const &) = default;
-    SwSidebarItem(SwSidebarItem &&) = default;
-    SwSidebarItem & operator =(SwSidebarItem const &) = default;
-    SwSidebarItem & operator =(SwSidebarItem &&) = default;
-
-    virtual SwPosition GetAnchorPosition() const = 0;
-    virtual bool UseElement(SwRootFrame const&, IDocumentRedlineAccess const&) 
= 0;
-    virtual const SwFormatField& GetFormatField() const = 0;
-    virtual SwFormatField& GetFormatField() = 0;
-    virtual const SfxBroadcaster* GetBroadcaster() const = 0;
-    virtual VclPtr<sw::annotation::SwAnnotationWin> GetSidebarWindow( 
SwEditWin& rEditWin,
-                                                                SwPostItMgr& 
aMgr) = 0;
-};
-
-class SwAnnotationItem final : public SwSidebarItem
-{
-public:
     SwAnnotationItem(
         SwFormatField& rFormatField,
-        const bool aFocus)
-        : SwSidebarItem( aFocus )
-        , mrFormatField( rFormatField )
-    {
-    }
+        const bool aFocus);
+    virtual ~SwAnnotationItem();
+
+    SwAnnotationItem(SwAnnotationItem const &) = default;
+    SwAnnotationItem(SwAnnotationItem &&) = default;
 
-    virtual SwPosition GetAnchorPosition() const override;
-    virtual bool UseElement(SwRootFrame const&, IDocumentRedlineAccess const&) 
override;
-    virtual const SwFormatField& GetFormatField() const override
+    SwPosition GetAnchorPosition() const;
+    bool UseElement(SwRootFrame const&, IDocumentRedlineAccess const&);
+    const SwFormatField& GetFormatField() const
     {
         return mrFormatField;
     }
-    SwFormatField& GetFormatField() override
+    SwFormatField& GetFormatField()
     {
         return mrFormatField;
     }
-    virtual const SfxBroadcaster* GetBroadcaster() const override
+    const SfxBroadcaster* GetBroadcaster() const
     {
         return &mrFormatField;
     }
-    virtual VclPtr<sw::annotation::SwAnnotationWin> GetSidebarWindow(
+    VclPtr<sw::annotation::SwAnnotationWin> GetSidebarWindow(
         SwEditWin& rEditWin,
-        SwPostItMgr& aMgr ) override;
+        SwPostItMgr& aMgr );
 
 private:
     SwFormatField& mrFormatField;
diff --git a/sw/qa/extras/uiwriter/uiwriter7.cxx 
b/sw/qa/extras/uiwriter/uiwriter7.cxx
index c05b7212dcc9..909d31d70249 100644
--- a/sw/qa/extras/uiwriter/uiwriter7.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter7.cxx
@@ -2443,7 +2443,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest7, testTdf89720)
     createSwDoc("tdf89720.odt");
     SwView* pView = getSwDocShell()->GetView();
     SwPostItMgr* pPostItMgr = pView->GetPostItMgr();
-    for (std::unique_ptr<SwSidebarItem> const& pItem : *pPostItMgr)
+    for (std::unique_ptr<SwAnnotationItem> const& pItem : *pPostItMgr)
     {
         if (pItem->mpPostIt->IsFollow())
             // This was non-0: reply comments had a text range overlay,
diff --git a/sw/source/core/fields/postithelper.cxx 
b/sw/source/core/fields/postithelper.cxx
index 7e0712a42365..9e44c55a797a 100644
--- a/sw/source/core/fields/postithelper.cxx
+++ b/sw/source/core/fields/postithelper.cxx
@@ -113,16 +113,17 @@ SwAnchoredObject* GetAnchoredObjectOfAnnotationMark(const 
sw::mark::MarkBase& rA
 }
 }
 
-SwSidebarItem::SwSidebarItem(const bool aFocus)
+SwAnnotationItem::SwAnnotationItem(SwFormatField& rFormatField, const bool 
aFocus)
     : mpPostIt(nullptr)
     , mbShow(true)
     , mbFocus(aFocus)
     , mbPendingLayout(false)
     , mLayoutStatus(SwPostItHelper::INVISIBLE)
+    , mrFormatField( rFormatField )
 {
 }
 
-SwSidebarItem::~SwSidebarItem() {}
+SwAnnotationItem::~SwAnnotationItem() {}
 
 SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos(
     SwLayoutInfo& o_rInfo,
diff --git a/sw/source/uibase/docvw/AnnotationWin.cxx 
b/sw/source/uibase/docvw/AnnotationWin.cxx
index ee6561fb01dd..7ca518b6b5f7 100644
--- a/sw/source/uibase/docvw/AnnotationWin.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin.cxx
@@ -108,7 +108,7 @@ namespace sw::annotation {
 // see AnnotationContents in sd for something similar
 SwAnnotationWin::SwAnnotationWin( SwEditWin& rEditWin,
                                   SwPostItMgr& aMgr,
-                                  SwSidebarItem& rSidebarItem,
+                                  SwAnnotationItem& rSidebarItem,
                                   SwFormatField* aField )
     : InterimItemWindow(&rEditWin, u"modules/swriter/ui/annotation.ui"_ustr, 
u"Annotation"_ustr)
     , mrMgr(aMgr)
@@ -122,7 +122,7 @@ SwAnnotationWin::SwAnnotationWin( SwEditWin& rEditWin,
     , mLayoutStatus(SwPostItHelper::INVISIBLE)
     , mbReadonly(false)
     , mbIsFollow(false)
-    , mrSidebarItem(rSidebarItem)
+    , mpSidebarItem(&rSidebarItem)
     , mpAnchorFrame(rSidebarItem.maLayoutInfo.mpAnchorFrame)
     , mpFormatField(aField)
     , mpField( static_cast<SwPostItField*>(aField->GetField()))
@@ -141,7 +141,7 @@ SwAnnotationWin::SwAnnotationWin( SwEditWin& rEditWin,
     if (rSidebarItem.maLayoutInfo.mpAnchorFrame)
     {
         mrMgr.ConnectSidebarWinToFrame( 
*(rSidebarItem.maLayoutInfo.mpAnchorFrame),
-                                      mrSidebarItem.GetFormatField(),
+                                      mpSidebarItem->GetFormatField(),
                                       *this );
     }
 #endif
@@ -160,7 +160,7 @@ SwAnnotationWin::~SwAnnotationWin()
 void SwAnnotationWin::dispose()
 {
 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
-    mrMgr.DisconnectSidebarWinFromFrame( 
*(mrSidebarItem.maLayoutInfo.mpAnchorFrame),
+    mrMgr.DisconnectSidebarWinFromFrame( 
*(mpSidebarItem->maLayoutInfo.mpAnchorFrame),
                                        *this );
 #endif
     Disable();
@@ -241,7 +241,7 @@ void SwAnnotationWin::SetResolved(bool resolved)
     if (SwWrtShell* pWrtShell = mrView.GetWrtShellPtr())
     {
         const SwViewOption* pVOpt = pWrtShell->GetViewOptions();
-        mrSidebarItem.mbShow = !IsResolved() || (pVOpt->IsResolvedPostIts());
+        mpSidebarItem->mbShow = !IsResolved() || (pVOpt->IsResolvedPostIts());
     }
 
     mpTextRangeOverlay.reset();
diff --git a/sw/source/uibase/docvw/AnnotationWin2.cxx 
b/sw/source/uibase/docvw/AnnotationWin2.cxx
index 9eed54376ad0..e01d3e602b4b 100644
--- a/sw/source/uibase/docvw/AnnotationWin2.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin2.cxx
@@ -677,21 +677,21 @@ void SwAnnotationWin::SetPosAndSize()
 
     // text range overlay
     maAnnotationTextRanges.clear();
-    if ( mrSidebarItem.maLayoutInfo.mnStartNodeIdx != SwNodeOffset(0)
-         && mrSidebarItem.maLayoutInfo.mnStartContent != -1 )
+    if ( mpSidebarItem->maLayoutInfo.mnStartNodeIdx != SwNodeOffset(0)
+         && mpSidebarItem->maLayoutInfo.mnStartContent != -1 )
     {
         const SwTextAnnotationField* pTextAnnotationField =
-            dynamic_cast< const SwTextAnnotationField* >( 
mrSidebarItem.GetFormatField().GetTextField() );
+            dynamic_cast< const SwTextAnnotationField* >( 
mpSidebarItem->GetFormatField().GetTextField() );
         SwTextNode* pTextNode = pTextAnnotationField ? 
pTextAnnotationField->GetpTextNode() : nullptr;
         SwContentNode* pContentNd = nullptr;
         if (pTextNode)
         {
             SwNodes& rNds = pTextNode->GetDoc().GetNodes();
-            pContentNd = 
rNds[mrSidebarItem.maLayoutInfo.mnStartNodeIdx]->GetContentNode();
+            pContentNd = 
rNds[mpSidebarItem->maLayoutInfo.mnStartNodeIdx]->GetContentNode();
         }
         if (pContentNd)
         {
-            SwPosition aStartPos( *pContentNd, 
mrSidebarItem.maLayoutInfo.mnStartContent );
+            SwPosition aStartPos( *pContentNd, 
mpSidebarItem->maLayoutInfo.mnStartContent );
             SwShellCursor* pTmpCursor = nullptr;
             const bool bTableCursorNeeded = pTextNode->FindTableBoxStartNode() 
!= pContentNd->FindTableBoxStartNode();
             if ( bTableCursorNeeded )
@@ -717,7 +717,7 @@ void SwAnnotationWin::SetPosAndSize()
             if (bDisableMapMode)
                 EditWin().EnableMapMode(false);
 
-            if (mrSidebarItem.maLayoutInfo.mPositionFromCommentAnchor)
+            if (mpSidebarItem->maLayoutInfo.mPositionFromCommentAnchor)
                 pTmpCursorForAnnotationTextRange->FillRects();
 
             if (bDisableMapMode)
@@ -1421,7 +1421,7 @@ bool SwAnnotationWin::IsScrollbarVisible() const
     return HasScrollbar() && mxVScrollbar->get_vpolicy() == 
VclPolicyType::ALWAYS;
 }
 
-void SwAnnotationWin::ChangeSidebarItem( SwSidebarItem const & rSidebarItem )
+void SwAnnotationWin::ChangeSidebarItem( SwAnnotationItem & rSidebarItem )
 {
 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
     const bool bAnchorChanged = mpAnchorFrame != 
rSidebarItem.maLayoutInfo.mpAnchorFrame;
@@ -1431,18 +1431,18 @@ void SwAnnotationWin::ChangeSidebarItem( SwSidebarItem 
const & rSidebarItem )
     }
 #endif
 
-    mrSidebarItem = rSidebarItem;
-    mpAnchorFrame = mrSidebarItem.maLayoutInfo.mpAnchorFrame;
+    mpSidebarItem = &rSidebarItem;
+    mpAnchorFrame = mpSidebarItem->maLayoutInfo.mpAnchorFrame;
     assert(mpAnchorFrame);
 
 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
     if (mxSidebarWinAccessible)
-        mxSidebarWinAccessible->ChangeSidebarItem( mrSidebarItem );
+        mxSidebarWinAccessible->ChangeSidebarItem( *mpSidebarItem );
 
     if ( bAnchorChanged )
     {
-        mrMgr.ConnectSidebarWinToFrame( 
*(mrSidebarItem.maLayoutInfo.mpAnchorFrame),
-                                      mrSidebarItem.GetFormatField(),
+        mrMgr.ConnectSidebarWinToFrame( 
*(mpSidebarItem->maLayoutInfo.mpAnchorFrame),
+                                      mpSidebarItem->GetFormatField(),
                                       *this );
     }
 #endif
@@ -1454,7 +1454,7 @@ css::uno::Reference< css::accessibility::XAccessible > 
SwAnnotationWin::CreateAc
     if (!mxSidebarWinAccessible)
         mxSidebarWinAccessible = new SidebarWinAccessible( *this,
                                                           mrView.GetWrtShell(),
-                                                          mrSidebarItem );
+                                                          *mpSidebarItem );
 #endif
     return mxSidebarWinAccessible;
 }
diff --git a/sw/source/uibase/docvw/PostItMgr.cxx 
b/sw/source/uibase/docvw/PostItMgr.cxx
index 5bcbdee0c061..3c20f0b3a675 100644
--- a/sw/source/uibase/docvw/PostItMgr.cxx
+++ b/sw/source/uibase/docvw/PostItMgr.cxx
@@ -101,7 +101,7 @@ namespace {
 
     enum class CommentNotificationType { Add, Remove, Modify, Resolve, 
RedlinedDeletion };
 
-    bool comp_pos(const std::unique_ptr<SwSidebarItem>& a, const 
std::unique_ptr<SwSidebarItem>& b)
+    bool comp_pos(const std::unique_ptr<SwAnnotationItem>& a, const 
std::unique_ptr<SwAnnotationItem>& b)
     {
         // sort by anchor position
         SwPosition aPosAnchorA = a->GetAnchorPosition();
@@ -134,7 +134,7 @@ namespace {
     }
 
     /// Emits LOK notification about one addition/removal/change of a comment
-    void lcl_CommentNotification(const SwView* pView, const 
CommentNotificationType nType, const SwSidebarItem* pItem, const sal_uInt32 
nPostItId)
+    void lcl_CommentNotification(const SwView* pView, const 
CommentNotificationType nType, const SwAnnotationItem* pItem, const sal_uInt32 
nPostItId)
     {
         if (!comphelper::LibreOfficeKit::isActive())
             return;
@@ -276,7 +276,7 @@ namespace {
     //Fields more than once.
     class FieldDocWatchingStack : public SfxListener
     {
-        std::vector<std::unique_ptr<SwSidebarItem>>& m_aSidebarItems;
+        std::vector<std::unique_ptr<SwAnnotationItem>>& m_aSidebarItems;
         std::vector<const SwFormatField*> m_aFormatFields;
         SwDocShell& m_rDocShell;
         FilterFunctor& m_rFilter;
@@ -316,7 +316,7 @@ namespace {
         }
 
     public:
-        FieldDocWatchingStack(std::vector<std::unique_ptr<SwSidebarItem>>& in, 
SwDocShell &rDocShell, FilterFunctor& rFilter)
+        FieldDocWatchingStack(std::vector<std::unique_ptr<SwAnnotationItem>>& 
in, SwDocShell &rDocShell, FilterFunctor& rFilter)
             : m_aSidebarItems(in)
             , m_rDocShell(rDocShell)
             , m_rFilter(rFilter)
@@ -427,7 +427,7 @@ bool SwPostItMgr::CheckForRemovedPostIts()
             if((*it)->mpPostIt && (*it)->mpPostIt->GetPostItField())
                 lcl_CommentNotification(mpView, 
CommentNotificationType::Remove, nullptr, 
(*it)->mpPostIt->GetPostItField()->GetPostItId());
 
-            std::unique_ptr<SwSidebarItem> p = std::move(*it);
+            std::unique_ptr<SwAnnotationItem> p = std::move(*it);
             it = mvPostItFields.erase(it);
             if (GetActiveSidebarWin() == p->mpPostIt)
                 SetActiveSidebarWin(nullptr);
@@ -465,7 +465,7 @@ bool SwPostItMgr::CheckForRemovedPostIts()
     return true;
 }
 
-SwSidebarItem* SwPostItMgr::InsertItem(SfxBroadcaster* pItem, bool 
bCheckExistence, bool bFocus)
+SwAnnotationItem* SwPostItMgr::InsertItem(SfxBroadcaster* pItem, bool 
bCheckExistence, bool bFocus)
 {
     if (bCheckExistence)
     {
@@ -477,7 +477,7 @@ SwSidebarItem* SwPostItMgr::InsertItem(SfxBroadcaster* 
pItem, bool bCheckExisten
     }
     mbLayout = bFocus;
 
-    SwSidebarItem* pAnnotationItem = nullptr;
+    SwAnnotationItem* pAnnotationItem = nullptr;
     if (auto pSwFormatField = dynamic_cast< SwFormatField *>( pItem ))
     {
         IsPostitField isPostitField;
@@ -494,7 +494,7 @@ SwSidebarItem* SwPostItMgr::InsertItem(SfxBroadcaster* 
pItem, bool bCheckExisten
 sw::annotation::SwAnnotationWin* SwPostItMgr::GetRemovedAnnotationWin( const 
SfxBroadcaster* pBroadcast )
 {
     auto i = std::find_if(mvPostItFields.begin(), mvPostItFields.end(),
-        [&pBroadcast](const std::unique_ptr<SwSidebarItem>& pField) { return 
pField->GetBroadcaster() == pBroadcast; });
+        [&pBroadcast](const std::unique_ptr<SwAnnotationItem>& pField) { 
return pField->GetBroadcaster() == pBroadcast; });
     if (i != mvPostItFields.end())
     {
         return (*i)->mpPostIt;
@@ -506,10 +506,10 @@ void SwPostItMgr::RemoveItem( SfxBroadcaster* pBroadcast )
 {
     EndListening(*pBroadcast);
     auto i = std::find_if(mvPostItFields.begin(), mvPostItFields.end(),
-        [&pBroadcast](const std::unique_ptr<SwSidebarItem>& pField) { return 
pField->GetBroadcaster() == pBroadcast; });
+        [&pBroadcast](const std::unique_ptr<SwAnnotationItem>& pField) { 
return pField->GetBroadcaster() == pBroadcast; });
     if (i != mvPostItFields.end())
     {
-        std::unique_ptr<SwSidebarItem> p = std::move(*i);
+        std::unique_ptr<SwAnnotationItem> p = std::move(*i);
         // tdf#120487 remove from list before dispose, so comment window
         // won't be recreated due to the entry still in the list if focus
         // transferring from the pPostIt triggers relayout of postits
@@ -555,7 +555,7 @@ void SwPostItMgr::Notify( SfxBroadcaster& rBC, const 
SfxHint& rHint )
                 if ( pField->IsFieldInDoc() )
                 {
                     bool bEmpty = !HasNotes();
-                    SwSidebarItem* pItem = InsertItem( pField, true, false );
+                    SwAnnotationItem* pItem = InsertItem( pField, true, false 
);
 
                     if (bEmpty && !mvPostItFields.empty())
                         PrepareView(true);
@@ -882,7 +882,7 @@ void SwPostItMgr::PreparePageContainer()
     }
 }
 
-VclPtr<SwAnnotationWin> 
SwPostItMgr::GetOrCreateAnnotationWindow(SwSidebarItem& rItem)
+VclPtr<SwAnnotationWin> 
SwPostItMgr::GetOrCreateAnnotationWindow(SwAnnotationItem& rItem)
 {
     VclPtr<SwAnnotationWin> pPostIt = rItem.mpPostIt;
     if (!pPostIt)
@@ -1194,7 +1194,7 @@ void SwPostItMgr::DrawNotesForPage(OutputDevice *pOutDev, 
sal_uInt32 nPage)
 
 void SwPostItMgr::PaintTile(OutputDevice& rRenderContext)
 {
-    for (const std::unique_ptr<SwSidebarItem>& pItem : mvPostItFields)
+    for (const std::unique_ptr<SwAnnotationItem>& pItem : mvPostItFields)
     {
         SwAnnotationWin* pPostIt = pItem->mpPostIt;
         if (!pPostIt)
@@ -1765,9 +1765,9 @@ void SwPostItMgr::PromoteToRoot(sal_uInt32 nPostItId)
 
 void SwPostItMgr::MoveSubthreadToRoot(const sw::annotation::SwAnnotationWin* 
pNewRoot)
 {
-    std::vector<std::unique_ptr<SwSidebarItem>>::iterator first, middle, last;
+    std::vector<std::unique_ptr<SwAnnotationItem>>::iterator first, middle, 
last;
     first = std::find_if(mvPostItFields.begin(), mvPostItFields.end(),
-                         [&pNewRoot](const std::unique_ptr<SwSidebarItem>& 
pField) {
+                         [&pNewRoot](const std::unique_ptr<SwAnnotationItem>& 
pField) {
                              return pField->mpPostIt == pNewRoot;
                          });
     if (first == mvPostItFields.end())
@@ -1942,7 +1942,7 @@ SwAnnotationWin* SwPostItMgr::GetNextPostIt( sal_uInt16 
aDirection,
     if (mvPostItFields.size()>1)
     {
         auto i = std::find_if(mvPostItFields.begin(), mvPostItFields.end(),
-            [&aPostIt](const std::unique_ptr<SwSidebarItem>& pField) { return 
pField->mpPostIt == aPostIt; });
+            [&aPostIt](const std::unique_ptr<SwAnnotationItem>& pField) { 
return pField->mpPostIt == aPostIt; });
         if (i == mvPostItFields.end())
             return nullptr;
 
@@ -2109,7 +2109,7 @@ vcl::Window* SwPostItMgr::IsHitSidebarWindow(const Point& 
rPointLogic)
         if (bEnableMapMode)
             mpEditWin->EnableMapMode();
 
-        for (const std::unique_ptr<SwSidebarItem>& pItem : mvPostItFields)
+        for (const std::unique_ptr<SwAnnotationItem>& pItem : mvPostItFields)
         {
             SwAnnotationWin* pPostIt = pItem->mpPostIt;
             if (!pPostIt)
diff --git a/sw/source/uibase/docvw/SidebarWinAcc.cxx 
b/sw/source/uibase/docvw/SidebarWinAcc.cxx
index 646abbb782d6..232bc372880f 100644
--- a/sw/source/uibase/docvw/SidebarWinAcc.cxx
+++ b/sw/source/uibase/docvw/SidebarWinAcc.cxx
@@ -30,7 +30,7 @@ namespace sw::sidebarwindows
 {
 SidebarWinAccessible::SidebarWinAccessible(sw::annotation::SwAnnotationWin& 
rSidebarWin,
                                            SwViewShell& rViewShell,
-                                           const SwSidebarItem& rSidebarItem)
+                                           const SwAnnotationItem& 
rSidebarItem)
     : ImplInheritanceHelper(&rSidebarWin)
     , mrViewShell(rViewShell)
     , mpAnchorFrame(rSidebarItem.maLayoutInfo.mpAnchorFrame)
@@ -40,7 +40,7 @@ 
SidebarWinAccessible::SidebarWinAccessible(sw::annotation::SwAnnotationWin& rSid
 
 SidebarWinAccessible::~SidebarWinAccessible() {}
 
-void SidebarWinAccessible::ChangeSidebarItem(const SwSidebarItem& rSidebarItem)
+void SidebarWinAccessible::ChangeSidebarItem(const SwAnnotationItem& 
rSidebarItem)
 {
     SolarMutexGuard aGuard;
 
diff --git a/sw/source/uibase/docvw/SidebarWinAcc.hxx 
b/sw/source/uibase/docvw/SidebarWinAcc.hxx
index 529d800f0722..e93fd4ebf939 100644
--- a/sw/source/uibase/docvw/SidebarWinAcc.hxx
+++ b/sw/source/uibase/docvw/SidebarWinAcc.hxx
@@ -23,8 +23,8 @@
 #include <vcl/accessibility/vclxaccessiblecomponent.hxx>
 
 class SwViewShell;
-class SwSidebarItem;
 class SwFrame;
+class SwAnnotationItem;
 namespace sw::annotation
 {
 class SwAnnotationWin;
@@ -37,7 +37,7 @@ class SidebarWinAccessible
 {
 public:
     explicit SidebarWinAccessible(sw::annotation::SwAnnotationWin& rSidebarWin,
-                                  SwViewShell& rViewShell, const 
SwSidebarItem& rSidebarItem);
+                                  SwViewShell& rViewShell, const 
SwAnnotationItem& rSidebarItem);
     virtual ~SidebarWinAccessible() override;
 
     virtual css::uno::Reference<css::accessibility::XAccessibleContext>
@@ -47,7 +47,7 @@ public:
         SAL_CALL getAccessibleParent() override;
     virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override;
 
-    void ChangeSidebarItem(const SwSidebarItem& rSidebarItem);
+    void ChangeSidebarItem(const SwAnnotationItem& rSidebarItem);
 
 private:
     SwViewShell& mrViewShell;
diff --git a/sw/source/uibase/sidebar/CommentsPanel.hxx 
b/sw/source/uibase/sidebar/CommentsPanel.hxx
index cd8eebb0b42a..34814e63fd78 100644
--- a/sw/source/uibase/sidebar/CommentsPanel.hxx
+++ b/sw/source/uibase/sidebar/CommentsPanel.hxx
@@ -45,7 +45,7 @@ class SwFormatField;
 class SwAnnotationWin;
 class SfxBroadcaster;
 class SwPostItMgr;
-class SwSidebarItem;
+class SwAnnotationItem;
 
 namespace sw::sidebar
 {

Reply via email to