Kaydet (Commit) 427c0804 authored tarafından Justin Luth's avatar Justin Luth Kaydeden (comit) Eike Rathke

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/49142Reviewed-by: 's avatarMartin Hosken <martin_hosken@sil.org>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarEike Rathke <erack@redhat.com>
üst ecaabbf5
......@@ -72,6 +72,7 @@
#include <comphelper/fileformat.h>
#include <comphelper/processfactory.hxx>
#include <comphelper/interaction.hxx>
#include <svtools/langtab.hxx>
#include <svtools/sfxecode.hxx>
#include <unotools/configmgr.hxx>
#include <unotools/securityoptions.hxx>
......@@ -644,6 +645,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 );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment