desktop/source/lib/init.cxx |   61 +++++++++++++++++++++++++++-----------------
 1 file changed, 38 insertions(+), 23 deletions(-)

New commits:
commit d2482093fe148df84a582e2d29cf987332f54ce1
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sat Nov 2 19:44:52 2024 +0000
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Wed Nov 6 16:26:41 2024 +0100

    call PathSettings::initialize after utl::Bootstrap::reloadData
    
    and add setting 'BRAND_BASE_DIR' alongside existing 'UserInstallation'
    which necessitates moving this block after aAppPath is determined
    
    Done so that PathSettings will use the new locations set in bootstrap
    for UserInstallation directory and not the locations detected during
    preinit.
    
    So autotext can be found relative to the final UserInstallation dir.
    
    Change-Id: Ib6dadbec85a380475537027a8ce3972e31089711
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175960
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 439dbcb7a848..028f25402358 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -111,6 +111,7 @@
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+#include <com/sun/star/util/thePathSettings.hpp>
 #include <com/sun/star/util/URLTransformer.hpp>
 #include <com/sun/star/util/XFlushable.hpp>
 #include <com/sun/star/configuration/theDefaultProvider.hpp>
@@ -8011,6 +8012,9 @@ static void preloadData()
 
     // Set user profile's path back to the original one
     rtl::Bootstrap::set(u"UserInstallation"_ustr, sUserPath);
+
+    // Note that unotools::Bootstrap has initialized from the temp 
UserInstallation at this point
+    // see Bootstrap::reloadData for when it gets resynced
 }
 
 namespace {
@@ -8211,29 +8215,6 @@ static int lo_initialize(LibreOfficeKit* pThis, const 
char* pAppPath, const char
     if (eStage != PRE_INIT)
         
comphelper::LibreOfficeKit::setStatusIndicatorCallback(lo_status_indicator_callback,
 pLib);
 
-    if (pUserProfileUrl && eStage != PRE_INIT)
-    {
-        OUString url(
-            pUserProfileUrl, strlen(pUserProfileUrl), RTL_TEXTENCODING_UTF8);
-        OUString path;
-        if (url.startsWithIgnoreAsciiCase("vnd.sun.star.pathname:", &path))
-        {
-            OUString url2;
-            osl::FileBase::RC e = osl::FileBase::getFileURLFromSystemPath(
-                path, url2);
-            if (e == osl::FileBase::E_None)
-                url = url2;
-            else
-                SAL_WARN("lok", "resolving <" << url << "> failed with " << 
+e);
-        }
-        rtl::Bootstrap::set(u"UserInstallation"_ustr, url);
-        if (eStage == SECOND_INIT)
-        {
-            comphelper::rng::reseed();
-            utl::Bootstrap::reloadData();
-        }
-    }
-
     OUString aAppPath;
     if (pAppPath)
     {
@@ -8265,6 +8246,40 @@ static int lo_initialize(LibreOfficeKit* pThis, const 
char* pAppPath, const char
     if (osl::FileBase::getFileURLFromSystemPath(aAppPath, aAppURL) != 
osl::FileBase::E_None)
         return 0;
 
+    if (pUserProfileUrl && eStage != PRE_INIT)
+    {
+        OUString url(
+            pUserProfileUrl, strlen(pUserProfileUrl), RTL_TEXTENCODING_UTF8);
+        OUString path;
+        if (url.startsWithIgnoreAsciiCase("vnd.sun.star.pathname:", &path))
+        {
+            OUString url2;
+            osl::FileBase::RC e = osl::FileBase::getFileURLFromSystemPath(
+                path, url2);
+            if (e == osl::FileBase::E_None)
+                url = url2;
+            else
+                SAL_WARN("lok", "resolving <" << url << "> failed with " << 
+e);
+        }
+
+        rtl::Bootstrap::set(u"UserInstallation"_ustr, url);
+        rtl::Bootstrap::set(u"BRAND_BASE_DIR"_ustr, aAppURL + "/..");
+        if (eStage == SECOND_INIT)
+        {
+            comphelper::rng::reseed();
+
+            utl::Bootstrap::reloadData();
+
+            // Now that bootstrap User/Shared installation paths have been 
(re)set to the final
+            // location, reinitialize the PathSettings so 
$(userurl)/$(instdir) path variables
+            // will be expanded using these newly set paths and not the paths 
detected during
+            // preinit which used unorthodox throwaway temp locations
+            uno::Reference<css::util::XPathSettings> xPathSettings = 
util::thePathSettings::get(xContext);
+            uno::Reference<lang::XInitialization> xReInit(xPathSettings, 
uno::UNO_QUERY_THROW);
+            xReInit->initialize({});
+        }
+    }
+
 #ifdef IOS
     // A LibreOffice-using iOS app should have the ICU data file in the app 
bundle. Initialize ICU
     // to use that.

Reply via email to