summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--comphelper/Library_comphelper.mk1
-rw-r--r--comphelper/source/misc/compbase.cxx48
-rw-r--r--dbaccess/source/ui/inc/unodatbr.hxx1
-rw-r--r--drawinglayer/source/primitive2d/baseprimitive2d.cxx60
-rw-r--r--editeng/source/accessibility/AccessibleEditableTextPara.cxx3
-rw-r--r--extensions/source/propctrlr/standardcontrol.hxx1
-rw-r--r--include/comphelper/compbase.hxx106
-rw-r--r--include/drawinglayer/primitive2d/baseprimitive2d.hxx40
-rw-r--r--include/editeng/AccessibleEditableTextPara.hxx7
-rw-r--r--include/vcl/weldutils.hxx42
-rw-r--r--sc/source/ui/view/gridwin.cxx1
-rw-r--r--sc/source/ui/view/tabcont.cxx1
-rw-r--r--sw/source/ui/index/cnttab.cxx1
-rw-r--r--sw/source/uibase/app/docsh2.cxx1
-rw-r--r--sw/source/uibase/ribbar/inputwin.cxx1
15 files changed, 192 insertions, 122 deletions
diff --git a/comphelper/Library_comphelper.mk b/comphelper/Library_comphelper.mk
index 6bd5f0f6492d..20067b14b4ce 100644
--- a/comphelper/Library_comphelper.mk
+++ b/comphelper/Library_comphelper.mk
@@ -91,6 +91,7 @@ $(eval $(call gb_Library_add_exception_objects,comphelper,\
comphelper/source/misc/automationinvokedzone \
comphelper/source/misc/backupfilehelper \
comphelper/source/misc/base64 \
+ comphelper/source/misc/compbase \
comphelper/source/misc/componentbase \
comphelper/source/misc/configuration \
comphelper/source/misc/configurationhelper \
diff --git a/comphelper/source/misc/compbase.cxx b/comphelper/source/misc/compbase.cxx
new file mode 100644
index 000000000000..bd2ff837943f
--- /dev/null
+++ b/comphelper/source/misc/compbase.cxx
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <comphelper/compbase.hxx>
+
+namespace comphelper
+{
+WeakComponentImplHelperBase::~WeakComponentImplHelperBase() {}
+
+// css::lang::XComponent
+void SAL_CALL WeakComponentImplHelperBase::dispose()
+{
+ std::unique_lock aGuard(m_aMutex);
+ if (m_bDisposed)
+ return;
+ m_bDisposed = true;
+ disposing();
+ css::lang::EventObject aEvt(static_cast<OWeakObject*>(this));
+ maEventListeners.disposeAndClear(aGuard, aEvt);
+}
+
+void WeakComponentImplHelperBase::disposing() {}
+
+void SAL_CALL WeakComponentImplHelperBase::addEventListener(
+ css::uno::Reference<css::lang::XEventListener> const& rxListener)
+{
+ std::unique_lock aGuard(m_aMutex);
+ if (m_bDisposed)
+ return;
+ maEventListeners.addInterface(rxListener);
+}
+
+void SAL_CALL WeakComponentImplHelperBase::removeEventListener(
+ css::uno::Reference<css::lang::XEventListener> const& rxListener)
+{
+ std::unique_lock aGuard(m_aMutex);
+ maEventListeners.removeInterface(rxListener);
+}
+
+} // namespace comphelper
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/dbaccess/source/ui/inc/unodatbr.hxx b/dbaccess/source/ui/inc/unodatbr.hxx
index 07240e843378..efe4ae51b27c 100644
--- a/dbaccess/source/ui/inc/unodatbr.hxx
+++ b/dbaccess/source/ui/inc/unodatbr.hxx
@@ -31,6 +31,7 @@
#include <com/sun/star/sdb/application/DatabaseObject.hpp>
#include <com/sun/star/sdb/application/DatabaseObjectContainer.hpp>
#include <com/sun/star/sdb/XDatabaseRegistrationsListener.hpp>
+#include <comphelper/interfacecontainer2.hxx>
#include <cppuhelper/implbase5.hxx>
#include "callbacks.hxx"
#include <vcl/transfer.hxx>
diff --git a/drawinglayer/source/primitive2d/baseprimitive2d.cxx b/drawinglayer/source/primitive2d/baseprimitive2d.cxx
index b5590bce082c..29f4dc7fd473 100644
--- a/drawinglayer/source/primitive2d/baseprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/baseprimitive2d.cxx
@@ -29,66 +29,6 @@
using namespace css;
-BasePrimitive2DImplBase::~BasePrimitive2DImplBase() {}
-
-css::uno::Any BasePrimitive2DImplBase::queryInterface(css::uno::Type const& rType)
-{
- css::uno::Any aReturn = ::cppu::queryInterface(
- rType, static_cast<uno::XWeak*>(this), static_cast<lang::XComponent*>(this),
- static_cast<lang::XTypeProvider*>(this), static_cast<graphic::XPrimitive2D*>(this),
- static_cast<util::XAccounting*>(this));
- if (aReturn.hasValue())
- return aReturn;
- return OWeakObject::queryInterface(rType);
-}
-
-void BasePrimitive2DImplBase::acquire() noexcept { OWeakObject::acquire(); }
-
-void BasePrimitive2DImplBase::release() noexcept
-{
- if (osl_atomic_decrement(&m_refCount) != 0)
- return;
-
- // ensure no other references are created, via the weak connection point, from now on
- disposeWeakConnectionPoint();
- // restore reference count:
- osl_atomic_increment(&m_refCount);
- // if (! rBHelper.bDisposed) {
- // try {
- // dispose();
- // }
- // catch (RuntimeException const& exc) { // don't break throw ()
- // SAL_WARN( "cppuhelper", exc );
- // }
- // OSL_ASSERT( rBHelper.bDisposed );
- // }
- OWeakObject::release();
-}
-
-void BasePrimitive2DImplBase::dispose() {}
-
-void BasePrimitive2DImplBase::addEventListener(
- css::uno::Reference<css::lang::XEventListener> const&)
-{
- assert(false);
-}
-void BasePrimitive2DImplBase::removeEventListener(
- css::uno::Reference<css::lang::XEventListener> const&)
-{
- assert(false);
-}
-
-css::uno::Sequence<css::uno::Type> BasePrimitive2DImplBase::getTypes()
-{
- static const css::uno::Sequence<uno::Type> aTypeList{
- cppu::UnoType<uno::XWeak>::get(), cppu::UnoType<lang::XComponent>::get(),
- cppu::UnoType<lang::XTypeProvider>::get(), cppu::UnoType<graphic::XPrimitive2D>::get(),
- cppu::UnoType<util::XAccounting>::get()
- };
-
- return aTypeList;
-}
-
namespace drawinglayer::primitive2d
{
BasePrimitive2D::BasePrimitive2D() {}
diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
index e547767911e2..d074ddfd5a11 100644
--- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx
+++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
@@ -104,8 +104,7 @@ namespace accessibility
AccessibleEditableTextPara::AccessibleEditableTextPara(
const uno::Reference< XAccessible >& rParent,
const AccessibleParaManager* _pParaManager )
- : AccessibleTextParaInterfaceBase( m_aMutex ),
- mnParagraphIndex( 0 ),
+ : mnParagraphIndex( 0 ),
mnIndexInParent( 0 ),
mpEditSource( nullptr ),
maEEOffset( 0, 0 ),
diff --git a/extensions/source/propctrlr/standardcontrol.hxx b/extensions/source/propctrlr/standardcontrol.hxx
index a54af78c3a3a..7a0c585b775c 100644
--- a/extensions/source/propctrlr/standardcontrol.hxx
+++ b/extensions/source/propctrlr/standardcontrol.hxx
@@ -26,6 +26,7 @@
#include <com/sun/star/inspection/XStringListControl.hpp>
#include <com/sun/star/inspection/XHyperlinkControl.hpp>
#include <com/sun/star/uno/Sequence.hxx>
+#include <comphelper/interfacecontainer2.hxx>
#include <svtools/ctrlbox.hxx>
#include <svx/colorbox.hxx>
diff --git a/include/comphelper/compbase.hxx b/include/comphelper/compbase.hxx
new file mode 100644
index 000000000000..6143fbb411ac
--- /dev/null
+++ b/include/comphelper/compbase.hxx
@@ -0,0 +1,106 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#pragma once
+
+#include <sal/config.h>
+
+#include <comphelper/comphelperdllapi.h>
+#include <comphelper/interfacecontainer4.hxx>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/queryinterface.hxx>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <mutex>
+
+namespace comphelper
+{
+/**
+ Serves two purposes
+ (1) extracts code that doesn't need to be templated
+ (2) helps to handle the custom where we have conflicting interfaces
+ e.g. multiple UNO interfaces that extend css::lang::XComponent
+*/
+class COMPHELPER_DLLPUBLIC WeakComponentImplHelperBase : public cppu::OWeakObject,
+ public css::lang::XComponent
+{
+public:
+ virtual ~WeakComponentImplHelperBase() override;
+
+ // css::lang::XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL
+ addEventListener(css::uno::Reference<css::lang::XEventListener> const& rxListener) override;
+ virtual void SAL_CALL
+ removeEventListener(css::uno::Reference<css::lang::XEventListener> const& rxListener) override;
+
+ /** called by dispose for subclasses to do dispose() work */
+ virtual void disposing();
+
+protected:
+ comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> maEventListeners;
+ mutable std::mutex m_aMutex;
+ bool m_bDisposed;
+};
+
+template <typename... Ifc>
+class SAL_DLLPUBLIC_TEMPLATE WeakComponentImplHelper : public WeakComponentImplHelperBase,
+ public css::lang::XTypeProvider,
+ public Ifc...
+{
+public:
+ virtual void SAL_CALL acquire() noexcept final override { OWeakObject::acquire(); }
+
+ virtual void SAL_CALL release() noexcept final override { OWeakObject::release(); }
+
+ // css::lang::XComponent
+ virtual void SAL_CALL dispose() noexcept final override
+ {
+ WeakComponentImplHelperBase::dispose();
+ }
+ virtual void SAL_CALL addEventListener(
+ css::uno::Reference<css::lang::XEventListener> const& rxListener) final override
+ {
+ WeakComponentImplHelperBase::addEventListener(rxListener);
+ }
+ virtual void SAL_CALL removeEventListener(
+ css::uno::Reference<css::lang::XEventListener> const& rxListener) final override
+ {
+ WeakComponentImplHelperBase::removeEventListener(rxListener);
+ }
+
+ virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const& rType) override
+ {
+ css::uno::Any aReturn = ::cppu::queryInterface(
+ rType, static_cast<css::uno::XWeak*>(this),
+ static_cast<css::lang::XComponent*>(static_cast<WeakComponentImplHelperBase*>(this)),
+ static_cast<css::lang::XTypeProvider*>(this), static_cast<Ifc*>(this)...);
+ if (aReturn.hasValue())
+ return aReturn;
+ return OWeakObject::queryInterface(rType);
+ }
+
+ // css::lang::XTypeProvider
+ virtual css::uno::Sequence<css::uno::Type> SAL_CALL getTypes() override
+ {
+ static const css::uno::Sequence<css::uno::Type> aTypeList{
+ cppu::UnoType<css::uno::XWeak>::get(), cppu::UnoType<css::lang::XComponent>::get(),
+ cppu::UnoType<css::lang::XTypeProvider>::get(), cppu::UnoType<Ifc>::get()...
+ };
+ return aTypeList;
+ }
+ virtual css::uno::Sequence<sal_Int8> SAL_CALL getImplementationId() override
+ {
+ return css::uno::Sequence<sal_Int8>();
+ }
+};
+
+} // namespace comphelper
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/include/drawinglayer/primitive2d/baseprimitive2d.hxx b/include/drawinglayer/primitive2d/baseprimitive2d.hxx
index 5fbcafc655db..c264912941aa 100644
--- a/include/drawinglayer/primitive2d/baseprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/baseprimitive2d.hxx
@@ -25,55 +25,21 @@
#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx>
#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <cppuhelper/weak.hxx>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <com/sun/star/lang/XTypeProvider.hpp>
#include <com/sun/star/util/XAccounting.hpp>
#include <basegfx/range/b2drange.hxx>
#include <com/sun/star/graphic/XPrimitive2D.hpp>
+#include <comphelper/compbase.hxx>
#include <salhelper/simplereferenceobject.hxx>
#include <rtl/ref.hxx>
#include <deque>
-#include <mutex>
namespace drawinglayer::geometry
{
class ViewInformation2D;
}
-/** This is a custom re-implementation of cppu::WeakComponentImplHelper which uses
- std::mutex and skips parts of the XComponent stuff.
-*/
-class DRAWINGLAYERCORE_DLLPUBLIC BasePrimitive2DImplBase : public cppu::OWeakObject,
- public css::lang::XComponent,
- public css::lang::XTypeProvider,
- public css::graphic::XPrimitive2D,
- public css::util::XAccounting
-{
-public:
- virtual ~BasePrimitive2DImplBase() override;
-
- virtual void SAL_CALL acquire() noexcept override;
- virtual void SAL_CALL release() noexcept override;
- virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const& aType) override;
-
- // css::lang::XComponent
- virtual void SAL_CALL dispose() override;
- virtual void SAL_CALL
- addEventListener(css::uno::Reference<css::lang::XEventListener> const& xListener) override;
- virtual void SAL_CALL
- removeEventListener(css::uno::Reference<css::lang::XEventListener> const& xListener) override;
-
- // css::lang::XTypeProvider
- virtual css::uno::Sequence<css::uno::Type> SAL_CALL getTypes() override;
- virtual css::uno::Sequence<sal_Int8> SAL_CALL getImplementationId() override
- {
- return css::uno::Sequence<sal_Int8>();
- }
-
-protected:
- mutable std::mutex m_aMutex;
-};
+typedef comphelper::WeakComponentImplHelper<css::graphic::XPrimitive2D, css::util::XAccounting>
+ BasePrimitive2DImplBase;
namespace drawinglayer::primitive2d
{
diff --git a/include/editeng/AccessibleEditableTextPara.hxx b/include/editeng/AccessibleEditableTextPara.hxx
index 34fab512fbcb..02f907704bdb 100644
--- a/include/editeng/AccessibleEditableTextPara.hxx
+++ b/include/editeng/AccessibleEditableTextPara.hxx
@@ -23,8 +23,7 @@
#include <config_options.h>
#include <rtl/ustring.hxx>
#include <tools/gen.hxx>
-#include <cppuhelper/compbase.hxx>
-#include <cppuhelper/basemutex.hxx>
+#include <comphelper/compbase.hxx>
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/lang/XServiceInfo.hpp>
@@ -51,7 +50,7 @@ namespace accessibility { class AccessibleImageBullet; }
namespace accessibility
{
- typedef ::cppu::WeakComponentImplHelper< css::accessibility::XAccessible,
+ typedef ::comphelper::WeakComponentImplHelper< css::accessibility::XAccessible,
css::accessibility::XAccessibleContext,
css::accessibility::XAccessibleComponent,
css::accessibility::XAccessibleEditableText,
@@ -63,7 +62,7 @@ namespace accessibility
/** This class implements the actual text paragraphs for the EditEngine/Outliner UAA
*/
- class UNLESS_MERGELIBS(EDITENG_DLLPUBLIC) AccessibleEditableTextPara final : public ::cppu::BaseMutex, public AccessibleTextParaInterfaceBase, private ::comphelper::OCommonAccessibleText
+ class UNLESS_MERGELIBS(EDITENG_DLLPUBLIC) AccessibleEditableTextPara final : public AccessibleTextParaInterfaceBase, private ::comphelper::OCommonAccessibleText
{
// override OCommonAccessibleText methods
diff --git a/include/vcl/weldutils.hxx b/include/vcl/weldutils.hxx
index a11ab6c9f283..a8c2e1eac11d 100644
--- a/include/vcl/weldutils.hxx
+++ b/include/vcl/weldutils.hxx
@@ -15,9 +15,8 @@
#include <com/sun/star/frame/XFrame.hpp>
#include <com/sun/star/frame/XStatusListener.hpp>
#include <com/sun/star/uno/Reference.hxx>
-#include <comphelper/interfacecontainer2.hxx>
-#include <cppuhelper/basemutex.hxx>
-#include <cppuhelper/compbase.hxx>
+#include <comphelper/interfacecontainer4.hxx>
+#include <comphelper/compbase.hxx>
#include <tools/time.hxx>
#include <vcl/dllapi.h>
#include <vcl/formatter.hxx>
@@ -34,32 +33,25 @@ class Window;
namespace weld
{
-typedef cppu::WeakComponentImplHelper<css::awt::XWindow> TransportAsXWindow_Base;
+typedef comphelper::WeakComponentImplHelper<css::awt::XWindow> TransportAsXWindow_Base;
-class VCL_DLLPUBLIC TransportAsXWindow : public cppu::BaseMutex, public TransportAsXWindow_Base
+class VCL_DLLPUBLIC TransportAsXWindow : public TransportAsXWindow_Base
{
private:
weld::Widget* m_pWeldWidget;
weld::Builder* m_pWeldWidgetBuilder;
- comphelper::OInterfaceContainerHelper2 m_aWindowListeners;
- comphelper::OInterfaceContainerHelper2 m_aKeyListeners;
- comphelper::OInterfaceContainerHelper2 m_aFocusListeners;
- comphelper::OInterfaceContainerHelper2 m_aMouseListeners;
- comphelper::OInterfaceContainerHelper2 m_aMotionListeners;
- comphelper::OInterfaceContainerHelper2 m_aPaintListeners;
+ comphelper::OInterfaceContainerHelper4<css::awt::XWindowListener> m_aWindowListeners;
+ comphelper::OInterfaceContainerHelper4<css::awt::XKeyListener> m_aKeyListeners;
+ comphelper::OInterfaceContainerHelper4<css::awt::XFocusListener> m_aFocusListeners;
+ comphelper::OInterfaceContainerHelper4<css::awt::XMouseListener> m_aMouseListeners;
+ comphelper::OInterfaceContainerHelper4<css::awt::XMouseMotionListener> m_aMotionListeners;
+ comphelper::OInterfaceContainerHelper4<css::awt::XPaintListener> m_aPaintListeners;
public:
TransportAsXWindow(weld::Widget* pWeldWidget, weld::Builder* pWeldWidgetBuilder = nullptr)
- : TransportAsXWindow_Base(m_aMutex)
- , m_pWeldWidget(pWeldWidget)
+ : m_pWeldWidget(pWeldWidget)
, m_pWeldWidgetBuilder(pWeldWidgetBuilder)
- , m_aWindowListeners(m_aMutex)
- , m_aKeyListeners(m_aMutex)
- , m_aFocusListeners(m_aMutex)
- , m_aMouseListeners(m_aMutex)
- , m_aMotionListeners(m_aMutex)
- , m_aPaintListeners(m_aMutex)
{
}
@@ -96,72 +88,84 @@ public:
void SAL_CALL
addWindowListener(const css::uno::Reference<css::awt::XWindowListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aWindowListeners.addInterface(rListener);
}
void SAL_CALL
removeWindowListener(const css::uno::Reference<css::awt::XWindowListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aWindowListeners.removeInterface(rListener);
}
void SAL_CALL
addFocusListener(const css::uno::Reference<css::awt::XFocusListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aFocusListeners.addInterface(rListener);
}
void SAL_CALL
removeFocusListener(const css::uno::Reference<css::awt::XFocusListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aFocusListeners.removeInterface(rListener);
}
void SAL_CALL
addKeyListener(const css::uno::Reference<css::awt::XKeyListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aKeyListeners.addInterface(rListener);
}
void SAL_CALL
removeKeyListener(const css::uno::Reference<css::awt::XKeyListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aKeyListeners.removeInterface(rListener);
}
void SAL_CALL
addMouseListener(const css::uno::Reference<css::awt::XMouseListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aMouseListeners.addInterface(rListener);
}
void SAL_CALL
removeMouseListener(const css::uno::Reference<css::awt::XMouseListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aMouseListeners.removeInterface(rListener);
}
void SAL_CALL addMouseMotionListener(
const css::uno::Reference<css::awt::XMouseMotionListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aMotionListeners.addInterface(rListener);
}
void SAL_CALL removeMouseMotionListener(
const css::uno::Reference<css::awt::XMouseMotionListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aMotionListeners.removeInterface(rListener);
}
void SAL_CALL
addPaintListener(const css::uno::Reference<css::awt::XPaintListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aPaintListeners.addInterface(rListener);
}
void SAL_CALL
removePaintListener(const css::uno::Reference<css::awt::XPaintListener>& rListener) override
{
+ std::unique_lock g(m_aMutex);
m_aPaintListeners.removeInterface(rListener);
}
};
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index e2f3a1e81e2b..b03c094de0c3 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -22,6 +22,7 @@
#include <cstdlib>
#include <memory>
#include <editeng/adjustitem.hxx>
+#include <osl/diagnose.h>
#include <sal/log.hxx>
#include <sot/storage.hxx>
#include <editeng/eeitem.hxx>
diff --git a/sc/source/ui/view/tabcont.cxx b/sc/source/ui/view/tabcont.cxx
index 31628bc9c342..f4ad32ba8ac5 100644
--- a/sc/source/ui/view/tabcont.cxx
+++ b/sc/source/ui/view/tabcont.cxx
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <osl/diagnose.h>
#include <sfx2/viewfrm.hxx>
#include <sfx2/dispatch.hxx>
#include <sfx2/docfile.hxx>
diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
index 17a360bf522c..e2a334ebda26 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -19,6 +19,7 @@
#include <sal/config.h>
+#include <osl/diagnose.h>
#include <o3tl/safeint.hxx>
#include <sal/log.hxx>
#include <svl/style.hxx>
diff --git a/sw/source/uibase/app/docsh2.cxx b/sw/source/uibase/app/docsh2.cxx
index 063b74e7da4a..415c30d4d296 100644
--- a/sw/source/uibase/app/docsh2.cxx
+++ b/sw/source/uibase/app/docsh2.cxx
@@ -19,6 +19,7 @@
#include <config_features.h>
+#include <osl/diagnose.h>
#include <com/sun/star/drawing/ModuleDispatcher.hpp>
#include <com/sun/star/frame/DispatchHelper.hpp>
#include <ooo/vba/word/XDocument.hpp>
diff --git a/sw/source/uibase/ribbar/inputwin.cxx b/sw/source/uibase/ribbar/inputwin.cxx
index 26325060cb10..a472fc3f227c 100644
--- a/sw/source/uibase/ribbar/inputwin.cxx
+++ b/sw/source/uibase/ribbar/inputwin.cxx
@@ -20,6 +20,7 @@
#include <sal/config.h>
#include <sal/log.hxx>
+#include <osl/diagnose.h>
#include <comphelper/string.hxx>
#include <o3tl/safeint.hxx>
#include <officecfg/Office/Common.hxx>