sw/Library_msword.mk                      |    1 +
 sw/inc/viewsh.hxx                         |    4 ++--
 sw/source/filter/ww8/docxexportfilter.cxx |    4 ++++
 sw/source/uibase/inc/wrtsh.hxx            |    4 ++--
 4 files changed, 9 insertions(+), 4 deletions(-)

New commits:
commit 9cdb58822849805ca939e1079b01262e75a96bf2
Author:     Jim Raykowski <[email protected]>
AuthorDate: Sat Jan 3 15:40:11 2026 -0900
Commit:     Jim Raykowski <[email protected]>
CommitDate: Wed Jan 14 23:55:22 2026 +0100

    tdf#169964 Fix folded OLE objects are not saved in docx
    
    Examining DocxAttributeOutput::WriteFlyFrame case ww8::Frame::eOle,
    it seems that OLE objects need to have their frames visible in
    the document for them to be saved. This patch makes all folded
    outline content visible during execution of the
    DocxExportFilter:exportDocument function. SW_DLLPUBLIC's are added to
    make linking succeed with clang.
    
    Change-Id: I8fcaa98402ebd9a7a6135f65467a82bbca8731f9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196516
    Tested-by: Jenkins
    Reviewed-by: Jim Raykowski <[email protected]>

diff --git a/sw/Library_msword.mk b/sw/Library_msword.mk
index 7d9d0c7f80f8..ba5ec835d642 100644
--- a/sw/Library_msword.mk
+++ b/sw/Library_msword.mk
@@ -32,6 +32,7 @@ $(eval $(call gb_Library_set_include,msword,\
     -I$(SRCDIR)/sw/source/core/inc \
     -I$(SRCDIR)/sw/source/filter/inc \
     -I$(SRCDIR)/sw/inc \
+    -I$(SRCDIR)/sw/source/uibase/inc \
     $$(INCLUDE) \
 ))
 
diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx
index cece0d0dfdfc..8da56ee9b75b 100644
--- a/sw/inc/viewsh.hxx
+++ b/sw/inc/viewsh.hxx
@@ -523,9 +523,9 @@ public:
     void LockView( bool b )   { mbViewLocked = b;    }
 
     inline void LockPaint(LockPaintReason eReason);
-           void ImplLockPaint();
+    SW_DLLPUBLIC void ImplLockPaint();
     inline void UnlockPaint(bool bVirDev = false );
-           void ImplUnlockPaint( std::vector<LockPaintReason>& rReasons, bool 
bVirDev );
+    SW_DLLPUBLIC void ImplUnlockPaint(std::vector<LockPaintReason>& rReasons, 
bool bVirDev);
            bool IsPaintLocked() const { return mnLockPaint != 0; }
 
     // Get/set DrawView and PageView.
diff --git a/sw/source/filter/ww8/docxexportfilter.cxx 
b/sw/source/filter/ww8/docxexportfilter.cxx
index c2ad2d0756e2..33502ad1f0c7 100644
--- a/sw/source/filter/ww8/docxexportfilter.cxx
+++ b/sw/source/filter/ww8/docxexportfilter.cxx
@@ -31,6 +31,8 @@
 #include <comphelper/sequenceashashmap.hxx>
 #include <unotools/mediadescriptor.hxx>
 
+#include <wrtsh.hxx>
+
 using namespace ::comphelper;
 using namespace ::com::sun::star;
 
@@ -51,6 +53,8 @@ bool DocxExportFilter::exportDocument()
     if ( !pDoc )
         return false;
 
+    MakeAllOutlineContentTemporarilyVisible a(pDoc);
+
     // update layout (if present), for SwWriteTable
     SwViewShell* pViewShell = 
pDoc->getIDocumentLayoutAccess().GetCurrentViewShell();
     if (pViewShell != nullptr)
diff --git a/sw/source/uibase/inc/wrtsh.hxx b/sw/source/uibase/inc/wrtsh.hxx
index 821a321f7a65..a8574a2806e7 100644
--- a/sw/source/uibase/inc/wrtsh.hxx
+++ b/sw/source/uibase/inc/wrtsh.hxx
@@ -524,7 +524,7 @@ typedef bool (SwWrtShell::*FNSimpleMove)();
 
     bool IsOutlineContentVisible(const size_t nPos);
     void MakeOutlineContentVisible(const size_t nPos, bool bMakeVisible = 
true, bool bSetAttrOutlineVisibility = true);
-    void MakeAllFoldedOutlineContentVisible(bool bMakeVisible = true);
+    SW_DLLPUBLIC void MakeAllFoldedOutlineContentVisible(bool bMakeVisible = 
true);
     void InvalidateOutlineContentVisibility();
     bool GetAttrOutlineContentVisible(const size_t nPos) const;
 
@@ -704,7 +704,7 @@ inline bool SwWrtShell::Is_FnDragEQBeginDrag() const
 #endif
 }
 
-class MakeAllOutlineContentTemporarilyVisible
+class SW_DLLPUBLIC MakeAllOutlineContentTemporarilyVisible
 {
 private:
     SwWrtShell* m_pWrtSh = nullptr;

Reply via email to