From d51c01846afb9bea5a39fd48fbb30b9fd02c2870 Mon Sep 17 00:00:00 2001 From: Justin Luth Date: Fri, 2 Feb 2018 14:53:40 +0300 Subject: init known ExtraLanguages before document loads Extensions can add RegisterOnTheFly languages for spell checkers. A late initialization of the LanguageTable resulted in the inability to recognize the available spell checker. So, if a .doc file had an onTheFly language inside, and it was the first document that LibreOffice opened, then the spell checking extension was disabled for any other document opened while LibreOffice was living, including docx and odt files. (Starting with a blank document, or a .docx or .odt file seems to initialize OK - and then subsequent .doc files are also ok in those sessions.) Ensuring that the static LanguageTable is intialized early in the process avoids this headache. In my case, .doc was failing with: LanguageTag::registerOnTheFly: not cross-inserted 0x7e0 for 'kbo' have 'en-US' but with this patch now matches .odt/docx with: LanguageTag::registerOnTheFly: cross-inserted 0x7e0 for 'kbo' [have 'kbo'] This fixes .ods .odg, odp, .xls .xlsx .ppt, pptx .doc and likely many others Change-Id: Ie6dcbfd73e063eef4573016c3c62d29cf8ad43ca Reviewed-on: https://gerrit.libreoffice.org/49142 Reviewed-by: Martin Hosken Tested-by: Jenkins Reviewed-by: Eike Rathke (cherry picked from commit 427c0804cd4aecde1cadb7cb3c4f3487991bd573) Reviewed-on: https://gerrit.libreoffice.org/49171 Reviewed-by: Justin Luth --- sfx2/source/doc/objstor.cxx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index a82821922606..207c4fdeae96 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -71,6 +71,7 @@ #include #include #include +#include #include #include #include @@ -642,6 +643,9 @@ bool SfxObjectShell::DoLoad( SfxMedium *pMed ) pImpl->nLoadedFlags = SfxLoadedFlags::NONE; pImpl->bModelInitialized = false; + // initialize static language table so language-related extensions are learned before the document loads + (void)SvtLanguageTable::GetLanguageEntryCount(); + //TODO/LATER: make a clear strategy how to handle "UsesStorage" etc. bool bOwnStorageFormat = IsOwnStorageFormat( *pMedium ); bool bHasStorage = IsPackageStorageFormat_Impl( *pMedium ); -- cgit v1.2.3