desktop/source/lib/init.cxx    |    9 +++++++++
 linguistic/source/dlistimp.cxx |   15 +++++++++++++++
 linguistic/source/dlistimp.hxx |   17 +++++++++--------
 3 files changed, 33 insertions(+), 8 deletions(-)

New commits:
commit 09b8baaaedd788d424d4d14690ae2aff9d60138f
Author:     Rashesh <rashesh.pa...@collabora.com>
AuthorDate: Fri Dec 13 14:22:52 2024 +0530
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Tue Dec 17 09:22:35 2024 +0100

    kit: re-initialize user-defined dictionaries on lo_init
    
    Change-Id: I017767089efe54bf8d32d905e995f1a99c23984f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178398
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    (cherry picked from commit f4df86eda7ef82a3ffaf7fdd76a4775d0f66e438)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178609
    Tested-by: Jenkins

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 0a1a2a620150..1c87d16d505f 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -8260,6 +8260,15 @@ static int lo_initialize(LibreOfficeKit* pThis, const 
char* pAppPath, const char
             uno::Reference<css::util::XPathSettings> xPathSettings = 
util::thePathSettings::get(xContext);
             uno::Reference<lang::XInitialization> 
xReInitSettings(xPathSettings, uno::UNO_QUERY_THROW);
             xReInitSettings->initialize({});
+
+            uno::Reference<css::linguistic2::XSearchableDictionaryList> 
xDicList
+                = LinguMgr::GetDictionaryList();
+            if (xDicList.is())
+            {
+                uno::Reference<lang::XInitialization> 
xReInitDictionaryList(xDicList,
+                                                                            
uno::UNO_QUERY_THROW);
+                xReInitDictionaryList->initialize({});
+            }
         }
     }
 
diff --git a/linguistic/source/dlistimp.cxx b/linguistic/source/dlistimp.cxx
index dd436233de04..56c24db1d4df 100644
--- a/linguistic/source/dlistimp.cxx
+++ b/linguistic/source/dlistimp.cxx
@@ -324,6 +324,11 @@ void DicList::SearchForDictionaries(
             uno::Reference< XDictionary > xDic =
                         new DictionaryNeo( aDicTitle.isEmpty() ? aDicName : 
aDicTitle, nLang, eType, aURL, bIsWriteablePath );
 
+            // when using libreofficekit we don't have "options" dialog to 
make user-dictionaries active
+            // so when we add user-dictionary, we make them active as well
+            if (comphelper::LibreOfficeKit::isActive())
+                xDic->setActive(true);
+
             addDictionary( xDic );
             nCount++;
         }
@@ -572,6 +577,16 @@ void SAL_CALL
         aEvtListeners.removeInterface( rxListener );
 }
 
+void SAL_CALL DicList::initialize(const css::uno::Sequence<css::uno::Any>& 
/*rArguments*/)
+{
+    osl::MutexGuard aGuard(GetLinguMutex());
+
+    if (!bInCreation && !bDisposing)
+    {
+        CreateDicList();
+    }
+}
+
 void DicList::CreateDicList()
 {
     bInCreation = true;
diff --git a/linguistic/source/dlistimp.hxx b/linguistic/source/dlistimp.hxx
index 9d9e7d0882fb..455bfb2f8382 100644
--- a/linguistic/source/dlistimp.hxx
+++ b/linguistic/source/dlistimp.hxx
@@ -22,6 +22,7 @@
 #include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
 
 #include <comphelper/interfacecontainer3.hxx>
 #include <cppuhelper/implbase.hxx>
@@ -34,14 +35,9 @@
 
 class DicEvtListenerHelper;
 
-
-class DicList :
-    public cppu::WeakImplHelper
-    <
-        css::linguistic2::XSearchableDictionaryList,
-        css::lang::XComponent,
-        css::lang::XServiceInfo
-    >
+class DicList : public 
cppu::WeakImplHelper<css::linguistic2::XSearchableDictionaryList,
+                                            css::lang::XComponent, 
css::lang::XServiceInfo,
+                                            css::lang::XInitialization>
 {
     class MyAppExitListener : public linguistic::AppExitListener
     {
@@ -68,6 +64,7 @@ class DicList :
     DicList( const DicList & ) = delete;
     DicList & operator = (const DicList &) = delete;
 
+
     void                CreateDicList();
     DictionaryVec_t &   GetOrCreateDicList()
                         {
@@ -111,6 +108,10 @@ public:
     virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) 
override;
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 
+    // XInitialization
+    virtual void SAL_CALL
+    initialize(const css::uno::Sequence<css::uno::Any>& /*rArguments*/) 
override;
+
     // non UNO-specific
     void    SaveDics();
 };

Reply via email to