sw/inc/authfld.hxx                       |   22 ++++-----
 sw/inc/docsh.hxx                         |   27 +++++------
 sw/inc/docstyle.hxx                      |   14 ++---
 sw/inc/docufld.hxx                       |   12 ++---
 sw/inc/expfld.hxx                        |    6 +-
 sw/inc/fmtcol.hxx                        |   10 ++--
 sw/inc/fmtfld.hxx                        |   10 ++--
 sw/inc/format.hxx                        |   20 ++++----
 sw/inc/formatcontentcontrol.hxx          |    2 
 sw/inc/frmfmt.hxx                        |    6 +-
 sw/inc/ndole.hxx                         |   12 ++---
 sw/inc/ndtxt.hxx                         |   74 +++++++++++++++----------------
 sw/inc/node.hxx                          |   18 +++----
 sw/inc/section.hxx                       |   20 ++++----
 sw/inc/swtable.hxx                       |   24 +++++-----
 sw/inc/tblafmt.hxx                       |   12 ++---
 sw/inc/textboxhelper.hxx                 |   22 +++++----
 sw/inc/txtftn.hxx                        |    4 -
 sw/inc/unotbl.hxx                        |    6 +-
 sw/inc/unotextrange.hxx                  |   14 ++---
 sw/inc/unotxdoc.hxx                      |   66 +++++++++++++--------------
 sw/inc/view.hxx                          |   47 ++++++++++---------
 sw/inc/viscrs.hxx                        |    2 
 sw/qa/core/layout/ftnfrm.cxx             |    2 
 sw/qa/core/txtnode/txtnode.cxx           |    2 
 sw/qa/uibase/shells/shells.cxx           |    2 
 sw/qa/uibase/shells/textsh.cxx           |    2 
 sw/source/core/inc/cellfrm.hxx           |    6 +-
 sw/source/core/inc/cntfrm.hxx            |    2 
 sw/source/core/inc/dflyobj.hxx           |    2 
 sw/source/core/inc/flyfrms.hxx           |    8 +--
 sw/source/core/inc/pagefrm.hxx           |    4 -
 sw/source/core/inc/tabfrm.hxx            |    2 
 sw/source/core/inc/txtfrm.hxx            |   22 ++++-----
 sw/source/filter/inc/wrtswtbl.hxx        |    6 +-
 sw/source/uibase/inc/basesh.hxx          |    4 -
 sw/source/uibase/inc/mailmergehelper.hxx |   18 +++----
 sw/source/uibase/inc/pview.hxx           |    2 
 sw/source/uibase/inc/textsh.hxx          |    8 +--
 sw/source/uibase/uiview/view.cxx         |    5 ++
 40 files changed, 278 insertions(+), 269 deletions(-)

New commits:
commit 1a6711276f0c8abeb0028a47cc345a7453374a38
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Tue Mar 12 10:06:49 2024 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Wed Mar 13 10:45:51 2024 +0100

    reduce symbol visibility in sw
    
    Change-Id: Ib3edefc365d3c605c3024e160572fa4030100ef1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164724
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sw/inc/authfld.hxx b/sw/inc/authfld.hxx
index 6996f5090b68..f20c07c929b3 100644
--- a/sw/inc/authfld.hxx
+++ b/sw/inc/authfld.hxx
@@ -62,7 +62,7 @@ struct SwTOXSortKey
 typedef std::vector<SwTOXSortKey> SortKeyArr;
 typedef std::vector<rtl::Reference<SwAuthEntry>> SwAuthDataArr;
 
-class SW_DLLPUBLIC SwAuthorityFieldType final : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwAuthorityFieldType final : public SwFieldType
 {
     SwDoc*                  m_pDoc;
     SwAuthDataArr           m_DataArr;
@@ -97,8 +97,8 @@ public:
                             m_SequArrRLHidden.clear();
                         }
 
-    void                GetAllEntryIdentifiers( std::vector<OUString>& rToFill 
) const;
-    SwAuthEntry*        GetEntryByIdentifier(std::u16string_view rIdentifier) 
const;
+    SW_DLLPUBLIC void   GetAllEntryIdentifiers( std::vector<OUString>& rToFill 
) const;
+    SW_DLLPUBLIC SwAuthEntry* GetEntryByIdentifier(std::u16string_view 
rIdentifier) const;
 
     bool                ChangeEntryContent(const SwAuthEntry* pNewEntry);
     // import interface
@@ -129,13 +129,13 @@ public:
                                 m_bSortByDocument = bSet;
                             }
 
-    sal_uInt16          GetSortKeyCount() const ;
-    const SwTOXSortKey* GetSortKey(sal_uInt16 nIdx) const ;
+    SW_DLLPUBLIC sal_uInt16 GetSortKeyCount() const ;
+    SW_DLLPUBLIC const SwTOXSortKey* GetSortKey(sal_uInt16 nIdx) const ;
     void                SetSortKeys(sal_uInt16 nKeyCount, SwTOXSortKey const 
nKeys[]);
 
     //initui.cxx
-    static OUString const & GetAuthFieldName(ToxAuthorityField eType);
-    static OUString const & GetAuthTypeName(ToxAuthorityType eType);
+    SW_DLLPUBLIC static OUString const & GetAuthFieldName(ToxAuthorityField 
eType);
+    SW_DLLPUBLIC static OUString const & GetAuthTypeName(ToxAuthorityType 
eType);
 
     LanguageType    GetLanguage() const {return m_eLanguage;}
     void            SetLanguage(LanguageType nLang)  {m_eLanguage = nLang;}
@@ -157,7 +157,7 @@ public:
     one of the instances with the same m_nHandle is actually in the document,
     they're all cloned via CopyField()...
  */
-class SW_DLLPUBLIC SwAuthorityField final : public SwField
+class SAL_DLLPUBLIC_RTTI SwAuthorityField final : public SwField
 {
     rtl::Reference<SwAuthEntry>  m_xAuthEntry;
     mutable sal_IntPtr  m_nTempSequencePos;
@@ -181,7 +181,7 @@ public:
     OUString ConditionalExpandAuthIdentifier(SwRootFrame const* pLayout) const;
 
     //To handle Citation
-    OUString ExpandCitation(ToxAuthorityField eField, SwRootFrame const* 
pLayout) const;
+    SW_DLLPUBLIC OUString ExpandCitation(ToxAuthorityField eField, SwRootFrame 
const* pLayout) const;
 
     SwAuthorityField(SwAuthorityFieldType* pType, std::u16string_view 
rFieldContents);
     SwAuthorityField(SwAuthorityFieldType* pType, SwAuthEntry* pAuthEntry);
@@ -206,7 +206,7 @@ public:
      * \param   pTOX        bibliography table to take the format of the 
string from
      *  eturn              entry formatted as the appropriate authority type 
in the table
      */
-    OUString GetAuthority(const SwRootFrame *pLayout,
+    SW_DLLPUBLIC OUString GetAuthority(const SwRootFrame *pLayout,
                           const SwForm *pTOX = nullptr) const;
 
     /**
@@ -218,7 +218,7 @@ public:
      * Returns absolute target URL in case there is one (GetTargetType() 
should be checked).
      *   If there isn't one, the result is undefined.
      */
-    OUString GetAbsoluteURL() const;
+    SW_DLLPUBLIC OUString GetAbsoluteURL() const;
 
     /**
      * Returns relative URI for the URL
diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx
index 3cbc43c98803..1cf9d8d6b2b7 100644
--- a/sw/inc/docsh.hxx
+++ b/sw/inc/docsh.hxx
@@ -65,7 +65,7 @@ namespace ooo::vba::word { class XDocument; }
 // as needed, one or both parameters may be zero
 void InitDrawModelAndDocShell(SwDocShell* pSwDocShell, SwDrawModel* 
pSwDrawModel);
 
-class SW_DLLPUBLIC SwDocShell
+class SAL_DLLPUBLIC_RTTI SwDocShell
     : public SfxObjectShell
     , public SfxListener
 {
@@ -167,19 +167,20 @@ protected:
 public:
     /// but we implement this ourselves.
     SFX_DECL_INTERFACE(SW_DOCSHELL)
-    SFX_DECL_OBJECTFACTORY()
+    SW_DLLPUBLIC static SfxObjectFactory& Factory();
+    virtual SfxObjectFactory& GetFactory() const override { return Factory(); }
 
 private:
     /// SfxInterface initializer.
     static void InitInterface_Impl();
 
 public:
-    static OUString GetEventName( sal_Int32 nId );
+    SW_DLLPUBLIC static OUString GetEventName( sal_Int32 nId );
 
     /// Doc is required for SO data exchange!
-    SwDocShell( SfxObjectCreateMode eMode = SfxObjectCreateMode::EMBEDDED );
+    SW_DLLPUBLIC SwDocShell( SfxObjectCreateMode eMode = 
SfxObjectCreateMode::EMBEDDED );
     SwDocShell( SfxModelFlags i_nSfxCreationFlags );
-    SwDocShell( SwDoc& rDoc, SfxObjectCreateMode eMode );
+    SW_DLLPUBLIC SwDocShell( SwDoc& rDoc, SfxObjectCreateMode eMode );
     virtual ~SwDocShell() override;
 
     /// OLE 2.0-notification.
@@ -218,7 +219,7 @@ public:
     virtual sfx2::StyleManager* GetStyleManager() override;
 
     /// Set View for actions via Shell.
-    void          SetView(SwView* pVw);
+    SW_DLLPUBLIC void SetView(SwView* pVw);
     const SwView *GetView() const { return m_pView; }
     SwView       *GetView()       { return m_pView; }
 
@@ -227,10 +228,10 @@ public:
     const SwWrtShell *GetWrtShell() const { return m_pWrtShell; }
     // Same as GetWrtShell, but return pointer to SwEditShell base of
     // (potentially incomplete) SwWrtShell:
-    SwEditShell * GetEditShell();
+    SW_DLLPUBLIC SwEditShell * GetEditShell();
 
     /// For Core - it knows the DocShell but not the WrtShell!
-          SwFEShell *GetFEShell();
+    SW_DLLPUBLIC SwFEShell *GetFEShell();
     const SwFEShell *GetFEShell() const
                 { return const_cast<SwDocShell*>(this)->GetFEShell(); }
 
@@ -261,12 +262,12 @@ public:
 
     virtual void LoadStyles( SfxObjectShell& rSource ) override;
 
-    void LoadStyles_( SfxObjectShell& rSource, bool bPreserveCurrentDocument );
+    SW_DLLPUBLIC void LoadStyles_( SfxObjectShell& rSource, bool 
bPreserveCurrentDocument );
 
     /// Show page style format dialog
     /// @param nSlot
     /// Identifies slot by which the dialog is triggered. Used to activate 
certain dialog pane
-    void FormatPage(
+    SW_DLLPUBLIC void FormatPage(
         weld::Window* pDialogParent,
         const OUString& rPage,
         const OUString& rPageId,
@@ -290,7 +291,7 @@ public:
 
     void ToggleLayoutMode(SwView* pView);
 
-    ErrCodeMsg LoadStylesFromFile(const OUString& rURL, SwgReaderOption& rOpt, 
bool bUnoCall);
+    SW_DLLPUBLIC ErrCodeMsg LoadStylesFromFile(const OUString& rURL, 
SwgReaderOption& rOpt, bool bUnoCall);
     void InvalidateModel();
     void ReactivateModel();
 
@@ -321,9 +322,9 @@ public:
     virtual void    SetProtectionPassword( const OUString &rPassword ) 
override;
     virtual bool    GetProtectionHash( /*out*/ css::uno::Sequence< sal_Int8 > 
&rPasswordHash ) override;
 
-    void RegisterAutomationDocumentEventsCaller(css::uno::Reference< 
ooo::vba::XSinkCaller > const& xCaller);
+    SW_DLLPUBLIC void 
RegisterAutomationDocumentEventsCaller(css::uno::Reference< 
ooo::vba::XSinkCaller > const& xCaller);
     void CallAutomationDocumentEventSinks(const OUString& Method, 
css::uno::Sequence< css::uno::Any >& Arguments);
-    void RegisterAutomationDocumentObject(css::uno::Reference< 
ooo::vba::word::XDocument > const& xDocument);
+    SW_DLLPUBLIC void RegisterAutomationDocumentObject(css::uno::Reference< 
ooo::vba::word::XDocument > const& xDocument);
 
     // Lock all unlocked views, and returns a guard object which unlocks those 
views when destructed
     virtual std::unique_ptr<LockAllViewsGuard> LockAllViews() override;
diff --git a/sw/inc/docstyle.hxx b/sw/inc/docstyle.hxx
index d550f98c0386..8fdd83e9cc01 100644
--- a/sw/inc/docstyle.hxx
+++ b/sw/inc/docstyle.hxx
@@ -43,7 +43,7 @@ class SwBoxAutoFormat;
 enum class SwGetPoolIdFromName : sal_uInt16;
 
 // Temporary StyleSheet.
-class SW_DLLPUBLIC SwDocStyleSheet final : public SfxStyleSheetBase
+class SAL_DLLPUBLIC_RTTI SwDocStyleSheet final : public SfxStyleSheetBase
 {
     friend class SwDocStyleSheetPool;
     friend class SwStyleSheetIterator;
@@ -81,7 +81,7 @@ public:
     SwDocStyleSheet( SwDoc&                 rDoc,
                      SwDocStyleSheetPool&   rPool);
 
-    SwDocStyleSheet( const SwDocStyleSheet& );
+    SW_DLLPUBLIC SwDocStyleSheet( const SwDocStyleSheet& );
 
     void                    Reset();
 
@@ -99,14 +99,14 @@ public:
      which indicates that the indent attributes at a paragraph style should
      be reset in case that a list style is applied to the paragraph style and
      no indent attributes are applied. */
-    void                    SetItemSet( const SfxItemSet& rSet, const bool 
bBroadcast = true,
+    SW_DLLPUBLIC void       SetItemSet( const SfxItemSet& rSet, const bool 
bBroadcast = true,
                                         const bool 
bResetIndentAttrsAtParagraphStyle = false );
 
-    virtual SfxItemSet&     GetItemSet() override;
+    SW_DLLPUBLIC virtual SfxItemSet& GetItemSet() override;
     virtual std::optional<SfxItemSet> GetItemSetForPreview() override;
     /** new method for paragraph styles to merge indent attributes of applied 
list
      style into the given item set, if the list style indent attributes are 
applicable. */
-    void MergeIndentAttrsOfListStyle( SfxItemSet& rSet );
+    SW_DLLPUBLIC void MergeIndentAttrsOfListStyle( SfxItemSet& rSet );
     virtual const OUString& GetParent() const override;
     virtual const OUString& GetFollow() const override;
     const OUString& GetLink() const;
@@ -133,8 +133,8 @@ public:
 
     virtual OUString GetUsedBy() override;
 
-    SwCharFormat*              GetCharFormat();
-    SwTextFormatColl*           GetCollection();
+    SW_DLLPUBLIC SwCharFormat* GetCharFormat();
+    SW_DLLPUBLIC SwTextFormatColl* GetCollection();
     SwFrameFormat*               GetFrameFormat();
     const SwPageDesc*       GetPageDesc();
     const SwNumRule*        GetNumRule();
diff --git a/sw/inc/docufld.hxx b/sw/inc/docufld.hxx
index 71096d5758b0..c2adba02e229 100644
--- a/sw/inc/docufld.hxx
+++ b/sw/inc/docufld.hxx
@@ -445,7 +445,7 @@ public:
     };
 };
 
-class SW_DLLPUBLIC SwPostItField final : public SwField
+class SAL_DLLPUBLIC_RTTI SwPostItField final : public SwField
 {
     OUString m_sText;
     OUString m_sAuthor;
@@ -464,7 +464,7 @@ class SW_DLLPUBLIC SwPostItField final : public SwField
 public:
     static sal_uInt32 s_nLastPostItId;
 
-    SwPostItField( SwPostItFieldType*,
+    SW_DLLPUBLIC SwPostItField( SwPostItFieldType*,
                    OUString aAuthor,
                    OUString aText,
                    OUString aInitials,
@@ -480,7 +480,7 @@ public:
     SwPostItField(const SwPostItField&) = delete;
     SwPostItField* operator=(const SwPostItField&) = delete;
 
-    virtual ~SwPostItField() override;
+    SW_DLLPUBLIC virtual ~SwPostItField() override;
 
     virtual OUString    ExpandImpl(SwRootFrame const* pLayout) const override;
     virtual std::unique_ptr<SwField> Copy() const override;
@@ -498,7 +498,7 @@ public:
     void SetParaId(const sal_uInt32 nParaId);
 
     /// Author
-    virtual OUString        GetPar1() const override;
+    SW_DLLPUBLIC virtual OUString GetPar1() const override;
     virtual void            SetPar1(const OUString& rStr) override;
 
     /// Text
@@ -512,11 +512,11 @@ public:
     void                    SetParentName(const OUString& rStr);
 
     const OutlinerParaObject* GetTextObject() const { return mpText ? &*mpText 
: nullptr;}
-    void SetTextObject( std::optional<OutlinerParaObject> pText );
+    SW_DLLPUBLIC void SetTextObject( std::optional<OutlinerParaObject> pText );
 
     void SetResolved(bool bNewState);
     void ToggleResolved();
-    bool GetResolved() const;
+    SW_DLLPUBLIC bool GetResolved() const;
 
     sal_Int32 GetNumberOfParagraphs() const;
     void ChangeStyleSheetName(std::u16string_view rOldName, const 
SfxStyleSheetBase* pStyleSheet);
diff --git a/sw/inc/expfld.hxx b/sw/inc/expfld.hxx
index f8694304f6c1..03ac806ed1c4 100644
--- a/sw/inc/expfld.hxx
+++ b/sw/inc/expfld.hxx
@@ -83,7 +83,7 @@ private:
     virtual void SwClientNotify(const SwModify&, const SfxHint&) override;
 };
 
-class SW_DLLPUBLIC SwGetExpField final : public SwFormulaField
+class SAL_DLLPUBLIC_RTTI SwGetExpField final : public SwFormulaField
 {
     double          m_fValueRLHidden; ///< SwValueField; hidden redlines
     OUString        m_sExpand;
@@ -99,7 +99,7 @@ class SW_DLLPUBLIC SwGetExpField final : public SwFormulaField
     virtual void        SetValue(const double& rVal) override; // hide it
 
 public:
-    SwGetExpField( SwGetExpFieldType*, const OUString& rFormel,
+    SW_DLLPUBLIC SwGetExpField( SwGetExpFieldType*, const OUString& rFormel,
                    sal_uInt16 nSubType, sal_uLong nFormat);
 
     double      GetValue(SwRootFrame const* pLayout) const;
@@ -130,7 +130,7 @@ public:
     virtual bool        QueryValue( css::uno::Any& rVal, sal_uInt16 nWhich ) 
const override;
     virtual bool        PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich 
) override;
 
-    static sal_Int32    GetReferenceTextPos( const SwFormatField& rFormat, 
SwDoc& rDoc, sal_Int32 nHint = 0);
+    SW_DLLPUBLIC static sal_Int32 GetReferenceTextPos( const SwFormatField& 
rFormat, SwDoc& rDoc, sal_Int32 nHint = 0);
     // #i82544#
     void                SetLateInitialization() { m_bLateInitialization = 
true;}
 };
diff --git a/sw/inc/fmtcol.hxx b/sw/inc/fmtcol.hxx
index c914a6058ccf..04b28e5bcf30 100644
--- a/sw/inc/fmtcol.hxx
+++ b/sw/inc/fmtcol.hxx
@@ -55,7 +55,7 @@ private:
 };
 
 /// Represents the style of a paragraph.
-class SW_DLLPUBLIC SwTextFormatColl
+class SAL_DLLPUBLIC_RTTI SwTextFormatColl
     : public SwFormatColl
     , public sw::FormatDropDefiner
 {
@@ -107,7 +107,7 @@ public:
 
     void SetLinkedCharFormat(SwCharFormat* pLink);
 
-    const SwCharFormat* GetLinkedCharFormat() const;
+    SW_DLLPUBLIC const SwCharFormat* GetLinkedCharFormat() const;
 
     bool IsAtDocNodeSet() const;
 
@@ -117,7 +117,7 @@ public:
     // Return the list level of the Outline Style - the List Style for the
     // outline numbering -
     // to which the Paragraph Style is assigned.
-    int  GetAssignedOutlineStyleLevel() const;
+    SW_DLLPUBLIC int GetAssignedOutlineStyleLevel() const;
 
     bool IsAssignedToListLevelOfOutlineStyle() const
     {
@@ -126,8 +126,8 @@ public:
 
     // If a Paragraph Style is assigned to list level N of the Outline Style,
     // then its outline level - AttrOutlineLevel - is set to N+1
-    void AssignToListLevelOfOutlineStyle(const int nAssignedListLevel);
-    void DeleteAssignmentToListLevelOfOutlineStyle();
+    SW_DLLPUBLIC void AssignToListLevelOfOutlineStyle(const int 
nAssignedListLevel);
+    SW_DLLPUBLIC void DeleteAssignmentToListLevelOfOutlineStyle();
 
     /** Override to recognize changes on the <SwNumRuleItem> and 
register/unregister
      the paragragh style at the corresponding <SwNumRule> instance. */
diff --git a/sw/inc/fmtfld.hxx b/sw/inc/fmtfld.hxx
index c9f7d756c0b9..5d44b8868e47 100644
--- a/sw/inc/fmtfld.hxx
+++ b/sw/inc/fmtfld.hxx
@@ -97,7 +97,7 @@ namespace sw {
 
 /// SfxPoolItem subclass that is a wrapper around an SwField, i.e. one 
inserted field into paragraph
 /// text. Typically owned by an SwTextField.
-class SW_DLLPUBLIC SwFormatField final
+class SAL_DLLPUBLIC_RTTI SwFormatField final
     : public SfxPoolItem
     , public sw::BroadcastingModify
     , public SfxBroadcaster
@@ -117,15 +117,15 @@ class SW_DLLPUBLIC SwFormatField final
 public:
 
     /// Single argument constructors shall be explicit.
-    explicit SwFormatField( const SwField &rField );
+    SW_DLLPUBLIC explicit SwFormatField( const SwField &rField );
 
     SwFormatField( const SwFormatField& rAttr );
 
-    virtual ~SwFormatField() override;
+    SW_DLLPUBLIC virtual ~SwFormatField() override;
 
     /// "Pure virtual methods" of SfxPoolItem.
     virtual bool            operator==( const SfxPoolItem& ) const override;
-    virtual SwFormatField*  Clone( SfxItemPool* pPool = nullptr ) const 
override;
+    SW_DLLPUBLIC virtual SwFormatField*  Clone( SfxItemPool* pPool = nullptr ) 
const override;
 
     void InvalidateField();
 
@@ -158,7 +158,7 @@ public:
     void SetTextField( SwTextField& rTextField );
     void ClearTextField();
 
-    void RegisterToFieldType( SwFieldType& );
+    SW_DLLPUBLIC void RegisterToFieldType( SwFieldType& );
     bool IsFieldInDoc() const;
     bool IsProtect() const;
 
diff --git a/sw/inc/format.hxx b/sw/inc/format.hxx
index 62ef891bc545..92c7b73b73bf 100644
--- a/sw/inc/format.hxx
+++ b/sw/inc/format.hxx
@@ -43,7 +43,7 @@ namespace drawinglayer::attribute {
 }
 
 /// Base class for various Writer styles.
-class SW_DLLPUBLIC SwFormat : public sw::BorderCacheOwner, public 
sw::BroadcastingModify
+class SAL_DLLPUBLIC_RTTI SwFormat : public sw::BorderCacheOwner, public 
sw::BroadcastingModify
 {
     friend class SwFrameFormat;
 
@@ -90,17 +90,17 @@ public:
     void DelDiffs( const SwFormat& rFormat ) { DelDiffs( rFormat.GetAttrSet() 
); }
 
     /// 0 is Default.
-    bool SetDerivedFrom(SwFormat *pDerivedFrom = nullptr);
+    SW_DLLPUBLIC bool SetDerivedFrom(SwFormat *pDerivedFrom = nullptr);
 
     /// If bInParents is FALSE, search only in this format for attribute.
-    const SfxPoolItem& GetFormatAttr( sal_uInt16 nWhich,
+    SW_DLLPUBLIC const SfxPoolItem& GetFormatAttr( sal_uInt16 nWhich,
                                    bool bInParents = true ) const;
     template<class T> const T& GetFormatAttr( TypedWhichId<T> nWhich, bool 
bInParents = true ) const
     {
         return static_cast<const T&>(GetFormatAttr(sal_uInt16(nWhich), 
bInParents));
     }
 
-    SfxItemState GetItemState( sal_uInt16 nWhich, bool bSrchInParent = true,
+    SW_DLLPUBLIC SfxItemState GetItemState( sal_uInt16 nWhich, bool 
bSrchInParent = true,
                                     const SfxPoolItem **ppItem = nullptr ) 
const;
     template<class T>
     SfxItemState GetItemState( TypedWhichId<T> nWhich, bool bSrchInParent = 
true,
@@ -117,9 +117,9 @@ public:
             return static_cast<const T*>(pItem);
         return nullptr;
     }
-    SfxItemState GetBackgroundState(std::unique_ptr<SvxBrushItem>& rItem) 
const;
-    virtual bool SetFormatAttr( const SfxPoolItem& rAttr );
-    virtual bool SetFormatAttr( const SfxItemSet& rSet );
+    SW_DLLPUBLIC SfxItemState 
GetBackgroundState(std::unique_ptr<SvxBrushItem>& rItem) const;
+    SW_DLLPUBLIC virtual bool SetFormatAttr( const SfxPoolItem& rAttr );
+    SW_DLLPUBLIC virtual bool SetFormatAttr( const SfxItemSet& rSet );
     virtual bool ResetFormatAttr( sal_uInt16 nWhich1, sal_uInt16 nWhich2 = 0 );
 
     /** Takes all hints from Delta-Array,
@@ -141,7 +141,7 @@ public:
           SwDoc *GetDoc()               { return m_aSet.GetDoc(); }
 
     /// Provides access to the document settings interface.
-    const IDocumentSettingAccess& getIDocumentSettingAccess() const;
+    SW_DLLPUBLIC const IDocumentSettingAccess& getIDocumentSettingAccess() 
const;
 
     /// Provides access to the document draw model interface.
     const IDocumentDrawModelAccess& getIDocumentDrawModelAccess() const;
@@ -182,7 +182,7 @@ public:
     bool IsHidden() const               { return m_bHidden; }
     void SetHidden( bool bValue )       { m_bHidden = bValue; }
 
-    void GetGrabBagItem(css::uno::Any& rVal) const;
+    SW_DLLPUBLIC void GetGrabBagItem(css::uno::Any& rVal) const;
     void SetGrabBagItem(const css::uno::Any& rVal);
 
     /// Query / set m_bAutoUpdateOnDirectFormat-flag.
@@ -230,7 +230,7 @@ public:
     inline const SvxFormatKeepItem         &GetKeep( bool = true ) const;
 
     // Create SvxBrushItem for Background fill (partially for backwards 
compatibility)
-    std::unique_ptr<SvxBrushItem> makeBackgroundBrushItem( bool = true ) const;
+    SW_DLLPUBLIC std::unique_ptr<SvxBrushItem> makeBackgroundBrushItem( bool = 
true ) const;
 
     inline const SvxShadowItem            &GetShadow( bool = true ) const;
     inline const SwFormatPageDesc            &GetPageDesc( bool = true ) const;
diff --git a/sw/inc/formatcontentcontrol.hxx b/sw/inc/formatcontentcontrol.hxx
index cffe326d0703..fdfe6a83c457 100644
--- a/sw/inc/formatcontentcontrol.hxx
+++ b/sw/inc/formatcontentcontrol.hxx
@@ -51,7 +51,7 @@ enum class SwContentControlType
 };
 
 /// SfxPoolItem subclass that wraps an SwContentControl.
-class SW_DLLPUBLIC SwFormatContentControl final : public SfxPoolItem
+class SAL_DLLPUBLIC_RTTI SwFormatContentControl final : public SfxPoolItem
 {
     std::shared_ptr<SwContentControl> m_pContentControl;
     SwTextContentControl* m_pTextAttr;
diff --git a/sw/inc/frmfmt.hxx b/sw/inc/frmfmt.hxx
index 6a0c6e8c2276..3c3203be5b89 100644
--- a/sw/inc/frmfmt.hxx
+++ b/sw/inc/frmfmt.hxx
@@ -67,7 +67,7 @@ class SwFormatsBase;
 class SwTableFormat;
 
 /// Style of a layout element.
-class SW_DLLPUBLIC SwFrameFormat
+class SAL_DLLPUBLIC_RTTI SwFrameFormat
     : public SwFormat
 {
     friend class SwDoc;
@@ -143,7 +143,7 @@ public:
     /** @return the real size of the frame - or an empty rectangle
        if no layout exists.
        If pPoint is given, look for the frame closest to it. */
-    SwRect FindLayoutRect( const bool bPrtArea = false,
+    SW_DLLPUBLIC SwRect FindLayoutRect( const bool bPrtArea = false,
                            const Point* pPoint = nullptr ) const;
 
     /** @return the SdrObject, that is connected to the ContactObject.
@@ -159,7 +159,7 @@ public:
     const SdrObject *FindSdrObject() const
         { return const_cast<SwFrameFormat*>(this)->FindSdrObject(); }
 
-          SdrObject *FindRealSdrObject();
+    SW_DLLPUBLIC SdrObject *FindRealSdrObject();
     const SdrObject *FindRealSdrObject() const
         { return const_cast<SwFrameFormat*>(this)->FindRealSdrObject(); }
 
diff --git a/sw/inc/ndole.hxx b/sw/inc/ndole.hxx
index 6265160219f9..f31ed42e5de3 100644
--- a/sw/inc/ndole.hxx
+++ b/sw/inc/ndole.hxx
@@ -32,7 +32,7 @@ class SwOLEListener_Impl;
 namespace sfx2 { class SvBaseLink; }
 class DeflateData;
 
-class SW_DLLPUBLIC SwOLEObj
+class SAL_DLLPUBLIC_RTTI SwOLEObj
 {
     friend class SwOLENode;
 
@@ -68,8 +68,8 @@ public:
 
     OUString GetDescription();
 
-    css::uno::Reference < css::embed::XEmbeddedObject > const & GetOleRef();
-    svt::EmbeddedObjectRef& GetObject();
+    SW_DLLPUBLIC css::uno::Reference < css::embed::XEmbeddedObject > const & 
GetOleRef();
+    SW_DLLPUBLIC svt::EmbeddedObjectRef& GetObject();
     const OUString& GetCurrentPersistName() const { return m_aName; }
     OUString GetStyleString();
     bool IsOleRef() const;  ///< To avoid unnecessary loading of object.
@@ -89,7 +89,7 @@ public:
 
 // SwOLENode
 
-class SW_DLLPUBLIC SwOLENode final: public SwNoTextNode
+class SAL_DLLPUBLIC_RTTI SwOLENode final: public SwNoTextNode
 {
     friend class SwNodes;
     mutable SwOLEObj maOLEObj;
@@ -123,9 +123,9 @@ public:
     /// Is in ndcopy.cxx.
     virtual SwContentNode* MakeCopy(SwDoc&, SwNode& rWhere, bool bNewFrames) 
const override;
 
-    virtual Size GetTwipSize() const override;
+    SW_DLLPUBLIC virtual Size GetTwipSize() const override;
 
-    const Graphic* GetGraphic();
+    SW_DLLPUBLIC const Graphic* GetGraphic();
 
     void GetNewReplacement();
 
diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx
index eb046bc9151d..9105b2f73d8d 100644
--- a/sw/inc/ndtxt.hxx
+++ b/sw/inc/ndtxt.hxx
@@ -105,7 +105,7 @@ struct ParagraphIdleData
 } // end namespace sw
 
 /// SwTextNode is a paragraph in the document model.
-class SW_DLLPUBLIC SwTextNode final
+class SAL_DLLPUBLIC_RTTI SwTextNode final
     : public SwContentNode
     , public ::sfx2::Metadatable
     , public sw::FormatDropDefiner
@@ -219,7 +219,7 @@ public:
     void SetWrong( std::unique_ptr<SwWrongList> pNew );
     void ClearWrong();
     std::unique_ptr<SwWrongList> ReleaseWrong();
-    SwWrongList* GetWrong();
+    SW_DLLPUBLIC SwWrongList* GetWrong();
     const SwWrongList* GetWrong() const;
     void SetGrammarCheck( std::unique_ptr<SwGrammarMarkUp> pNew );
     void ClearGrammarCheck();
@@ -256,15 +256,15 @@ public:
 
     virtual ~SwTextNode() override;
 
-    virtual sal_Int32 Len() const override;
+    SW_DLLPUBLIC virtual sal_Int32 Len() const override;
 
     /// Is in itratr.
     void GetMinMaxSize( SwNodeOffset nIndex, sal_uLong& rMin, sal_uLong &rMax, 
sal_uLong &rAbs ) const;
 
     /// overriding to handle change of certain paragraph attributes
-    virtual bool SetAttr( const SfxPoolItem& ) override;
+    SW_DLLPUBLIC virtual bool SetAttr( const SfxPoolItem& ) override;
     virtual bool SetAttr( const SfxItemSet& rSet ) override;
-    virtual bool ResetAttr( sal_uInt16 nWhich1, sal_uInt16 nWhich2 = 0 ) 
override;
+    SW_DLLPUBLIC virtual bool ResetAttr( sal_uInt16 nWhich1, sal_uInt16 
nWhich2 = 0 ) override;
     virtual bool ResetAttr( const std::vector<sal_uInt16>& rWhichArr ) 
override;
     virtual sal_uInt16 ResetAllAttr() override;
 
@@ -304,7 +304,7 @@ public:
         only the ones which have exactly same range. Don't delete the ones
         which are simply included in the range.
      */
-    void RstTextAttr(
+    SW_DLLPUBLIC void RstTextAttr(
         const sal_Int32 nContentStart,
         const sal_Int32 nLen,
         const sal_uInt16 nWhich = 0,
@@ -327,7 +327,7 @@ public:
                   const SetAttrMode nMode = SetAttrMode::DEFAULT );
     /// create new text attribute from rAttr and insert it
     /// @return     inserted hint; 0 if not sure the hint is inserted
-    SwTextAttr* InsertItem( SfxPoolItem& rAttr,
+    SW_DLLPUBLIC SwTextAttr* InsertItem( SfxPoolItem& rAttr,
                   const sal_Int32 nStart, const sal_Int32 nEnd,
                   const SetAttrMode nMode = SetAttrMode::DEFAULT );
 
@@ -344,14 +344,14 @@ public:
        the requested item set as a LR-SPACE item, if <bOnlyTextAttr> == false,
        corresponding node has not its own indent attributes and the
        position-and-space mode of the list level is 
SvxNumberFormat::LABEL_ALIGNMENT. */
-    bool GetParaAttr( SfxItemSet& rSet, sal_Int32 nStt, sal_Int32 nEnd,
+    SW_DLLPUBLIC bool GetParaAttr( SfxItemSet& rSet, sal_Int32 nStt, sal_Int32 
nEnd,
                   const bool bOnlyTextAttr  = false,
                   const bool bGetFromChrFormat = true,
                   const bool bMergeIndentValuesOfNumRule = false,
                   SwRootFrame const* pLayout = nullptr) const;
 
     /// Convey attributes of an AttrSet (AutoFormat) to SwpHintsArray.
-    void FormatToTextAttr( SwTextNode* pNd );
+    SW_DLLPUBLIC void FormatToTextAttr( SwTextNode* pNd );
 
     /// delete all attributes of type nWhich at nStart (opt. end nEnd)
     void DeleteAttributes( const sal_uInt16 nWhich,
@@ -396,8 +396,8 @@ public:
     virtual SwContentFrame *MakeFrame( SwFrame* ) override;
     SwTextNode * SplitContentNode(const SwPosition &,
             std::function<void (SwTextNode *, sw::mark::RestoreMode, bool 
AtStart)> const* pContentIndexRestore);
-    virtual SwContentNode *JoinNext() override;
-    void JoinPrev();
+    SW_DLLPUBLIC virtual SwContentNode *JoinNext() override;
+    SW_DLLPUBLIC void JoinPrev();
 
     SwContentNode *AppendNode( const SwPosition & );
 
@@ -413,7 +413,7 @@ public:
         hints of which several may cover a single position, like
         RES_TXTATR_CHARFMT, RES_TXTATR_REFMARK, RES_TXTATR_TOXMARK
      */
-    SwTextAttr *GetTextAttrAt(
+    SW_DLLPUBLIC SwTextAttr *GetTextAttrAt(
         sal_Int32 const nIndex,
         sal_uInt16 const nWhich,
         ::sw::GetTextAttrMode const eMode = ::sw::GetTextAttrMode::Default) 
const;
@@ -422,7 +422,7 @@ public:
         @param nWhich   only attributes with this id are returned.
         @param eMode    the predicate for matching (@see GetTextAttrMode).
      */
-    std::vector<SwTextAttr *> GetTextAttrsAt(
+    SW_DLLPUBLIC std::vector<SwTextAttr *> GetTextAttrsAt(
         sal_Int32 const nIndex,
         sal_uInt16 const nWhich ) const;
 
@@ -433,7 +433,7 @@ public:
                         attribute with given which id
         @return the text attribute at nIndex of type nWhich, if it exists
     */
-    SwTextAttr *GetTextAttrForCharAt(
+    SW_DLLPUBLIC SwTextAttr *GetTextAttrForCharAt(
         const sal_Int32 nIndex,
         const sal_uInt16 nWhich = RES_TXTATR_END ) const;
 
@@ -453,14 +453,14 @@ public:
     bool Convert( SwConversionArgs & );
 
     inline SwTextFormatColl *GetTextColl() const;
-    virtual SwFormatColl *ChgFormatColl( SwFormatColl* ) override;
+    SW_DLLPUBLIC virtual SwFormatColl *ChgFormatColl( SwFormatColl* ) override;
     void ChgTextCollUpdateNum(const SwTextFormatColl* pOld,
                               const SwTextFormatColl* pNew );
 
     /** Copy collection with all auto formats to dest-node.
         The latter might be in another document!
        (Method in ndcopy.cxx!!). */
-    void CopyCollFormat(SwTextNode& rDestNd, bool bUndoForChgFormatColl = 
true);
+    SW_DLLPUBLIC void CopyCollFormat(SwTextNode& rDestNd, bool 
bUndoForChgFormatColl = true);
 
     // BEGIN OF BULLET/NUMBERING/OUTLINE STUFF:
 
@@ -471,7 +471,7 @@ public:
 
        @return numbering rule of this text node or NULL if none is set
      */
-    SwNumRule *GetNumRule(bool bInParent = true) const;
+    SW_DLLPUBLIC SwNumRule *GetNumRule(bool bInParent = true) const;
 
     const SwNodeNum* GetNum(SwRootFrame const* pLayout = nullptr,
              SwListRedlineType eRedline = SwListRedlineType::SHOW) const;
@@ -486,7 +486,7 @@ public:
        @retval true      this text node is an outline
        @retval false     else
      */
-    bool IsOutline() const;
+    SW_DLLPUBLIC bool IsOutline() const;
 
     bool IsOutlineStateChanged() const;
 
@@ -511,7 +511,7 @@ public:
         level to which the output string must be restricted to. Default value 
is
         MAXLEVEL
     */
-    OUString GetNumString( const bool _bInclPrefixAndSuffixStrings = true,
+    SW_DLLPUBLIC OUString GetNumString( const bool 
_bInclPrefixAndSuffixStrings = true,
             const unsigned int _nRestrictToThisLevel = MAXLEVEL,
             SwRootFrame const* pLayout = nullptr,
             SwListRedlineType eRedline = SwListRedlineType::SHOW) const;
@@ -580,7 +580,7 @@ public:
         @retval true      This node is numbered.
         @retval false     else
      */
-    bool IsNumbered(SwRootFrame const* pLayout = nullptr) const;
+    SW_DLLPUBLIC bool IsNumbered(SwRootFrame const* pLayout = nullptr) const;
 
     /** Returns if this text node has a marked label.
 
@@ -597,7 +597,7 @@ public:
 
         @param nLevel level to set
     */
-    void SetAttrListLevel(int nLevel);
+    SW_DLLPUBLIC void SetAttrListLevel(int nLevel);
 
     bool HasAttrListLevel() const;
 
@@ -608,7 +608,7 @@ public:
         @return the actual list level of this text node, if it is a list item,
                -1 otherwise
     */
-    int GetActualListLevel(SwListRedlineType eRedline = 
SwListRedlineType::SHOW) const;
+    SW_DLLPUBLIC int GetActualListLevel(SwListRedlineType eRedline = 
SwListRedlineType::SHOW) const;
 
     /**
        Returns outline level of this text node.
@@ -679,7 +679,7 @@ public:
     bool HasVisibleNumberingOrBullet() const;
 
     void SetListId(OUString const& rListId);
-    OUString GetListId() const;
+    SW_DLLPUBLIC OUString GetListId() const;
 
     /** Determines, if the list level indent attributes can be applied to the
         paragraph.
@@ -695,7 +695,7 @@ public:
 
         @return bitmask
     */
-    ::sw::ListLevelIndents AreListLevelIndentsApplicable() const;
+    SW_DLLPUBLIC ::sw::ListLevelIndents AreListLevelIndentsApplicable() const;
     bool AreListLevelIndentsApplicableImpl(sal_uInt16 nWhich) const;
 
     /** Retrieves the list tab stop position, if the paragraph's list level 
defines
@@ -717,9 +717,9 @@ public:
 
     // END OF BULLET/NUMBERING/OUTLINE STUFF:
 
-    void fillSoftPageBreakList( SwSoftPageBreakList& rBreak ) const;
+    SW_DLLPUBLIC void fillSoftPageBreakList( SwSoftPageBreakList& rBreak ) 
const;
 
-    LanguageType GetLang( const sal_Int32 nBegin, const sal_Int32 nLen = 0,
+    SW_DLLPUBLIC LanguageType GetLang( const sal_Int32 nBegin, const sal_Int32 
nLen = 0,
                     sal_uInt16 nScript = 0, bool bNoneIfNoHyphenation = false 
) const;
 
     /// in ndcopy.cxx
@@ -736,7 +736,7 @@ public:
        add 5th optional parameter <bWithSpacesForLevel> indicating, if 
additional
        spaces are inserted in front of the expanded text string depending on
        the list level. */
-    OUString GetExpandText( SwRootFrame const* pLayout,
+    SW_DLLPUBLIC OUString GetExpandText( SwRootFrame const* pLayout,
                             const sal_Int32 nIdx = 0,
                             const sal_Int32 nLen = -1,
                             const bool bWithNum = false,
@@ -749,14 +749,14 @@ public:
                            bool bWithNum = false, bool bWithFootnote = true,
                            bool bReplaceTabsWithSpaces = false ) const;
 
-    OUString GetRedlineText() const;
+    SW_DLLPUBLIC OUString GetRedlineText() const;
 
     /** @return actual count of initial chars for initial-function.
        If nWishLen == 0 that of first word. */
-    sal_Int32 GetDropLen(sal_Int32 nWishLen) const;
+    SW_DLLPUBLIC sal_Int32 GetDropLen(sal_Int32 nWishLen) const;
 
     /// Passes back info needed on the dropcap dimensions
-    bool GetDropSize(int& rFontHeight, int& rDropHeight, int& rDropDescent) 
const;
+    SW_DLLPUBLIC bool GetDropSize(int& rFontHeight, int& rDropHeight, int& 
rDropDescent) const;
 
     /// Hidden Paragraph Field:
     bool CalcHiddenParaField()
@@ -810,16 +810,16 @@ public:
     /// Checks a temporary notification blocker and the global conditions of 
IsNotificationEnabled()
     bool IsNotifiable() const;
 
-    void SetListRestart( bool bRestart );
-    bool IsListRestart() const;
+    SW_DLLPUBLIC void SetListRestart( bool bRestart );
+    SW_DLLPUBLIC bool IsListRestart() const;
 
-    void SetAttrListRestartValue( SwNumberTree::tSwNumTreeNumber nNum );
+    SW_DLLPUBLIC void SetAttrListRestartValue( SwNumberTree::tSwNumTreeNumber 
nNum );
     bool HasAttrListRestartValue() const;
     SwNumberTree::tSwNumTreeNumber GetAttrListRestartValue() const;
-    SwNumberTree::tSwNumTreeNumber GetActualListStartValue() const;
+    SW_DLLPUBLIC SwNumberTree::tSwNumTreeNumber GetActualListStartValue() 
const;
 
-    void SetCountedInList( bool bCounted );
-    bool IsCountedInList() const;
+    SW_DLLPUBLIC void SetCountedInList( bool bCounted );
+    SW_DLLPUBLIC bool IsCountedInList() const;
 
     void AddToList();
     void AddToListRLHidden();
@@ -827,7 +827,7 @@ public:
     void RemoveFromList();
     void RemoveFromListRLHidden();
     void RemoveFromListOrig();
-    bool IsInList() const;
+    SW_DLLPUBLIC bool IsInList() const;
 
     bool IsFirstOfNumRule(SwRootFrame const& rLayout) const;
 
diff --git a/sw/inc/node.hxx b/sw/inc/node.hxx
index ec17dd6aa78c..71164abdcd81 100644
--- a/sw/inc/node.hxx
+++ b/sw/inc/node.hxx
@@ -93,7 +93,7 @@ struct AccessibilityCheckStatus
 }
 
 /// Base class of the Writer document model elements.
-class SW_DLLPUBLIC SwNode
+class SAL_DLLPUBLIC_RTTI SwNode
     : public sw::BorderCacheOwner, private BigPtrEntry
 {
     friend class SwNodes;
@@ -204,15 +204,15 @@ public:
 
     /** Search table node, in which it is. If it is in no table
        @return 0. */
-                    SwTableNode *FindTableNode();
+    SW_DLLPUBLIC SwTableNode *FindTableNode();
     inline const  SwTableNode *FindTableNode() const;
 
     /** Search section node, in which it is. If it is in no section
        @return 0. */
-                    SwSectionNode *FindSectionNode();
+    SW_DLLPUBLIC SwSectionNode *FindSectionNode();
     inline    const   SwSectionNode *FindSectionNode() const;
 
-    SwStartNode* FindSttNodeByType( SwStartNodeType eTyp );
+    SW_DLLPUBLIC SwStartNode* FindSttNodeByType( SwStartNodeType eTyp );
     inline const SwStartNode* FindSttNodeByType( SwStartNodeType eTyp ) const;
 
     const SwStartNode* FindTableBoxStartNode() const
@@ -301,19 +301,19 @@ public:
     /** Search PageDesc with which this node is formatted. If layout is 
existent
        search over layout, else only the hard way is left: search over the 
nodes
        to the front!! */
-    const SwPageDesc* FindPageDesc( SwNodeOffset* pPgDescNdIdx = nullptr ) 
const;
+    SW_DLLPUBLIC const SwPageDesc* FindPageDesc( SwNodeOffset* pPgDescNdIdx = 
nullptr ) const;
 
     /// If node is in a fly return the respective format.
-    SwFrameFormat* GetFlyFormat() const;
+    SW_DLLPUBLIC SwFrameFormat* GetFlyFormat() const;
 
     /// If node is in a table return the respective table box.
-    SwTableBox* GetTableBox() const;
+    SW_DLLPUBLIC SwTableBox* GetTableBox() const;
 
     SwNodeOffset GetIndex() const { return SwNodeOffset(GetPos()); }
 
-    const SwTextNode* FindOutlineNodeOfLevel(sal_uInt8 nLvl, SwRootFrame 
const* pLayout = nullptr) const;
+    SW_DLLPUBLIC const SwTextNode* FindOutlineNodeOfLevel(sal_uInt8 nLvl, 
SwRootFrame const* pLayout = nullptr) const;
 
-    sal_uInt8 HasPrevNextLayNode() const;
+    SW_DLLPUBLIC sal_uInt8 HasPrevNextLayNode() const;
 
     std::vector<SwFrameFormat *> const & GetAnchoredFlys() const { return 
m_aAnchoredFlys; }
     void AddAnchoredFly(SwFrameFormat *);
diff --git a/sw/inc/section.hxx b/sw/inc/section.hxx
index f75c68b13f80..e59d727f5291 100644
--- a/sw/inc/section.hxx
+++ b/sw/inc/section.hxx
@@ -136,7 +136,7 @@ public:
     void dumpAsXml(xmlTextWriterPtr pWriter) const;
 };
 
-class SW_DLLPUBLIC SwSection
+class SAL_DLLPUBLIC_RTTI SwSection
     : public SwClient
     , public SvtListener // needed for SwClientNotify to be called from 
SwSectionFormat
 {
@@ -180,7 +180,7 @@ public:
     // (Attributes/flags are set/get.)
     bool IsHidden()  const { return m_Data.IsHidden(); }
     void SetHidden (bool const bFlag = true);
-    bool IsProtect() const;
+    SW_DLLPUBLIC bool IsProtect() const;
     void SetProtect(bool const bFlag = true);
     bool IsEditInReadonly() const;
     void SetEditInReadonly(bool const bFlag = true);
@@ -243,7 +243,7 @@ public:
                                     { m_Data.SetConnectFlag(bFlag); }
 
     // Return the TOX base class if the section is a TOX section
-    const SwTOXBase* GetTOXBase() const;
+    SW_DLLPUBLIC const SwTOXBase* GetTOXBase() const;
 
     void BreakLink();
 
@@ -270,7 +270,7 @@ class SwSectionFrameMoveAndDeleteHint final : public SfxHint
 
 enum class SectionSort { Not, Pos };
 
-class SW_DLLPUBLIC SwSectionFormat final
+class SAL_DLLPUBLIC_RTTI SwSectionFormat final
     : public SwFrameFormat
     , public ::sfx2::Metadatable
 {
@@ -288,7 +288,7 @@ class SW_DLLPUBLIC SwSectionFormat final
     virtual void SwClientNotify(const SwModify&, const SfxHint&) override;
 
 public:
-    virtual ~SwSectionFormat() override;
+    SW_DLLPUBLIC virtual ~SwSectionFormat() override;
 
     // Deletes all Frames in aDepend (Frames are recognized via dynamic_cast).
     virtual void DelFrames() override;
@@ -301,21 +301,21 @@ public:
 
     virtual bool IsVisible() const override;
 
-    SwSection* GetSection() const;
+    SW_DLLPUBLIC SwSection* GetSection() const;
     inline SwSectionFormat* GetParent() const;
     inline SwSection* GetParentSection() const;
 
     //  All sections that are derived from this one:
     //  - sorted according to name or position or unsorted
     //  - all of them or only those that are in the normal Nodes-array.
-    void GetChildSections( SwSections& rArr,
+    SW_DLLPUBLIC void GetChildSections( SwSections& rArr,
                             SectionSort eSort = SectionSort::Not,
                             bool bAllSections = true ) const;
 
     // Query whether section is in Nodes-array or in UndoNodes-array.
-    bool IsInNodesArr() const;
+    SW_DLLPUBLIC bool IsInNodesArr() const;
 
-          SwSectionNode* GetSectionNode();
+    SW_DLLPUBLIC SwSectionNode* GetSectionNode();
     const SwSectionNode* GetSectionNode() const
         { return const_cast<SwSectionFormat *>(this)
                 ->GetSectionNode(); }
@@ -330,7 +330,7 @@ public:
     // sfx2::Metadatable
     virtual ::sfx2::IXmlIdRegistry& GetRegistry() override;
     virtual bool IsInClipboard() const override;
-    virtual bool IsInUndo() const override;
+    SW_DLLPUBLIC virtual bool IsInUndo() const override;
     virtual bool IsInContent() const override;
     virtual css::uno::Reference< css::rdf::XMetadatable > MakeUnoObject() 
override;
     virtual bool supportsFullDrawingLayerFillAttributeSet() const override;
diff --git a/sw/inc/swtable.hxx b/sw/inc/swtable.hxx
index ffa9e88a0ce0..9d4ab72e0809 100644
--- a/sw/inc/swtable.hxx
+++ b/sw/inc/swtable.hxx
@@ -372,7 +372,7 @@ public:
 };
 
 /// SwTableLine is one table row in the document model.
-class SW_DLLPUBLIC SwTableLine final : public SwClient     // Client of 
FrameFormat.
+class SAL_DLLPUBLIC_RTTI SwTableLine final : public SwClient     // Client of 
FrameFormat.
 {
     SwTableBoxes m_aBoxes;
     SwTableBox *m_pUpper;
@@ -399,7 +399,7 @@ public:
     SwFrameFormat* GetFrameFormat() const { return 
const_cast<SwFrameFormat*>(static_cast<const 
SwFrameFormat*>(GetRegisteredIn())); }
 
     // Creates an own FrameFormat if more lines depend on it.
-    SwFrameFormat* ClaimFrameFormat();
+    SW_DLLPUBLIC SwFrameFormat* ClaimFrameFormat();
     void ChgFrameFormat( SwTableLineFormat* pNewFormat );
 
     // Search next/previous box with content.
@@ -424,11 +424,11 @@ public:
     // in the case of deleted row, the first insertion in the case of row 
insertion
     // or npos, if TextChangesOnly is true, i.e. the table row is not deleted 
or inserted).
     // Cache also the type of the redline associated to the changed table row.
-    SwRedlineTable::size_type UpdateTextChangesOnly(
+    SW_DLLPUBLIC SwRedlineTable::size_type UpdateTextChangesOnly(
         SwRedlineTable::size_type& rRedlinePos, bool bUpdateProperty = true) 
const;
     // tracked text changes, i.e. a single redline can contain tables
     // get that redline for the table row, if it exists
-    SwRedlineTable::size_type GetTableRedline() const;
+    SW_DLLPUBLIC SwRedlineTable::size_type GetTableRedline() const;
     // is it a tracked row
     bool IsTracked(SwRedlineTable::size_type& rRedlinePos, bool bOnlyDeleted = 
false) const;
     // is it a tracked deleted row
@@ -439,7 +439,7 @@ public:
 };
 
 /// SwTableBox is one table cell in the document model.
-class SW_DLLPUBLIC SwTableBox final : public SwClient      //Client of 
FrameFormat.
+class SAL_DLLPUBLIC_RTTI SwTableBox final : public SwClient      //Client of 
FrameFormat.
 {
     friend class SwNodes;           // Transpose index.
     friend void DelBoxNode(SwTableSortBoxes const &);  // Delete StartNode* !
@@ -488,12 +488,12 @@ public:
     bool HasDirectFormatting() const { return mbDirectFormatting; }
 
     // Creates its own FrameFormat if more boxes depend on it.
-    SwFrameFormat* ClaimFrameFormat();
-    void ChgFrameFormat( SwTableBoxFormat *pNewFormat, bool bNeedToReregister 
= true );
+    SW_DLLPUBLIC SwFrameFormat* ClaimFrameFormat();
+    SW_DLLPUBLIC void ChgFrameFormat( SwTableBoxFormat *pNewFormat, bool 
bNeedToReregister = true );
 
     void RemoveFromTable();
     const SwStartNode *GetSttNd() const { return m_pStartNode; }
-    SwNodeOffset GetSttIdx() const;
+    SW_DLLPUBLIC SwNodeOffset GetSttIdx() const;
     // it doesn't contain box content or if bWithRemainingNestedTable = true,
     // it contains only an empty nested table as box content (which
     // could remain after deletion of the text content of the selected box).
@@ -511,7 +511,7 @@ public:
 
     // Computes "coordinates" of a box, used to computed selection
     // width or height when inserting cols or rows
-    Point GetCoordinates() const;
+    SW_DLLPUBLIC Point GetCoordinates() const;
 
     bool IsInHeadline( const SwTable* pTable ) const;
 
@@ -526,7 +526,7 @@ public:
     // Is that a formula box or a box with numeric contents (AutoSum)?
     // What it is indicated by the return value - the WhichId of the attribute.
     // Empty boxes have the return value USHRT_MAX !!
-    sal_uInt16 IsFormulaOrValueBox() const;
+    SW_DLLPUBLIC sal_uInt16 IsFormulaOrValueBox() const;
 
     // Loading of a document requires an actualization of cells with values
     void ActualiseValueBox();
@@ -538,7 +538,7 @@ public:
     void SetSaveNumFormatColor( std::optional<Color> p ) { mxNumFormatColor = 
p; }
 
     sal_Int32 getRowSpan() const { return mnRowSpan; }
-    void setRowSpan( sal_Int32 nNewRowSpan );
+    SW_DLLPUBLIC void setRowSpan( sal_Int32 nNewRowSpan );
     bool getDummyFlag() const;
     void setDummyFlag( bool bDummy );
 
@@ -553,7 +553,7 @@ public:
         { return const_cast<SwTableBox*>(this)->FindEndOfRowSpan( rTable, 
nMaxStep ); }
     void RegisterToFormat( SwFormat& rFormat ) ;
     // get redline for the table cell, if it exists
-    SwRedlineTable::size_type GetRedline() const;
+    SW_DLLPUBLIC SwRedlineTable::size_type GetRedline() const;
     // get redline type
     RedlineType GetRedlineType() const;
 
diff --git a/sw/inc/tblafmt.hxx b/sw/inc/tblafmt.hxx
index dbbec1909ae2..30e75576bb6b 100644
--- a/sw/inc/tblafmt.hxx
+++ b/sw/inc/tblafmt.hxx
@@ -151,7 +151,7 @@ The properties saved are divided into three categories:
 Character and box properties are stored per cell (and are lossy for tables 
larger than 4x4). Table
 properties are stored per-table, and are lossless.
 */
-class SW_DLLPUBLIC SwTableAutoFormat
+class SAL_DLLPUBLIC_RTTI SwTableAutoFormat
 {
     friend class SwDocTest;
     friend void FinitCore();       // To destroy default pointer.
@@ -185,11 +185,11 @@ class SW_DLLPUBLIC SwTableAutoFormat
     bool m_bHidden;
     bool m_bUserDefined;
 public:
-    SwTableAutoFormat( OUString aName );
-    SwTableAutoFormat( const SwTableAutoFormat& rNew );
-    ~SwTableAutoFormat();
+    SW_DLLPUBLIC SwTableAutoFormat( OUString aName );
+    SW_DLLPUBLIC SwTableAutoFormat( const SwTableAutoFormat& rNew );
+    SW_DLLPUBLIC ~SwTableAutoFormat();
 
-    SwTableAutoFormat& operator=( const SwTableAutoFormat& rNew );
+    SW_DLLPUBLIC SwTableAutoFormat& operator=( const SwTableAutoFormat& rNew );
 
     const SvxFormatKeepItem& GetKeepWithNextPara() const { return 
*m_aKeepWithNextPara; }
     const SvxShadowItem& GetShadow() const { return *m_aShadow; }
@@ -199,7 +199,7 @@ public:
 
     void SetBoxFormat( const SwBoxAutoFormat& rNew, sal_uInt8 nPos );
     const SwBoxAutoFormat& GetBoxFormat( sal_uInt8 nPos ) const;
-    SwBoxAutoFormat& GetBoxFormat( sal_uInt8 nPos );
+    SW_DLLPUBLIC SwBoxAutoFormat& GetBoxFormat( sal_uInt8 nPos );
     static const SwBoxAutoFormat& GetDefaultBoxFormat();
 
     void SetName( const OUString& rNew ) { m_aName = rNew; m_nStrResId = 
USHRT_MAX; }
diff --git a/sw/inc/textboxhelper.hxx b/sw/inc/textboxhelper.hxx
index c4f4c3d8fbbb..ea4df70ebc4d 100644
--- a/sw/inc/textboxhelper.hxx
+++ b/sw/inc/textboxhelper.hxx
@@ -53,7 +53,7 @@ class SpzFrameFormat;
  * This class provides helper methods to create, query and maintain such
  * TextBoxes.
  */
-class SW_DLLPUBLIC SwTextBoxHelper
+class SwTextBoxHelper
 {
 public:
     /// Maps a draw format to a fly format.
@@ -63,7 +63,8 @@ public:
     /// Create a TextBox for a shape. If the third parameter is true,
     /// the original text in the shape will be copied to the frame
     /// The textbox is created for the shape given by the pObject parameter.
-    static void create(SwFrameFormat* pShape, SdrObject* pObject, bool 
bCopyText = false);
+    SW_DLLPUBLIC static void create(SwFrameFormat* pShape, SdrObject* pObject,
+                                    bool bCopyText = false);
     /// Sets the given textframe as textbox for the given (group member) shape.
     static void set(SwFrameFormat* pShape, SdrObject* pObject,
                     css::uno::Reference<css::text::XTextFrame> xNew);
@@ -122,13 +123,14 @@ public:
      *
      * @see isTextBox
      */
-    static SwFrameFormat* getOtherTextBoxFormat(const SwFrameFormat* pFormat, 
sal_uInt16 nType,
-                                                const SdrObject* pObject = 
nullptr);
+    SW_DLLPUBLIC static SwFrameFormat* getOtherTextBoxFormat(const 
SwFrameFormat* pFormat,
+                                                             sal_uInt16 nType,
+                                                             const SdrObject* 
pObject = nullptr);
     /// If we have an associated TextFrame, then return that.
-    static SwFrameFormat*
+    SW_DLLPUBLIC static SwFrameFormat*
     getOtherTextBoxFormat(css::uno::Reference<css::drawing::XShape> const& 
xShape);
     /// If we have an associated TextFrame, then return its XTextFrame.
-    static css::uno::Reference<css::text::XTextFrame>
+    SW_DLLPUBLIC static css::uno::Reference<css::text::XTextFrame>
     getUnoTextFrame(css::uno::Reference<css::drawing::XShape> const& xShape);
     /// Return the textbox rectangle of a draw shape (in relative twips).
     static tools::Rectangle getRelativeTextRectangle(SdrObject* pShape);
@@ -149,16 +151,16 @@ public:
      *                 pObject will be inspected. If this parameter nullptr,
      *                 the textbox what belongs to the pObject will only be 
inspected.
      */
-    static bool isTextBox(const SwFrameFormat* pFormat, sal_uInt16 nType,
-                          const SdrObject* pObject = nullptr);
+    SW_DLLPUBLIC static bool isTextBox(const SwFrameFormat* pFormat, 
sal_uInt16 nType,
+                                       const SdrObject* pObject = nullptr);
 
     /// Returns true if the SdrObject has a SwTextFrame otherwise false
     static bool hasTextFrame(const SdrObject* pObj);
 
     /// Count number of shapes in the document, excluding TextBoxes.
-    static sal_Int32 getCount(const SwDoc& rDoc);
+    SW_DLLPUBLIC static sal_Int32 getCount(const SwDoc& rDoc);
     /// Count number of shapes on the page, excluding TextBoxes.
-    static sal_Int32 getCount(SdrPage const* pPage);
+    SW_DLLPUBLIC static sal_Int32 getCount(SdrPage const* pPage);
     /// Get a shape by index, excluding TextBoxes.
     ///
     /// @throws css::lang::IndexOutOfBoundsException
diff --git a/sw/inc/txtftn.hxx b/sw/inc/txtftn.hxx
index 6c8ca41bc8c6..2ea9b48ecdcf 100644
--- a/sw/inc/txtftn.hxx
+++ b/sw/inc/txtftn.hxx
@@ -30,7 +30,7 @@ class SwRootFrame;
 
 /// SwTextAttr subclass for footnotes and endnotes. If it's an endnote is 
decided by the owned
 /// SwFormatFootnote's m_bEndNote.
-class SW_DLLPUBLIC SwTextFootnote final : public SwTextAttr
+class SAL_DLLPUBLIC_RTTI SwTextFootnote final : public SwTextAttr
 {
     std::optional<SwNodeIndex> m_oStartNode;
     SwTextNode * m_pTextNode;
@@ -44,7 +44,7 @@ public:
 
     const SwNodeIndex *GetStartNode() const { return m_oStartNode ? 
&*m_oStartNode : nullptr; }
     void SetStartNode( const SwNodeIndex *pNode, bool bDelNodes = true );
-    void SetNumber(sal_uInt16 nNumber, sal_uInt16 nNumberRLHidden, const 
OUString &sNumStr);
+    SW_DLLPUBLIC void SetNumber(sal_uInt16 nNumber, sal_uInt16 
nNumberRLHidden, const OUString &sNumStr);
     void CopyFootnote(SwTextFootnote & rDest, SwTextNode & rDestNode) const;
 
     // Get and set TextNode pointer.
diff --git a/sw/inc/unotbl.hxx b/sw/inc/unotbl.hxx
index 323a4f7b8e79..1e3ad4161cb3 100644
--- a/sw/inc/unotbl.hxx
+++ b/sw/inc/unotbl.hxx
@@ -244,7 +244,7 @@ struct SwRangeDescriptor
     void Normalize();
 };
 
-class SW_DLLPUBLIC SwXTextTable final : public cppu::WeakImplHelper
+class SAL_DLLPUBLIC_RTTI SwXTextTable final : public cppu::WeakImplHelper
 <
     css::text::XTextTable,
     css::lang::XServiceInfo,
@@ -269,9 +269,9 @@ public:
     static rtl::Reference<SwXTextTable>
             CreateXTextTable(SwFrameFormat * pFrameFormat);
 
-    static void GetCellPosition(std::u16string_view aCellName, sal_Int32& 
o_rColumn, sal_Int32& o_rRow);
+    SW_DLLPUBLIC static void GetCellPosition(std::u16string_view aCellName, 
sal_Int32& o_rColumn, sal_Int32& o_rRow);
 
-    SwFrameFormat* GetFrameFormat();
+    SW_DLLPUBLIC SwFrameFormat* GetFrameFormat();
 
     //XTextTable
     virtual void SAL_CALL initialize( sal_Int32 nRows, sal_Int32 nColumns ) 
override;
diff --git a/sw/inc/unotextrange.hxx b/sw/inc/unotextrange.hxx
index 1d2265ddfec1..54b7becfff62 100644
--- a/sw/inc/unotextrange.hxx
+++ b/sw/inc/unotextrange.hxx
@@ -85,7 +85,7 @@ typedef ::cppu::WeakImplHelper
 ,   css::text::XRedline
 > SwXTextRange_Base;
 
-class SW_DLLPUBLIC SwXTextRange final
+class SAL_DLLPUBLIC_RTTI SwXTextRange final
     : public SwXTextRange_Base
 {
 
@@ -115,7 +115,7 @@ public:
         RANGE_IS_SECTION, // anchor of a section
     };
 
-    SwXTextRange(SwPaM const & rPam,
+    SW_DLLPUBLIC SwXTextRange(SwPaM const & rPam,
             const css::uno::Reference< css::text::XText > & xParent,
             const enum RangePosition eRange = RANGE_IN_TEXT);
     // only for RANGE_IS_TABLE
@@ -125,10 +125,10 @@ public:
 
     const SwDoc& GetDoc() const;
           SwDoc& GetDoc();
-    bool GetPositions(SwPaM & rToFill,
+    SW_DLLPUBLIC bool GetPositions(SwPaM & rToFill,
         ::sw::TextRangeMode eMode = ::sw::TextRangeMode::RequireTextNode) 
const;
 
-    static rtl::Reference< SwXTextRange > CreateXTextRange(
+    SW_DLLPUBLIC static rtl::Reference< SwXTextRange > CreateXTextRange(
             SwDoc & rDoc,
             const SwPosition& rPos, const SwPosition *const pMark);
 
@@ -186,11 +186,11 @@ public:
         getAvailableServiceNames() override;
 
     // XTextRange
-    virtual css::uno::Reference< css::text::XText >
+    SW_DLLPUBLIC virtual css::uno::Reference< css::text::XText >
         SAL_CALL getText() override;
-    virtual css::uno::Reference<
+    SW_DLLPUBLIC virtual css::uno::Reference<
                 css::text::XTextRange > SAL_CALL getStart() override;
-    virtual css::uno::Reference<
+    SW_DLLPUBLIC virtual css::uno::Reference<
                 css::text::XTextRange > SAL_CALL getEnd() override;
     virtual OUString SAL_CALL getString() override;
     virtual void SAL_CALL setString(const OUString& rString) override;
diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx
index 4fce95eda9ec..9b7b6f16e4d4 100644
--- a/sw/inc/unotxdoc.hxx
+++ b/sw/inc/unotxdoc.hxx
@@ -153,7 +153,7 @@ typedef cppu::ImplInheritanceHelper
 >
 SwXTextDocumentBaseClass;
 
-class SW_DLLPUBLIC SwXTextDocument final : public SwXTextDocumentBaseClass,
+class SAL_DLLPUBLIC_RTTI SwXTextDocument final : public 
SwXTextDocumentBaseClass,
     public SvxFmMSFactory,
     public vcl::ITiledRenderable,
     public css::tiledrendering::XTiledRenderable
@@ -240,19 +240,19 @@ public:
 
     void NotifyRefreshListeners();
     virtual     css::uno::Any SAL_CALL queryInterface( const css::uno::Type& 
aType ) override;
-    virtual void SAL_CALL acquire(  ) noexcept override;
-    virtual void SAL_CALL release(  ) noexcept override;
+    SW_DLLPUBLIC virtual void SAL_CALL acquire(  ) noexcept override;
+    SW_DLLPUBLIC virtual void SAL_CALL release(  ) noexcept override;
 
     //XWeak
     virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes(  ) 
override;
 
-    static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+    SW_DLLPUBLIC static const css::uno::Sequence< sal_Int8 > & 
getUnoTunnelId();
 
     //XUnoTunnel
     virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< 
sal_Int8 >& aIdentifier ) override;
 
     //XTextDocument
-    virtual css::uno::Reference< css::text::XText >  SAL_CALL getText() 
override;
+    SW_DLLPUBLIC virtual css::uno::Reference< css::text::XText >  SAL_CALL 
getText() override;
     rtl::Reference< SwXBodyText > getBodyText();
     virtual void SAL_CALL reformat() override;
 
@@ -265,12 +265,12 @@ public:
     virtual void SAL_CALL lockControllers(  ) override;
     virtual void SAL_CALL unlockControllers(  ) override;
     virtual sal_Bool SAL_CALL hasControllersLocked(  ) override;
-    virtual css::uno::Reference< css::frame::XController > SAL_CALL 
getCurrentController(  ) override;
+    SW_DLLPUBLIC virtual css::uno::Reference< css::frame::XController > 
SAL_CALL getCurrentController(  ) override;
     virtual void SAL_CALL setCurrentController( const css::uno::Reference< 
css::frame::XController >& xController ) override;
     virtual css::uno::Reference< css::uno::XInterface > SAL_CALL 
getCurrentSelection(  ) override;
 
     //XComponent
-    virtual void SAL_CALL dispose() override;
+    SW_DLLPUBLIC virtual void SAL_CALL dispose() override;
     virtual void SAL_CALL addEventListener(const css::uno::Reference< 
css::lang::XEventListener > & aListener) override;
     virtual void SAL_CALL removeEventListener(const css::uno::Reference< 
css::lang::XEventListener > & aListener) override;
 
@@ -287,7 +287,7 @@ public:
     virtual css::uno::Reference< css::container::XIndexAccess > SAL_CALL 
getNumberingRules() override;
 
     //XFootnotesSupplier
-    virtual css::uno::Reference< css::container::XIndexAccess >  SAL_CALL 
getFootnotes() override;
+    SW_DLLPUBLIC virtual css::uno::Reference< css::container::XIndexAccess >  
SAL_CALL getFootnotes() override;
     virtual css::uno::Reference< css::beans::XPropertySet >  SAL_CALL 
getFootnoteSettings() override;
 
     //XEndnotesSupplier
@@ -295,7 +295,7 @@ public:
     virtual css::uno::Reference< css::beans::XPropertySet >  SAL_CALL 
getEndnoteSettings() override;
 
     // XContentControlsSupplier
-    css::uno::Reference<css::container::XIndexAccess> SAL_CALL 
getContentControls() override;
+    SW_DLLPUBLIC css::uno::Reference<css::container::XIndexAccess> SAL_CALL 
getContentControls() override;
 
     //XReplaceable
     virtual css::uno::Reference< css::util::XReplaceDescriptor >  SAL_CALL 
createReplaceDescriptor() override;
@@ -326,13 +326,13 @@ public:
     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL 
getBookmarks() override;
 
     // css::text::XTextSectionsSupplier
-    virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL 
getTextSections() override;
+    SW_DLLPUBLIC virtual css::uno::Reference< css::container::XNameAccess >  
SAL_CALL getTextSections() override;
 
     // css::text::XTextTablesSupplier
     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL 
getTextTables() override;
 
     // css::text::XTextGraphicObjectsSupplier
-    virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL 
getGraphicObjects() override;
+    SW_DLLPUBLIC virtual css::uno::Reference< css::container::XNameAccess >  
SAL_CALL getGraphicObjects() override;
 
     // css::text::XTextFramesSupplier
     virtual css::uno::Reference< css::container::XNameAccess >  SAL_CALL 
getTextFrames() override;
@@ -344,7 +344,7 @@ public:
     virtual css::uno::Reference< css::style::XAutoStyles > SAL_CALL 
getAutoStyles(  ) override;
 
     //XMultiServiceFactory
-    virtual css::uno::Reference< css::uno::XInterface >  SAL_CALL 
createInstance(const OUString& ServiceSpecifier) override;
+    SW_DLLPUBLIC virtual css::uno::Reference< css::uno::XInterface >  SAL_CALL 
createInstance(const OUString& ServiceSpecifier) override;
     virtual css::uno::Reference< css::uno::XInterface >  SAL_CALL 
createInstanceWithArguments(const OUString& ServiceSpecifier,
                 const css::uno::Sequence< css::uno::Any >& Arguments) override;
     virtual css::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames() 
override;
@@ -355,7 +355,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 
     // css::drawing::XDrawPageSupplier
-    virtual css::uno::Reference< css::drawing::XDrawPage >  SAL_CALL 
getDrawPage() override;
+    SW_DLLPUBLIC virtual css::uno::Reference< css::drawing::XDrawPage >  
SAL_CALL getDrawPage() override;
 
     // css::drawing::XDrawPagesSupplier
     virtual css::uno::Reference< css::drawing::XDrawPages > SAL_CALL 
getDrawPages() override;
@@ -366,7 +366,7 @@ public:
     //XPropertySet
     virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL 
getPropertySetInfo(  ) override;
     virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, 
const css::uno::Any& aValue ) override;
-    virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& 
PropertyName ) override;
+    SW_DLLPUBLIC virtual css::uno::Any SAL_CALL getPropertyValue( const 
OUString& PropertyName ) override;
     virtual void SAL_CALL addPropertyChangeListener( const OUString& 
aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener 
>& xListener ) override;
     virtual void SAL_CALL removePropertyChangeListener( const OUString& 
aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener 
>& aListener ) override;
     virtual void SAL_CALL addVetoableChangeListener( const OUString& 
PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& 
aListener ) override;
@@ -416,7 +416,7 @@ public:
         const ::css::uno::Reference<::css::text::XPasteListener>& xListener) 
override;
 
     /// @see vcl::ITiledRenderable::paintTile().
-    virtual void paintTile( VirtualDevice &rDevice,
+    SW_DLLPUBLIC virtual void paintTile( VirtualDevice &rDevice,
                             int nOutputWidth,
                             int nOutputHeight,
                             int nTilePosX,
@@ -424,33 +424,33 @@ public:
                             tools::Long nTileWidth,
                             tools::Long nTileHeight ) override;
     /// @see vcl::ITiledRenderable::getDocumentSize().
-    virtual Size getDocumentSize() override;
+    SW_DLLPUBLIC virtual Size getDocumentSize() override;
     /// @see vcl::ITiledRenderable::setPart().
     virtual void setPart(int nPart, bool bAllowChangeFocus = true) override;
     /// @see vcl::ITiledRenderable::getParts().
-    virtual int getParts() override;
+    SW_DLLPUBLIC virtual int getParts() override;
     /// @see vcl::ITiledRenderable::getPart().
     virtual int getPart() override;
     /// @see vcl::ITiledRenderable::getPartName().
     virtual OUString getPartName(int nPart) override;
     /// @see vcl::ITiledRenderable::getPartHash().
-    virtual OUString getPartHash(int nPart) override;
+    SW_DLLPUBLIC virtual OUString getPartHash(int nPart) override;
     /// @see vcl::ITiledRenderable::getDocWindow().
-    virtual VclPtr<vcl::Window> getDocWindow() override;
+    SW_DLLPUBLIC virtual VclPtr<vcl::Window> getDocWindow() override;
     /// @see vcl::ITiledRenderable::initializeForTiledRendering().
-    virtual void initializeForTiledRendering(const 
css::uno::Sequence<css::beans::PropertyValue>& rArguments) override;
+    SW_DLLPUBLIC virtual void initializeForTiledRendering(const 
css::uno::Sequence<css::beans::PropertyValue>& rArguments) override;
     /// @see vcl::ITiledRenderable::postKeyEvent().
-    virtual void postKeyEvent(int nType, int nCharCode, int nKeyCode) override;
+    SW_DLLPUBLIC virtual void postKeyEvent(int nType, int nCharCode, int 
nKeyCode) override;
     /// @see vcl::ITiledRenderable::postMouseEvent().
-    virtual void postMouseEvent(int nType, int nX, int nY, int nCount, int 
nButtons, int nModifier) override;
+    SW_DLLPUBLIC virtual void postMouseEvent(int nType, int nX, int nY, int 
nCount, int nButtons, int nModifier) override;
     /// @see vcl::ITiledRenderable::setTextSelection().
-    virtual void setTextSelection(int nType, int nX, int nY) override;
+    SW_DLLPUBLIC virtual void setTextSelection(int nType, int nX, int nY) 
override;
     /// @see vcl::ITiledRenderable::getSelection().
-    virtual css::uno::Reference<css::datatransfer::XTransferable> 
getSelection() override;
+    SW_DLLPUBLIC virtual css::uno::Reference<css::datatransfer::XTransferable> 
getSelection() override;
     /// @see vcl::ITiledRenderable::setGraphicSelection().
-    virtual void setGraphicSelection(int nType, int nX, int nY) override;
+    SW_DLLPUBLIC virtual void setGraphicSelection(int nType, int nX, int nY) 
override;
     /// @see vcl::ITiledRenderable::resetSelection().
-    virtual void resetSelection() override;
+    SW_DLLPUBLIC virtual void resetSelection() override;
     /// @see vcl::ITiledRenderable::getPartPageRectangles().
     virtual OUString getPartPageRectangles() override;
     /// @see vcl::ITiledRenderable::setClipboard().
@@ -458,7 +458,7 @@ public:
     /// @see vcl::ITiledRenderable::isMimeTypeSupported().
     virtual bool isMimeTypeSupported() override;
     /// @see vcl::ITiledRenderable::setClientVisibleArea().
-    virtual void setClientVisibleArea(const tools::Rectangle& rRectangle) 
override;
+    SW_DLLPUBLIC virtual void setClientVisibleArea(const tools::Rectangle& 
rRectangle) override;
     /// @see vcl::ITiledRenderable::setClientZoom.
     virtual void setClientZoom(int nTilePixelWidth_, int nTilePixelHeight_, 
int nTileTwipWidth_, int nTileTwipHeight_) override;
     /// @see vcl::ITiledRenderable::getPointer().
@@ -466,14 +466,14 @@ public:
     /// @see vcl::ITiledRenderable::getTrackedChanges().
     void getTrackedChanges(tools::JsonWriter&) override;
     /// @see vcl::ITiledRenderable::getTrackedChangeAuthors().
-    void getTrackedChangeAuthors(tools::JsonWriter& rJsonWriter) override;
+    SW_DLLPUBLIC void getTrackedChangeAuthors(tools::JsonWriter& rJsonWriter) 
override;
 
     void getRulerState(tools::JsonWriter& rJsonWriter) override;
     /// @see vcl::ITiledRenderable::getPostIts().
-    void getPostIts(tools::JsonWriter& rJsonWriter) override;
+    SW_DLLPUBLIC void getPostIts(tools::JsonWriter& rJsonWriter) override;
 
     /// @see vcl::ITiledRenderable::executeFromFieldEvent().
-    virtual void executeFromFieldEvent(const StringMap& aArguments) override;
+    SW_DLLPUBLIC virtual void executeFromFieldEvent(const StringMap& 
aArguments) override;
 
     /// @see vcl::ITiledRenderable::getSearchResultRectangles().
     std::vector<basegfx::B2DRange> getSearchResultRectangles(const char* 
pPayload) override;
@@ -482,13 +482,13 @@ public:
     virtual void SAL_CALL paintTile( const ::css::uno::Any& Parent, 
::sal_Int32 nOutputWidth, ::sal_Int32 nOutputHeight, ::sal_Int32 nTilePosX, 
::sal_Int32 nTilePosY, ::sal_Int32 nTileWidth, ::sal_Int32 nTileHeight ) 
override;
 
     /// @see vcl::ITiledRenderable::executeContentControlEvent().
-    void executeContentControlEvent(const StringMap& aArguments) override;
+    SW_DLLPUBLIC void executeContentControlEvent(const StringMap& aArguments) 
override;
 
     /// @see vcl::ITiledRenderable::getCommandValues().
-    void getCommandValues(tools::JsonWriter& rJsonWriter, std::string_view 
rCommand) override;
+    SW_DLLPUBLIC void getCommandValues(tools::JsonWriter& rJsonWriter, 
std::string_view rCommand) override;
 
     /// @see vcl::ITiledRenderable::getViewRenderState().
-    OString getViewRenderState(SfxViewShell* pViewShell = nullptr) override;
+    SW_DLLPUBLIC OString getViewRenderState(SfxViewShell* pViewShell = 
nullptr) override;
 
     /// @see vcl::ITiledRenderable::supportsCommand().
     bool supportsCommand(std::u16string_view rCommand) override;
diff --git a/sw/inc/view.hxx b/sw/inc/view.hxx
index d735e5e6e94a..c24f9a3856eb 100644
--- a/sw/inc/view.hxx
+++ b/sw/inc/view.hxx
@@ -144,7 +144,7 @@ public:
 };
 
 // view of a document
-class SW_DLLPUBLIC SwView: public SfxViewShell
+class SAL_DLLPUBLIC_RTTI SwView: public SfxViewShell
 {
     friend class SwHHCWrapper;
     friend class SwHyphWrapper;
@@ -410,7 +410,7 @@ public:
 
     css::view::XSelectionSupplier*       GetUNOObject();
 
-    OUString                GetSelectionTextParam( bool bCompleteWords,
+    SW_DLLPUBLIC OUString   GetSelectionTextParam( bool bCompleteWords,
                                                    bool bEraseTrail );
     virtual bool            HasSelection( bool bText = true ) const override;
     virtual OUString        GetSelectionText( bool bCompleteWords = false, 
bool bOnlyASample = false ) override;
@@ -424,7 +424,7 @@ public:
     OUString                GetThesaurusLookUpText( bool bSelection ) const;
 
     // immediately switch shell -> for GetSelectionObject
-    void                    StopShellTimer();
+    SW_DLLPUBLIC void       StopShellTimer();
 
     SwWrtShell&      GetWrtShell   () const { return *m_pWrtShell; }
     SwWrtShell*      GetWrtShellPtr() const { return  m_pWrtShell.get(); }
@@ -467,7 +467,7 @@ public:
 
     void    DocSzChgd( const Size& rNewSize );
     const   Size&   GetDocSz() const { return m_aDocSz; }
-    void    SetVisArea( const tools::Rectangle&, bool bUpdateScrollbar = true);
+    SW_DLLPUBLIC void SetVisArea( const tools::Rectangle&, bool 
bUpdateScrollbar = true);
             void    SetVisArea( const Point&, bool bUpdateScrollbar = true);
             void    CheckVisArea();
 
@@ -475,7 +475,7 @@ public:
     static SvxSearchDialog* GetSearchDialog();
 
     static sal_uInt16   GetMoveType();
-    static void     SetMoveType(sal_uInt16 nSet);
+    SW_DLLPUBLIC static void SetMoveType(sal_uInt16 nSet);
     DECL_DLLPRIVATE_LINK( MoveNavigationHdl, void*, void );
     static void     SetActMark(sal_Int32 nSet);
 
@@ -488,7 +488,7 @@ public:
     void            SetZoom( SvxZoomType eZoomType, short nFactor = 100, bool 
bViewOnly = false);
     virtual void    SetZoomFactor( const Fraction &rX, const Fraction & ) 
override;
 
-    void            SetViewLayout( sal_uInt16 nColumns, bool bBookMode, bool 
bViewOnly = false );
+    SW_DLLPUBLIC void SetViewLayout( sal_uInt16 nColumns, bool bBookMode, bool 
bViewOnly = false );
 
     void            ShowHScrollbar(bool bShow);
     bool            IsHScrollbarVisible()const;
@@ -510,7 +510,7 @@ public:
 
     SvxRuler&       GetHRuler()    { return *m_pHRuler; }
     SvxRuler&       GetVRuler()    { return *m_pVRuler; }
-    void            InvalidateRulerPos();
+    SW_DLLPUBLIC void InvalidateRulerPos();
     void            ChangeTabMetric(FieldUnit eUnit);
     void            GetHRulerMetric(FieldUnit& rToFill) const;
 
@@ -532,7 +532,7 @@ public:
 
     void            StateViewOptions(SfxItemSet &);
     void            StateSearch(SfxItemSet &);
-    void            GetState(SfxItemSet&);
+    SW_DLLPUBLIC void GetState(SfxItemSet&);
     void            StateStatusLine(SfxItemSet&);
     void            UpdateWordCount(SfxShell*, sal_uInt16);
     void            ExecFormatFootnote();
@@ -551,14 +551,14 @@ public:
     void            NoRotate();     // turn off rotate mode
     bool            EnterDrawTextMode(const Point& aDocPos);
     /// Same as EnterDrawTextMode(), but takes an SdrObject instead of 
guessing it by document position.
-    bool EnterShapeDrawTextMode(SdrObject* pObject);
+    SW_DLLPUBLIC bool EnterShapeDrawTextMode(SdrObject* pObject);
     void            LeaveDrawCreate()   { m_nDrawSfxId = m_nFormSfxId = 
USHRT_MAX; m_sDrawCustom.clear(); m_eFormObjKind = SdrObjKind::NONE; }
     bool            IsDrawMode() const  { return (m_nDrawSfxId != USHRT_MAX || 
m_nFormSfxId != USHRT_MAX); }
     bool            IsFormMode() const;
     bool            IsBezierEditMode() const;
     bool            AreOnlyFormsSelected() const;
     bool            HasOnlyObj(SdrObject const *pSdrObj, SdrInventor 
eObjInventor) const;
-    bool            BeginTextEdit(  SdrObject* pObj, SdrPageView* pPV=nullptr,
+    SW_DLLPUBLIC bool BeginTextEdit(  SdrObject* pObj, SdrPageView* 
pPV=nullptr,
                                     vcl::Window* pWin=nullptr, bool 
bIsNewObj=false, bool bSetSelectionToStart=false );
     bool isSignatureLineSelected() const;
     bool isSignatureLineSigned() const;
@@ -568,6 +568,7 @@ public:
 
     // attributes have changed
     DECL_LINK( AttrChangedNotify, LinkParamNone*, void );
+    SW_DLLPUBLIC void TriggerAttrChangedNotify(); // called from unit tests
 
     // form control has been activated
     DECL_DLLPRIVATE_LINK( FormControlActivated, LinkParamNone*, void );
@@ -575,7 +576,7 @@ public:
     // edit links
     void            EditLinkDlg();
     void            AutoCaption(const sal_uInt16 nType, const SvGlobalName 
*pOleId = nullptr);
-    void            InsertCaption(const InsCaptionOpt *pOpt);
+    SW_DLLPUBLIC void InsertCaption(const InsCaptionOpt *pOpt);
 
     // Async call by Core
     void UpdatePageNums();
@@ -590,7 +591,7 @@ public:
 
     // hand over Shell
                  SfxShell       *GetCurShell()  { return m_pShell; }
-                 SwDocShell     *GetDocShell();
+    SW_DLLPUBLIC SwDocShell     *GetDocShell();
     inline const SwDocShell     *GetDocShell() const;
     virtual       FmFormShell    *GetFormShell()       override { return 
m_pFormShell; }
     virtual const FmFormShell    *GetFormShell() const override { return 
m_pFormShell; }
@@ -606,7 +607,7 @@ public:
     void SetCursorAtTop( bool bFlag, bool bCenter = false )
         { m_bTopCursor = bFlag; m_bCenterCursor = bCenter; }
 
-    bool JumpToSwMark( std::u16string_view rMark );
+    SW_DLLPUBLIC bool JumpToSwMark( std::u16string_view rMark );
 
     tools::Long InsertDoc( sal_uInt16 nSlotId, const OUString& rFileName,
                     const OUString& rFilterName, sal_Int16 nVersion = 0 );
@@ -637,18 +638,18 @@ public:
 
     // store MailMerge data while "Back to Mail Merge Wizard" FloatingWindow 
is active
     // or to support printing
-    void SetMailMergeConfigItem(std::shared_ptr<SwMailMergeConfigItem> const & 
rConfigItem);
-    std::shared_ptr<SwMailMergeConfigItem> const & GetMailMergeConfigItem() 
const;
+    SW_DLLPUBLIC void 
SetMailMergeConfigItem(std::shared_ptr<SwMailMergeConfigItem> const & 
rConfigItem);
+    SW_DLLPUBLIC std::shared_ptr<SwMailMergeConfigItem> const & 
GetMailMergeConfigItem() const;
     std::shared_ptr<SwMailMergeConfigItem> EnsureMailMergeConfigItem(const 
SfxItemSet* pArgs = nullptr);
 
-    OUString GetDataSourceName() const;
-    static bool IsDataSourceAvailable(const OUString sDataSourceName);
+    SW_DLLPUBLIC OUString GetDataSourceName() const;
+    SW_DLLPUBLIC static bool IsDataSourceAvailable(const OUString 
sDataSourceName);
 
     void ExecFormatPaintbrush(SfxRequest const &);
     void StateFormatPaintbrush(SfxItemSet &);
 
     // public for D&D
-    ErrCode     InsertGraphic( const OUString &rPath, const OUString &rFilter,
+    SW_DLLPUBLIC ErrCode InsertGraphic( const OUString &rPath, const OUString 
&rFilter,
                             bool bLink, GraphicFilter *pFlt );
 
     void ExecuteScan( SfxRequest& rReq );
@@ -674,7 +675,7 @@ public:
     int getPart() const override;
     /// See SfxViewShell::dumpAsXml().
     void dumpAsXml(xmlTextWriterPtr pWriter) const override;
-    void SetRedlineAuthor(const OUString& rAuthor);
+    SW_DLLPUBLIC void SetRedlineAuthor(const OUString& rAuthor);
     const OUString& GetRedlineAuthor() const;
     /// See SfxViewShell::afterCallbackRegistered().
     void afterCallbackRegistered() override;
@@ -706,13 +707,13 @@ public:
         m_StringCache[id] = sStr;
     }
 
-    const OUString& GetOldGrfCat();
+    SW_DLLPUBLIC const OUString& GetOldGrfCat();
     void SetOldGrfCat(const OUString& sStr);
-    const OUString& GetOldTabCat();
+    SW_DLLPUBLIC const OUString& GetOldTabCat();
     void SetOldTabCat(const OUString& sStr);
-    const OUString& GetOldFrameCat();
+    SW_DLLPUBLIC const OUString& GetOldFrameCat();
     void SetOldFrameCat(const OUString& sStr);
-    const OUString& GetOldDrwCat();
+    SW_DLLPUBLIC const OUString& GetOldDrwCat();
     void SetOldDrwCat(const OUString& sStr);
 
     virtual tools::Rectangle getLOKVisibleArea() const override;
diff --git a/sw/inc/viscrs.hxx b/sw/inc/viscrs.hxx
index 2aba4bbd7110..16c657fac0db 100644
--- a/sw/inc/viscrs.hxx
+++ b/sw/inc/viscrs.hxx
@@ -136,7 +136,7 @@ public:
 /// Represents the current text cursor of one opened edit window.
 ///
 /// See SwShellTableCursor for a table cursor that extends this class.
-class SW_DLLPUBLIC SwShellCursor : public virtual SwCursor, public 
SwSelPaintRects
+class SAL_DLLPUBLIC_RTTI SwShellCursor : public virtual SwCursor, public 
SwSelPaintRects
 {
 private:
     // Document positions of start/end characters of a SSelection.
diff --git a/sw/qa/core/layout/ftnfrm.cxx b/sw/qa/core/layout/ftnfrm.cxx
index 4c874202da3f..05c7f868b620 100644
--- a/sw/qa/core/layout/ftnfrm.cxx
+++ b/sw/qa/core/layout/ftnfrm.cxx
@@ -48,7 +48,7 @@ CPPUNIT_TEST_FIXTURE(Test, testFlySplitFootnoteLayout)
     pWrtShell->EndAllAction();
     pWrtShell->UnSelectFrame();
     pWrtShell->LeaveSelFrameMode();
-    pWrtShell->GetView().AttrChangedNotify(nullptr);
+    pWrtShell->GetView().TriggerAttrChangedNotify();
     pWrtShell->MoveSection(GoCurrSection, fnSectionEnd);
 
     // When inserting a footnote:
diff --git a/sw/qa/core/txtnode/txtnode.cxx b/sw/qa/core/txtnode/txtnode.cxx
index c2df8a407e69..dec97c2ab910 100644
--- a/sw/qa/core/txtnode/txtnode.cxx
+++ b/sw/qa/core/txtnode/txtnode.cxx
@@ -483,7 +483,7 @@ CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, 
testFlySplitFootnote)
     pWrtShell->EndAllAction();
     pWrtShell->UnSelectFrame();
     pWrtShell->LeaveSelFrameMode();
-    pWrtShell->GetView().AttrChangedNotify(nullptr);
+    pWrtShell->GetView().TriggerAttrChangedNotify();
     pWrtShell->MoveSection(GoCurrSection, fnSectionEnd);
 
     // When inserting a footnote:
diff --git a/sw/qa/uibase/shells/shells.cxx b/sw/qa/uibase/shells/shells.cxx
index 2111cedf2502..4ba8aececf9b 100644
--- a/sw/qa/uibase/shells/shells.cxx
+++ b/sw/qa/uibase/shells/shells.cxx
@@ -102,7 +102,7 @@ CPPUNIT_TEST_FIXTURE(SwUibaseShellsTest, 
testShapeTextAlignment)
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pPage->GetObjCount());
     SdrObject* pObject = pPage->GetObj(0);
     pView->EnterShapeDrawTextMode(pObject);
-    pView->AttrChangedNotify(nullptr);
+    pView->TriggerAttrChangedNotify();
 
     // Change paragraph adjustment to center.
     pView->GetViewFrame().GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_CENTER,
diff --git a/sw/qa/uibase/shells/textsh.cxx b/sw/qa/uibase/shells/textsh.cxx
index ca72a710df3f..e4e7a2946bcc 100644
--- a/sw/qa/uibase/shells/textsh.cxx
+++ b/sw/qa/uibase/shells/textsh.cxx
@@ -90,7 +90,7 @@ CPPUNIT_TEST_FIXTURE(Test, testSplitFlyFootnoteUI)
     pWrtShell->EndAllAction();
     pWrtShell->UnSelectFrame();
     pWrtShell->LeaveSelFrameMode();
-    pWrtShell->GetView().AttrChangedNotify(nullptr);
+    pWrtShell->GetView().TriggerAttrChangedNotify();
     pWrtShell->MoveSection(GoCurrSection, fnSectionEnd);
 
     // When checking if we can insert a footnote inside the split fly:
diff --git a/sw/source/core/inc/cellfrm.hxx b/sw/source/core/inc/cellfrm.hxx
index f2be099e381f..756eb4db6d07 100644
--- a/sw/source/core/inc/cellfrm.hxx
+++ b/sw/source/core/inc/cellfrm.hxx
@@ -27,7 +27,7 @@ struct SwCursorMoveState;
 class SwBorderAttrs;
 
 /// SwCellFrame is one table cell in the document layout.
-class SW_DLLPUBLIC SwCellFrame final : public SwLayoutFrame
+class SAL_DLLPUBLIC_RTTI SwCellFrame final : public SwLayoutFrame
 {
     const SwTableBox* m_pTabBox;
 
@@ -51,8 +51,8 @@ public:
     const SwTableBox *GetTabBox() const { return m_pTabBox; }
 
     // used for breaking table rows:
-    SwCellFrame* GetFollowCell() const;
-    SwCellFrame* GetPreviousCell() const;
+    SW_DLLPUBLIC SwCellFrame* GetFollowCell() const;
+    SW_DLLPUBLIC SwCellFrame* GetPreviousCell() const;
 
     virtual bool IsLeaveUpperAllowed() const override;
     virtual bool IsCoveredCell() const override;
diff --git a/sw/source/core/inc/cntfrm.hxx b/sw/source/core/inc/cntfrm.hxx
index 2f6c8b5ba3e4..19d2a97198ff 100644
--- a/sw/source/core/inc/cntfrm.hxx
+++ b/sw/source/core/inc/cntfrm.hxx
@@ -55,7 +55,7 @@ namespace o3tl {
  * SwContentFrame is the layout for content nodes: a common base class for 
text (paragraph) and
  * non-text (e.g. graphic) frames.
  */
-class SW_DLLPUBLIC SwContentFrame: public SwFrame, public SwFlowFrame
+class SAL_DLLPUBLIC_RTTI SwContentFrame: public SwFrame, public SwFlowFrame
 {
     friend void MakeNxt( SwFrame *pFrame, SwFrame *pNxt );    // calls 
MakePrtArea
 
diff --git a/sw/source/core/inc/dflyobj.hxx b/sw/source/core/inc/dflyobj.hxx
index 701d63328923..ee50d1e596d5 100644
--- a/sw/source/core/inc/dflyobj.hxx
+++ b/sw/source/core/inc/dflyobj.hxx
@@ -63,7 +63,7 @@ public:
 // shown multiple times if needed (header/footer).
 // For example, if an SwFlyFrameFormat is anchored in a header, then all pages 
will have a separate
 // SwVirtFlyDrawObj in their headers.
-class SW_DLLPUBLIC SwVirtFlyDrawObj final : public SdrVirtObj
+class SAL_DLLPUBLIC_RTTI SwVirtFlyDrawObj final : public SdrVirtObj
 {
 private:
     SwFlyFrame *m_pFlyFrame;
diff --git a/sw/source/core/inc/flyfrms.hxx b/sw/source/core/inc/flyfrms.hxx
index 051d514fd31e..670fd6e91813 100644
--- a/sw/source/core/inc/flyfrms.hxx
+++ b/sw/source/core/inc/flyfrms.hxx
@@ -32,7 +32,7 @@ double getLocalFrameRotation_from_SwNoTextFrame(const 
SwNoTextFrame& rNoTextFram
 
 // Base class for those Flys that can "move freely" or better that are not
 // bound in Content.
-class SW_DLLPUBLIC SwFlyFreeFrame : public SwFlyFrame
+class SAL_DLLPUBLIC_RTTI SwFlyFreeFrame : public SwFlyFrame
 {
 private:
     // #i34753# - flag for at-page anchored Writer fly frames
@@ -159,7 +159,7 @@ public:
 };
 
 /// Flys that are anchored to content (at-para, at-char) but not in content 
(as-char).
-class SW_DLLPUBLIC SwFlyAtContentFrame final: public SwFlyFreeFrame, public 
SwFlowFrame
+class SAL_DLLPUBLIC_RTTI SwFlyAtContentFrame final: public SwFlyFreeFrame, 
public SwFlowFrame
 {
     virtual void MakeAll(vcl::RenderContext* pRenderContext) override;
 
@@ -197,9 +197,9 @@ public:
     */
     virtual bool IsFormatPossible() const override;
     const SwFlyAtContentFrame* GetFollow() const;
-    SwFlyAtContentFrame* GetFollow();
+    SW_DLLPUBLIC SwFlyAtContentFrame* GetFollow();
     const SwFlyAtContentFrame* GetPrecede() const;
-    SwFlyAtContentFrame* GetPrecede();
+    SW_DLLPUBLIC SwFlyAtContentFrame* GetPrecede();
     /// Like Cut(), except that follow chaining is maintained.
     void DelEmpty();
     bool IsWrapOnAllPages() const;
diff --git a/sw/source/core/inc/pagefrm.hxx b/sw/source/core/inc/pagefrm.hxx
index 54458032f188..23d77b1c8f74 100644
--- a/sw/source/core/inc/pagefrm.hxx
+++ b/sw/source/core/inc/pagefrm.hxx
@@ -58,7 +58,7 @@ namespace o3tl {
 
 /// A page of the document layout. Upper frame is expected to be an SwRootFrame
 /// instance. At least an SwBodyFrame lower is expected.
-class SW_DLLPUBLIC SwPageFrame final: public SwFootnoteBossFrame
+class SAL_DLLPUBLIC_RTTI SwPageFrame final: public SwFootnoteBossFrame
 {
     friend class SwFrame;
 
@@ -150,7 +150,7 @@ public:
     const SwPageDesc *GetPageDesc() const { return m_pDesc; }
           SwPageDesc *FindPageDesc();
 
-                 SwContentFrame  *FindLastBodyContent();
+    SW_DLLPUBLIC SwContentFrame  *FindLastBodyContent();
     inline       SwContentFrame  *FindFirstBodyContent();
     inline const SwContentFrame  *FindFirstBodyContent() const;
     inline const SwContentFrame  *FindLastBodyContent() const;
diff --git a/sw/source/core/inc/tabfrm.hxx b/sw/source/core/inc/tabfrm.hxx
index 80bbcd2b3d2f..d320e96c7623 100644
--- a/sw/source/core/inc/tabfrm.hxx
+++ b/sw/source/core/inc/tabfrm.hxx
@@ -45,7 +45,7 @@ namespace o3tl {
 }
 
 /// SwTabFrame is one table in the document layout, containing rows (which 
contain cells).
-class SW_DLLPUBLIC SwTabFrame final: public SwLayoutFrame, public SwFlowFrame
+class SAL_DLLPUBLIC_RTTI SwTabFrame final: public SwLayoutFrame, public 
SwFlowFrame
 {
     friend void CalcContent( SwLayoutFrame *pLay, bool bNoColl );
 
diff --git a/sw/source/core/inc/txtfrm.hxx b/sw/source/core/inc/txtfrm.hxx
index e4b568996b66..373b46bb8af2 100644
--- a/sw/source/core/inc/txtfrm.hxx
+++ b/sw/source/core/inc/txtfrm.hxx
@@ -164,7 +164,7 @@ bool HasNumberingWhichNeedsLayoutUpdate(const SwTextNode& 
rTextNode);
 
 /// Represents the visualization of a paragraph. Typical upper is an
 /// SwBodyFrame. The first text portion of the first line is az SwParaPortion.
-class SW_DLLPUBLIC SwTextFrame final : public SwContentFrame
+class SAL_DLLPUBLIC_RTTI SwTextFrame final : public SwContentFrame
 {
     friend class SwTextIter;
     friend class SwTestFormat;
@@ -407,7 +407,7 @@ public:
      * @returns false if the SPoint is outside of the SSize else
      *          returns true
      */
-    virtual bool GetModelPositionForViewPoint( SwPosition *, Point&,
+    SW_DLLPUBLIC virtual bool GetModelPositionForViewPoint( SwPosition *, 
Point&,
                                   SwCursorMoveState* = nullptr, bool 
bTestBackground = false ) const override;
 
     /**
@@ -418,7 +418,7 @@ public:
             { return GetModelPositionForViewPoint_( pPos, rPoint, false ); }
 
     void   PaintExtraData( const SwRect & rRect ) const; /// Page number etc.
-    SwRect GetPaintSwRect();
+    SW_DLLPUBLIC SwRect GetPaintSwRect();
     virtual void PaintSwFrame( vcl::RenderContext& rRenderContext, SwRect 
const& ) const override;
 
     /**
@@ -464,12 +464,12 @@ public:
     sw::MergedPara const* GetMergedPara() const { return m_pMergedPara.get(); }
 
     /// Returns the text portion we want to edit (for inline see underneath)
-    const OUString& GetText() const;
+    SW_DLLPUBLIC const OUString& GetText() const;
     SwTextNode const* GetTextNodeForParaProps() const;
-    SwTextNode const* GetTextNodeForFirstText() const;
+    SW_DLLPUBLIC SwTextNode const* GetTextNodeForFirstText() const;
     SwTextNode      * GetTextNodeFirst()
         { return const_cast<SwTextNode*>(const_cast<SwTextFrame 
const*>(this)->GetTextNodeFirst()); };
-    SwTextNode const* GetTextNodeFirst() const;
+    SW_DLLPUBLIC SwTextNode const* GetTextNodeFirst() const;
     SwDoc      & GetDoc()
         { return const_cast<SwDoc &>(const_cast<SwTextFrame 
const*>(this)->GetDoc()); }
     SwDoc const& GetDoc() const;
@@ -511,10 +511,10 @@ public:
     /// Test grow
     inline SwTwips GrowTst( const SwTwips nGrow );
 
-    SwParaPortion *GetPara();
+    SW_DLLPUBLIC SwParaPortion *GetPara();
     inline const SwParaPortion *GetPara() const;
     inline bool HasPara() const;
-    bool HasPara_() const;
+    SW_DLLPUBLIC bool HasPara_() const;
 
     /// map position in potentially merged text frame to SwPosition
     std::pair<SwTextNode*, sal_Int32> MapViewToModel(TextFrameIndex nIndex) 
const;
@@ -688,13 +688,13 @@ public:
     void StopAnimation( const OutputDevice *pOut );
 
     /// Visit all portions for Accessibility
-    void VisitPortions( SwPortionHandler& rPH ) const;
+    SW_DLLPUBLIC void VisitPortions( SwPortionHandler& rPH ) const;
 
     /// Returns the script info stored at the paraportion
     const SwScriptInfo* GetScriptInfo() const;
 
     /// Swaps width and height of the text frame
-    void SwapWidthAndHeight();
+    SW_DLLPUBLIC void SwapWidthAndHeight();
 
     /**
      * Calculates the coordinates of a rectangle when switching from
@@ -718,7 +718,7 @@ public:
      * Calculates the coordinates of a rectangle when switching from
      * vertical to horizontal layout
      */
-    void SwitchVerticalToHorizontal( SwRect& rRect ) const;
+    SW_DLLPUBLIC void SwitchVerticalToHorizontal( SwRect& rRect ) const;
 
     /**
      * Calculates the coordinates of a point when switching from
diff --git a/sw/source/filter/inc/wrtswtbl.hxx 
b/sw/source/filter/inc/wrtswtbl.hxx
index 83a40c0f681d..05a9f9f7988b 100644
--- a/sw/source/filter/inc/wrtswtbl.hxx
+++ b/sw/source/filter/inc/wrtswtbl.hxx
@@ -212,7 +212,7 @@ class SwWriteTableCols : public 
o3tl::sorted_vector<std::unique_ptr<SwWriteTable
 
 class SwTable;
 
-class SW_DLLPUBLIC SwWriteTable
+class SAL_DLLPUBLIC_RTTI SwWriteTable
 {
 private:
     const SwTable* m_pTable;
@@ -295,10 +295,10 @@ protected:
     sal_uInt16 GetRightSpace(size_t nCol, sal_uInt16 nColSpan) const;
 
 public:
-    SwWriteTable(const SwTable* pTable, const SwTableLines& rLines, 
tools::Long nWidth, sal_uInt32 nBWidth,
+    SW_DLLPUBLIC SwWriteTable(const SwTable* pTable, const SwTableLines& 
rLines, tools::Long nWidth, sal_uInt32 nBWidth,
                  bool bRel, sal_uInt16 nMaxDepth = USHRT_MAX,
                  sal_uInt16 nLeftSub=0, sal_uInt16 nRightSub=0, sal_uInt32 
nNumOfRowsToRepeat=0);
-    SwWriteTable(const SwTable* pTable, const SwHTMLTableLayout *pLayoutInfo);
+    SW_DLLPUBLIC SwWriteTable(const SwTable* pTable, const SwHTMLTableLayout 
*pLayoutInfo);
     virtual ~SwWriteTable();
 
     const SwWriteTableRows& GetRows() const { return m_aRows; }
diff --git a/sw/source/uibase/inc/basesh.hxx b/sw/source/uibase/inc/basesh.hxx
index 8937f817cbb8..153e3fa65cc3 100644
--- a/sw/source/uibase/inc/basesh.hxx
+++ b/sw/source/uibase/inc/basesh.hxx
@@ -36,7 +36,7 @@ class SfxItemSet;
 class SwCursorShell;
 
 struct DBTextStruct_Impl;
-class SW_DLLPUBLIC SwBaseShell: public SfxShell
+class SAL_DLLPUBLIC_RTTI SwBaseShell: public SfxShell
 {
     SwView      &m_rView;
 
@@ -85,7 +85,7 @@ public:
     void        StateUndo(SfxItemSet &);
 
     void        Execute(SfxRequest &);
-    void        GetState(SfxItemSet &);
+    SW_DLLPUBLIC void GetState(SfxItemSet &);
     void        StateStyle(SfxItemSet &);
 
     void        ExecuteGallery(SfxRequest&);
diff --git a/sw/source/uibase/inc/mailmergehelper.hxx 
b/sw/source/uibase/inc/mailmergehelper.hxx
index 2497c8833ef8..ac35415badc9 100644
--- a/sw/source/uibase/inc/mailmergehelper.hxx
+++ b/sw/source/uibase/inc/mailmergehelper.hxx
@@ -218,7 +218,7 @@ class SW_DLLPUBLIC SwMailTransferable final :
 
 };
 
-class SW_DLLPUBLIC SwMailMessage final :
+class SAL_DLLPUBLIC_RTTI SwMailMessage final :
         public comphelper::WeakComponentImplHelper<css::mail::XMailMessage>
 {
     OUString m_sSenderName;
@@ -235,28 +235,28 @@ class SW_DLLPUBLIC SwMailMessage final :
 //  css::uno::Sequence<css::mail::MailAttachmentDescriptor> m_aAttachments;
     css::uno::Sequence<css::mail::MailAttachment> m_aAttachments;
 public:
-    SwMailMessage();
+    SW_DLLPUBLIC SwMailMessage();
     virtual ~SwMailMessage() override;
 
     // attributes
     virtual OUString SAL_CALL getSenderName() override;
     virtual OUString SAL_CALL getSenderAddress() override;
     virtual OUString SAL_CALL getReplyToAddress() override;
-    virtual void SAL_CALL setReplyToAddress( const OUString& _replytoaddress ) 
override;
+    SW_DLLPUBLIC virtual void SAL_CALL setReplyToAddress( const OUString& 
_replytoaddress ) override;
     virtual OUString SAL_CALL getSubject() override;
-    virtual void SAL_CALL setSubject(const OUString& _subject) override;
+    SW_DLLPUBLIC virtual void SAL_CALL setSubject(const OUString& _subject) 
override;
 
     virtual css::uno::Reference<css::datatransfer::XTransferable> SAL_CALL 
getBody() override;
-    virtual void SAL_CALL setBody(const 
css::uno::Reference<css::datatransfer::XTransferable>& _body) override;
+    SW_DLLPUBLIC virtual void SAL_CALL setBody(const 
css::uno::Reference<css::datatransfer::XTransferable>& _body) override;
 
     // methods
-    virtual void SAL_CALL addRecipient( const OUString& sRecipientAddress ) 
override;
-    virtual void SAL_CALL addCcRecipient( const OUString& sRecipientAddress ) 
override;
-    virtual void SAL_CALL addBccRecipient( const OUString& sRecipientAddress ) 
override;
+    SW_DLLPUBLIC virtual void SAL_CALL addRecipient( const OUString& 
sRecipientAddress ) override;
+    SW_DLLPUBLIC virtual void SAL_CALL addCcRecipient( const OUString& 
sRecipientAddress ) override;
+    SW_DLLPUBLIC virtual void SAL_CALL addBccRecipient( const OUString& 
sRecipientAddress ) override;
     virtual css::uno::Sequence<OUString> SAL_CALL getRecipients() override;
     virtual css::uno::Sequence<OUString> SAL_CALL getCcRecipients() override;
     virtual css::uno::Sequence<OUString> SAL_CALL getBccRecipients() override;
-    virtual void SAL_CALL addAttachment(const css::mail::MailAttachment& 
aMailAttachment) override;
+    SW_DLLPUBLIC virtual void SAL_CALL addAttachment(const 
css::mail::MailAttachment& aMailAttachment) override;
     virtual css::uno::Sequence<css::mail::MailAttachment> SAL_CALL 
getAttachments() override;
     void SetSenderName(const OUString& rSenderName)
     {
diff --git a/sw/source/uibase/inc/pview.hxx b/sw/source/uibase/inc/pview.hxx
index e14ff5d419e7..15cb04a7d85a 100644
--- a/sw/source/uibase/inc/pview.hxx
+++ b/sw/source/uibase/inc/pview.hxx
@@ -157,7 +157,7 @@ public:
 /**
  * View of a document
  */
-class SW_DLLPUBLIC SwPagePreview final : public SfxViewShell
+class SAL_DLLPUBLIC_RTTI SwPagePreview final : public SfxViewShell
 {
     // ViewWindow and handle to core
     // current dispatcher shell
diff --git a/sw/source/uibase/inc/textsh.hxx b/sw/source/uibase/inc/textsh.hxx
index f965370e08c6..02c9a16d1d5d 100644
--- a/sw/source/uibase/inc/textsh.hxx
+++ b/sw/source/uibase/inc/textsh.hxx
@@ -30,7 +30,7 @@ class SwFlyFrameAttrMgr;
 class SvxHyperlinkItem;
 class SwInsertChart;
 
-class SW_DLLPUBLIC SwTextShell: public SwBaseShell
+class SAL_DLLPUBLIC_RTTI SwTextShell: public SwBaseShell
 {
     RotateTransliteration m_aRotateCase;
 
@@ -80,10 +80,10 @@ public:
 
     void    GetAttrState(SfxItemSet &);
 
-             SwTextShell(SwView &rView);
-    virtual ~SwTextShell() override;
+    SW_DLLPUBLIC SwTextShell(SwView &rView);
+    SW_DLLPUBLIC virtual ~SwTextShell() override;
     /// Create item set for the insert frame dialog.
-    SfxItemSet CreateInsertFrameItemSet(SwFlyFrameAttrMgr& rMgr);
+    SW_DLLPUBLIC SfxItemSet CreateInsertFrameItemSet(SwFlyFrameAttrMgr& rMgr);
 };
 
 #endif
diff --git a/sw/source/uibase/uiview/view.cxx b/sw/source/uibase/uiview/view.cxx
index 8edd299342d3..24f2d08c4403 100644
--- a/sw/source/uibase/uiview/view.cxx
+++ b/sw/source/uibase/uiview/view.cxx
@@ -584,6 +584,11 @@ IMPL_LINK_NOARG(SwView, AttrChangedNotify, LinkParamNone*, 
void)
     }
 }
 
+void SwView::TriggerAttrChangedNotify()
+{
+    AttrChangedNotify(nullptr);
+}
+
 IMPL_LINK_NOARG(SwView, TimeoutHdl, Timer *, void)
 {
     if (m_pWrtShell->ActionPend() || g_bNoInterrupt)

Reply via email to