external/fontconfig/configs/wnt_fonts.conf | 1 + sal/osl/w32/module.cxx | 4 ++++ sfx2/source/doc/guisaveas.cxx | 21 +++++++++++++++++++++ vcl/source/app/scheduler.cxx | 3 ++- 4 files changed, 28 insertions(+), 1 deletion(-)
New commits: commit 2742d37ac1bd404afc7c67c5bee8917797b6bd0d Author: Tor Lillqvist <[email protected]> AuthorDate: Sun Nov 30 19:14:01 2025 +0100 Commit: Andras Timar <[email protected]> CommitDate: Tue Dec 2 22:05:47 2025 +0100 Look for fonts also in WINDOWSUSERFONTDIR That is where fonts installed by the user goes. Change-Id: If23c542fee8a832da723d1165d38669b24b2fb57 diff --git a/external/fontconfig/configs/wnt_fonts.conf b/external/fontconfig/configs/wnt_fonts.conf index 5dbcff5d2902..2aad205cc774 100644 --- a/external/fontconfig/configs/wnt_fonts.conf +++ b/external/fontconfig/configs/wnt_fonts.conf @@ -25,6 +25,7 @@ <!-- Font directory list --> <dir>WINDOWSFONTDIR</dir> + <dir>WINDOWSUSERFONTDIR</dir> <!-- Accept deprecated 'mono' alias, replacing it with 'monospace' commit b61fcf59cb13cdce9641179298a2d33bd699d876 Author: Tor Lillqvist <[email protected]> AuthorDate: Wed Nov 5 11:47:22 2025 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Dec 2 22:03:50 2025 +0100 Don't fail assertion in Task::~Task() if LibreOfficeKit is active Apps using LibreOfficeKit often have unusual lifecycles. Change-Id: Ie113d7458cff10beba2e44181d0b6ce5758a7634 diff --git a/vcl/source/app/scheduler.cxx b/vcl/source/app/scheduler.cxx index a5b9d4ab4dcf..9b5deaba0cd9 100644 --- a/vcl/source/app/scheduler.cxx +++ b/vcl/source/app/scheduler.cxx @@ -38,6 +38,7 @@ #include <saltimer.hxx> #include <salinst.hxx> #include <comphelper/profilezone.hxx> +#include <comphelper/lok.hxx> #include <schedulerimpl.hxx> namespace { @@ -765,7 +766,7 @@ Task::~Task() COVERITY_NOEXCEPT_FALSE mpSchedulerData->mpTask = nullptr; } else - assert(nullptr == mpSchedulerData || comphelper::IsFuzzing()); + assert(nullptr == mpSchedulerData || comphelper::IsFuzzing() || comphelper::LibreOfficeKit::isActive()); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 63a4ed04a16b427489dd54e698735000655ac311 Author: Tor Lillqvist <[email protected]> AuthorDate: Tue Nov 4 20:40:34 2025 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Dec 2 22:03:50 2025 +0100 Make the CODA-W PDF export file save dialog hack a bit more secure Look for the mangled ++ name, to catch a potential mismatch in function signature. Also, check that the returned function pointer is non-null before calling it. Change-Id: Ib2e0d1cd4b3e26081800b736b74e5972d0819736 diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx index b7db6153c012..2407b99abfdb 100644 --- a/sfx2/source/doc/guisaveas.cxx +++ b/sfx2/source/doc/guisaveas.cxx @@ -1754,12 +1754,16 @@ bool SfxStoringHelper::FinishGUIStoreModel(::comphelper::SequenceAsHashMap::cons // display any dialog yet, so call into a function in // CODA.cpp. typedef void (*ofd_t)(const std::wstring& suggestedURI, std::string& result); - ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), "output_file_dialog_from_core"); - std::string newURI; - (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI); - if (newURI == "") - return false; - aFileName = OUString::fromUtf8(newURI.c_str()); + // Use mangled name to catch changes in parameters... + ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), "?output_file_dialog_from_core@@YAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z"); + if (ofd != NULL) + { + std::string newURI; + (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI); + if (newURI == "") + return false; + aFileName = OUString::fromUtf8(newURI.c_str()); + } } #endif commit f4b9d6f024b27c4d8ddaabfe0eaa0b404137e3cf Author: Tor Lillqvist <[email protected]> AuthorDate: Tue Nov 4 17:33:28 2025 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Dec 2 22:03:50 2025 +0100 Add horrible hack to ask the filename when exporting PDF in CODA-W The PDF export functionality displays a dialog from JavaScript that allows the user to choose various PDF parameters. But unlike export to other formats, no system file save dialog gets displayed by CODA. So do something horrible: Look up a function in CODA.cpp and call it directly. Sorry. Change-Id: I21932b2ba67d3aab72463d51f8ef71182ca5c736 diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx index ed2bcdf48ad1..b7db6153c012 100644 --- a/sfx2/source/doc/guisaveas.cxx +++ b/sfx2/source/doc/guisaveas.cxx @@ -104,6 +104,7 @@ #include <svl/cryptosign.hxx> #ifdef _WIN32 +#include <o3tl/char16_t2wchar_t.hxx> #include <Shlobj.h> #ifdef GetTempPath #undef GetTempPath @@ -1746,6 +1747,22 @@ bool SfxStoringHelper::FinishGUIStoreModel(::comphelper::SequenceAsHashMap::cons { OUString aFileName; aFileNameIter->second >>= aFileName; +#ifdef _WIN32 + if (comphelper::LibreOfficeKit::isActive()) + { + // FIXME: Horrible hack. In CODA-W, we didn't actually + // display any dialog yet, so call into a function in + // CODA.cpp. + typedef void (*ofd_t)(const std::wstring& suggestedURI, std::string& result); + ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), "output_file_dialog_from_core"); + std::string newURI; + (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI); + if (newURI == "") + return false; + aFileName = OUString::fromUtf8(newURI.c_str()); + } +#endif + aURL.SetURL( aFileName ); DBG_ASSERT( aURL.GetProtocol() != INetProtocol::NotValid, "Illegal URL!" ); commit 4a2974f76d10a8fb2311511a90485fa61f9b00e4 Author: Tor Lillqvist <[email protected]> AuthorDate: Tue May 27 10:48:36 2025 +0300 Commit: Andras Timar <[email protected]> CommitDate: Tue Dec 2 22:03:50 2025 +0100 Add some DISABLE_DYNLOADING ifdefs to osl/w32, as for unx Lots of things will have to be tweaked to build core statically for Windows. This is just one small isolated and fairly obvious trivial commit. (Assuming that in the disable-dynloading case, for Windows we want to ´drop the same dynamic library loading functions in osl as for Unixish systems.) Change-Id: Ica0a00d7a3d5b85e5eb933ebd5722824fbf5deeb diff --git a/sal/osl/w32/module.cxx b/sal/osl/w32/module.cxx index e0a2940b16f9..ec19158003ca 100644 --- a/sal/osl/w32/module.cxx +++ b/sal/osl/w32/module.cxx @@ -31,6 +31,8 @@ #include <o3tl/char16_t2wchar_t.hxx> #include <vector> +#ifndef DISABLE_DYNLOADING + /* under WIN32, we use the void* oslModule as a WIN32 HANDLE (which is also a 32-bit value) @@ -103,6 +105,8 @@ oslModule osl_loadModuleRelativeAscii( return osl_loadModuleRelative(baseModule, OUString::createFromAscii(relativePath).pData, mode); } +#endif // !DISABLE_DYNLOADING + sal_Bool SAL_CALL osl_getModuleHandle(rtl_uString *pModuleName, oslModule *pResult) {
