sw/Library_sw_writerfilter.mk                        |    1 +
 sw/inc/unotxdoc.hxx                                  |    2 ++
 sw/source/core/inc/SwXTextDefaults.hxx               |    3 ++-
 sw/source/uibase/uno/unotxdoc.cxx                    |    8 ++++++++
 sw/source/writerfilter/dmapper/DomainMapper.cxx      |    4 ++--
 sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx |    3 ++-
 sw/source/writerfilter/dmapper/StyleSheetTable.cxx   |    7 +++----
 7 files changed, 20 insertions(+), 8 deletions(-)

New commits:
commit a77caf28bac50fe8e3592416d5dedf894a02cbbb
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Wed Apr 24 12:26:00 2024 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sat Apr 27 15:56:28 2024 +0200

    use more concrete UNO classes in writerfilter (SwXTextDefaults)
    
    Change-Id: I44eb8d4561798980ff7008d843bf076fc29582c6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166769
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sw/Library_sw_writerfilter.mk b/sw/Library_sw_writerfilter.mk
index 3be1a2d937c6..c48e727a5b85 100644
--- a/sw/Library_sw_writerfilter.mk
+++ b/sw/Library_sw_writerfilter.mk
@@ -20,6 +20,7 @@ $(eval $(call 
gb_Library_set_precompiled_header,sw_writerfilter,sw/inc/pch/preco
 $(eval $(call gb_Library_set_include,sw_writerfilter,\
     $$(INCLUDE) \
     -I$(SRCDIR)/sw/inc \
+    -I$(SRCDIR)/sw/source/core/inc \
     -I$(SRCDIR)/sw/source/uibase/uno/ \
     -I$(SRCDIR)/sw/source/writerfilter/inc \
     -I$(SRCDIR)/sw/source/writerfilter \
diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx
index ab655c6019c4..30edc2fb7c84 100644
--- a/sw/inc/unotxdoc.hxx
+++ b/sw/inc/unotxdoc.hxx
@@ -106,6 +106,7 @@ class SwXReferenceMarks;
 class SwXLinkTargetSupplier;
 class SwXRedlines;
 class SwXDocumentSettings;
+class SwXTextDefaults;
 namespace com::sun::star::container { class XNameContainer; }
 namespace com::sun::star::frame { class XController; }
 namespace com::sun::star::lang { struct Locale; }
@@ -509,6 +510,7 @@ public:
     SwDocShell*                 GetDocShell() {return m_pDocShell;}
 
     SW_DLLPUBLIC rtl::Reference<SwXDocumentSettings> createDocumentSettings();
+    SW_DLLPUBLIC rtl::Reference<SwXTextDefaults> createTextDefaults();
 };
 
 class SwXLinkTargetSupplier final : public cppu::WeakImplHelper
diff --git a/sw/source/core/inc/SwXTextDefaults.hxx 
b/sw/source/core/inc/SwXTextDefaults.hxx
index 0acab2a7d257..87743eb0cee7 100644
--- a/sw/source/core/inc/SwXTextDefaults.hxx
+++ b/sw/source/core/inc/SwXTextDefaults.hxx
@@ -19,6 +19,7 @@
 
 #pragma once
 
+#include <swdllapi.h>
 #include <cppuhelper/implbase.hxx>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/beans/XPropertyState.hpp>
@@ -27,7 +28,7 @@
 class SwDoc;
 class SfxItemPropertySet;
 
-class SwXTextDefaults final :  public cppu::WeakImplHelper
+class SW_DLLPUBLIC SwXTextDefaults final :  public cppu::WeakImplHelper
                         <
                             css::beans::XPropertyState,
                             css::beans::XPropertySet,
diff --git a/sw/source/uibase/uno/unotxdoc.cxx 
b/sw/source/uibase/uno/unotxdoc.cxx
index f93d7438f363..3bbaa1014aff 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -175,6 +175,7 @@
 #include <textcontentcontrol.hxx>
 #include <unocontentcontrol.hxx>
 #include <unoport.hxx>
+#include <SwXTextDefaults.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::text;
@@ -1659,6 +1660,13 @@ rtl::Reference< SwXDocumentSettings > 
SwXTextDocument::createDocumentSettings()
     return new SwXDocumentSettings(this);
 }
 
+rtl::Reference< SwXTextDefaults > SwXTextDocument::createTextDefaults()
+{
+    SolarMutexGuard aGuard;
+    ThrowIfInvalid();
+    return new SwXTextDefaults(&GetDocOrThrow());
+}
+
 Reference< XInterface >  SwXTextDocument::createInstance(const OUString& 
rServiceName)
 {
     return create(rServiceName, nullptr);
diff --git a/sw/source/writerfilter/dmapper/DomainMapper.cxx 
b/sw/source/writerfilter/dmapper/DomainMapper.cxx
index 5a9f84aa3b0d..7d48b265f079 100644
--- a/sw/source/writerfilter/dmapper/DomainMapper.cxx
+++ b/sw/source/writerfilter/dmapper/DomainMapper.cxx
@@ -92,6 +92,7 @@
 #include <sal/log.hxx>
 #include <tools/UnitConversion.hxx>
 #include <unotxdoc.hxx>
+#include <SwXTextDefaults.hxx>
 
 using namespace ::com::sun::star;
 using namespace oox;
@@ -172,8 +173,7 @@ DomainMapper::DomainMapper( const uno::Reference< 
uno::XComponentContext >& xCon
         // the intended font to provide best layout match.
         try
         {
-            uno::Reference< beans::XPropertySet > 
xDefProps(GetTextDocument()->createInstance("com.sun.star.text.Defaults"),
-                uno::UNO_QUERY_THROW);
+            rtl::Reference<SwXTextDefaults> 
xDefProps(GetTextDocument()->createTextDefaults());
             xDefProps->setPropertyValue(getPropertyName(PROP_CHAR_FONT_NAME), 
css::uno::Any(OUString("Calibri")));
             xDefProps->setPropertyValue(getPropertyName(PROP_CHAR_HEIGHT), 
css::uno::Any(double(11)));
         }
diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx 
b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
index c9f8e4d2b077..db22d7f25fe6 100644
--- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
+++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
@@ -133,6 +133,7 @@
 #include <unicode/regex.h>
 #include <unotxdoc.hxx>
 #include <SwXDocumentSettings.hxx>
+#include <SwXTextDefaults.hxx>
 
 #define REFFLDFLAG_STYLE_FROM_BOTTOM 0xc100
 #define REFFLDFLAG_STYLE_HIDE_NON_NUMERICAL 0xc200
@@ -9564,7 +9565,7 @@ void DomainMapper_Impl::ApplySettingsTable()
 
     try
     {
-        uno::Reference< beans::XPropertySet > 
xTextDefaults(m_xTextDocument->createInstance("com.sun.star.text.Defaults"), 
uno::UNO_QUERY_THROW );
+        rtl::Reference< SwXTextDefaults > 
xTextDefaults(m_xTextDocument->createTextDefaults());
         sal_Int32 nDefTab = m_pSettingsTable->GetDefaultTabStop();
         xTextDefaults->setPropertyValue( getPropertyName( 
PROP_TAB_STOP_DISTANCE ), uno::Any(nDefTab) );
         if (m_pSettingsTable->GetLinkStyles())
diff --git a/sw/source/writerfilter/dmapper/StyleSheetTable.cxx 
b/sw/source/writerfilter/dmapper/StyleSheetTable.cxx
index ff121c5bf227..6fb1b60c6d91 100644
--- a/sw/source/writerfilter/dmapper/StyleSheetTable.cxx
+++ b/sw/source/writerfilter/dmapper/StyleSheetTable.cxx
@@ -53,6 +53,7 @@
 #include <comphelper/diagnose_ex.hxx>
 #include <o3tl/sorted_vector.hxx>
 #include <unotxdoc.hxx>
+#include <SwXTextDefaults.hxx>
 
 using namespace ::com::sun::star;
 
@@ -273,7 +274,7 @@ struct StyleSheetTable_Impl
 {
     DomainMapper&                           m_rDMapper;
     rtl::Reference<SwXTextDocument>         m_xTextDocument;
-    uno::Reference< beans::XPropertySet>    m_xTextDefaults;
+    rtl::Reference<SwXTextDefaults>         m_xTextDefaults;
     std::vector< StyleSheetEntryPtr >       m_aStyleSheetEntries;
     std::map< OUString, StyleSheetEntryPtr > m_aStyleSheetEntriesMap;
     std::map<OUString, OUString>            m_ClonedTOCStylesMap;
@@ -1720,9 +1721,7 @@ void StyleSheetTable::applyDefaults(bool bParaProperties)
 
         if(!m_pImpl->m_xTextDefaults.is())
         {
-            m_pImpl->m_xTextDefaults.set(
-                
m_pImpl->m_rDMapper.GetTextDocument()->createInstance("com.sun.star.text.Defaults"),
-                uno::UNO_QUERY_THROW );
+            m_pImpl->m_xTextDefaults = 
m_pImpl->m_rDMapper.GetTextDocument()->createTextDefaults();
         }
 
         // WARNING: these defaults only take effect IF there is a DocDefaults 
style section. Normally there is, but not always.

Reply via email to