mirror of
https://abf.rosa.ru/djam/libreoffice.git
synced 2025-02-23 10:32:59 +00:00
3.6.4
This commit is contained in:
parent
97b1bc6b12
commit
c50671b8fc
15 changed files with 1901 additions and 679 deletions
27
.abf.yml
27
.abf.yml
|
@ -1,10 +1,9 @@
|
|||
sources:
|
||||
"067201ea8b126597670b5eff72e1f66c-mythes-1.2.0.tar.gz": 025d5d0d566a23ddb353495c116116c1088ba2e9
|
||||
"0d2dcdfbf28d6208751b33057f5361f0-libcmis-0.2.3.tar.gz": 9cc8d29cc129d1aca1a1f24e799eebd6f2f1b93d
|
||||
"0f63ee487fda8f21fafa767b3c447ac9-ixion-0.2.0.tar.gz": c67f67b4b8ae46ef94bc8c09dc29ff66d5796d37
|
||||
"0ff7d225d087793c8c2c680d77aac3e7-mdds_0.5.3.tar.bz2": e578b6c8e8fe4b20ae030fc14959b92cb6b1aba4
|
||||
"17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip": 7168b0f40aa5c72267899601c116d2348d2f56ec
|
||||
"1756c4fa6c616ae15973c104cd8cb256-Adobe-Core35_AFMs-314.tar.gz": 28d4ec24dfda4eb41b6ceaa0cfcfca41b578f3b3
|
||||
"185d60944ea767075d27247c3162b3bc-unowinreg.dll": 0619ed3a89644bef318df67db12045b2b590585b
|
||||
"18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz": 1dcd28d3fc7af42ceb63006cdc56aa55ac66d355
|
||||
"1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz": 8f949ae74a6d66278a595bd063f13e0ad196d14a
|
||||
"26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz": 815216ecc4c8cac1cc5905ca3fb5d6168c1deac4
|
||||
|
@ -12,37 +11,39 @@ sources:
|
|||
"2a177023f9ea8ec8bd00837605c5df1b-jakarta-tomcat-5.0.30-src.tar.gz": 32d2298c78132a629ed2ac6c9830b4d52770ce02
|
||||
"2ae988b339daec234019a7066f96733e-commons-lang-2.3-src.tar.gz": efc1ab026e8e9ac4cd150cb4cf1b7e4663cddc84
|
||||
"2c9b0f83ed5890af02c0df1c1776f39b-commons-httpclient-3.1-src.tar.gz": 5c604f102e0716597b3d2659ac3e77f80a02f22d
|
||||
"327348d67c979c88c2dec59a23a17d85-lcms2-2.3.tar.gz": 67d5fabda2f5777ca8387766539b9c871d993133
|
||||
"3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip": 3232dd31859be4f7eb443c33e8e3287f394789a0
|
||||
"35c94d2df8893241173de1d16b6034c0-swingExSrc.zip": 1acea86fd399ed7817879d36370d3d1f8b109050
|
||||
"39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip": b92930010622906778f713fb8f0153fa0683d018
|
||||
"3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip": e393beea80d36ff27b732882c706826988a64f5c
|
||||
"3c219630e4302863a9a83d0efde889db-commons-logging-1.1.1-src.tar.gz": 9408c7ebfba2e64065bc09016192e8513ba949a0
|
||||
"48a9f787f43a09c0a9b7b00cd1fddbbf-hyphen-2.7.1.tar.gz": 5149507aee5807c04c34a82b18bcd54a8cb61213
|
||||
"48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz": 76d6788e747e78abb5abf8eaad78d3342da5f2a4
|
||||
"48d8169acc35f97e05d8dcdfd45be7f2-lucene-2.3.2.tar.gz": cd6778a5272f5d05c0c5f86593bfc42d503f1dda
|
||||
"6097739c841f671cb21332b9cc593ae7-libexttextcat-3.3.1.tar.bz2": a65ce43becd7b4ad265fd96a5c81a549538656f9
|
||||
"798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip": 8a90669029e107b61953b90ba11545fef586c2ca
|
||||
"7c2549f6b0a8bb604e6c4c729ffdcfe6-libcmis-0.1.0.tar.gz": 9575aad04e4476236ab6f490b583f996c6632ab4
|
||||
"86261f06c097d3e425a2f6d0b0635380-hyphen-2.8.3.tar.gz": f708f0adb4b1e45fc041cc7152d467bf818c0fc9
|
||||
"8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip": a637c0c3ad3be32d6814972e1c45e547c5f6359d
|
||||
"94e7f271e38c976462558b4278590178-libvisio-0.0.19.tar.bz2": 9fc1269f7b3fdcd6064c853efcca4704bfa08449
|
||||
"97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip": 47b58e0ef2d856df26372a7061ae43fae6e08051
|
||||
"Mandriva-Rosa_Icons.tar.bz2": 53448c079fcb3008d1fdec7f95305fe392460c1f
|
||||
"a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip": 2d49e11b0b711970f494294dc3698f05eb294853
|
||||
"ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip": b19ad429273abb116432eae3af955ecaf1ab5b17
|
||||
"ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip": 528dc8fa11343fa2a5d584dd2f8d5e2238ed78ba
|
||||
"af3c3acf618de6108d65fcdc92b492e1-commons-codec-1.3-src.tar.gz": d490a9bb30ea9e8b95c250f4d96842e0ce0c60d7
|
||||
"apache-ant-1.8.1-bin.tar.bz2": 0e0359f04b3d84fed75b3a1ab02cbc415c8864a1
|
||||
"ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip": 1acd76cd63f7b19f6a0252eb029c3cb13a25aa9b
|
||||
"ce5a1def34578b75959ac31210f031f6-libcdr-0.0.8.tar.bz2": 9f26a08a3f68452f2c67a757f9e8be86a1901f0f
|
||||
"d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip": 3478ebc27bb76025f4b5c2ae6a9bac6090e2cb09
|
||||
"db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip": 65dfba9970bb862d09c1f9e636b86b22f05d3936
|
||||
"e1c178b18f130b40494561f02bc1a948-libexttextcat-3.2.0.tar.bz2": c31e9994aba038f1ad85b4d3a2e7e9d9317bdaf5
|
||||
"ea570af93c284aa9e5621cd563f54f4d-bsh-2.0b1-src.tar.gz": 51537a09aa546336b0477c70077f3e21d857caa7
|
||||
"eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip": 43a7ff11dd15370d456b20a093e1ee81279163a0
|
||||
"f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip": 5ecb895ffc1eff2c381fa78d2197d0c57422b3df
|
||||
"fca8706f2c4619e2fa3f8f42f8fc1e9d-rasqal-0.9.16.tar.gz": 55e08ee78c15de417cbfccb9e748747095994886
|
||||
"fdb27bfe2dbe2e7b57ae194d9bf36bab-SampleICC-1.3.2.tar.gz": 6e836945719e137596df1ca82f0afa809e8a2e88
|
||||
"libreoffice-binfilter-3.5.6.2.tar.xz": f613e4a5c4fe27b8d56ed09b3f31109929b5178c
|
||||
"libreoffice-core-3.5.6.2.tar.xz": 8e6c6cee419608c985dbcba005384a8555e9c531
|
||||
"libreoffice-dictionaries-3.5.6.2.tar.xz": 733abaa1b718d41486d7c571749a198202d65929
|
||||
"libreoffice-help-3.5.6.2.tar.xz": d53969208aaa99d87300cdd06a6c310502f6485d
|
||||
"libreoffice-translations-3.5.6.2.tar.xz": ee699e67628f0394e3d2d8f84e14acb3aeaac730
|
||||
"Mandriva-Rosa_Icons.tar.bz2": 53448c079fcb3008d1fdec7f95305fe392460c1f
|
||||
"ooo_oxygen_images-2009-06-17.tar.gz": c3dd261bfe366ac514a019b0fa829369b833c0c7
|
||||
|
||||
libreoffice-core-3.6.4.3.tar.xz: fe076115cecbc5fae19ebc7015614acad5b938e5
|
||||
libreoffice-binfilter-3.6.4.3.tar.xz: 3781bab830ac4ef4ab3c8fe7438fbdeabe4376aa
|
||||
libreoffice-help-3.6.4.3.tar.xz: 92bbdb3f7bfc6c7b2f2f1f5d31109417020d901e
|
||||
libreoffice-dictionaries-3.6.4.3.tar.xz: 29188fda3ba9db1faa8fb4bf53a13a191fc857ed
|
||||
libreoffice-translations-3.6.4.3.tar.xz: b691d9bffbe51922a087e672b7ae23902f566ed9
|
||||
3c0037fb07dea2f0bbae8386fa7c6a9a-libcdr-0.0.9.tar.bz2: a572db87b72d63d0d33f5c55ed564e0f003273b5
|
||||
ooo_oxygen_images-2009-06-17.tar.gz: c3dd261bfe366ac514a019b0fa829369b833c0c7
|
||||
|
|
970
0001-Resolves-rhbz-836937-insanely-slow-with-Zemberek-ins.patch
Normal file
970
0001-Resolves-rhbz-836937-insanely-slow-with-Zemberek-ins.patch
Normal file
|
@ -0,0 +1,970 @@
|
|||
diff -ru libreoffice-3.5.5.3.orig/cui/source/options/optlingu.cxx libreoffice-3.5.5.3/cui/source/options/optlingu.cxx
|
||||
--- libreoffice-3.5.5.3.orig/cui/source/options/optlingu.cxx 2012-07-13 12:37:15.032259144 +0100
|
||||
+++ libreoffice-3.5.5.3/cui/source/options/optlingu.cxx 2012-07-16 08:49:26.294209540 +0100
|
||||
@@ -1150,12 +1150,6 @@
|
||||
aLinguDicsEditPB.SetAccessibleName(sAccessibleNameDicsEdit);
|
||||
aLinguOptionsEditPB.SetAccessibleName(sAccessibleNameOptionEdit);
|
||||
|
||||
- // force recalculation of hash value used for checking the need of updating
|
||||
- // because new dictionaries might be installed / downloaded.
|
||||
- //! Thus it needs to be called now since it may infuence the supported languages
|
||||
- //! to be reported AND the found user-dictionaries(!) as well.
|
||||
- SvxLinguConfigUpdate::UpdateAll( sal_True );
|
||||
-
|
||||
xProp = uno::Reference< XPropertySet >( SvxGetLinguPropertySet(), UNO_QUERY );
|
||||
xDicList = uno::Reference< XDictionaryList >( SvxGetDictionaryList(), UNO_QUERY );
|
||||
if (xDicList.is())
|
||||
diff -ru libreoffice-3.5.5.3.orig/editeng/inc/editeng/unolingu.hxx libreoffice-3.5.5.3/editeng/inc/editeng/unolingu.hxx
|
||||
--- libreoffice-3.5.5.3.orig/editeng/inc/editeng/unolingu.hxx 2012-07-13 12:37:16.109269892 +0100
|
||||
+++ libreoffice-3.5.5.3/editeng/inc/editeng/unolingu.hxx 2012-07-16 08:49:26.294209540 +0100
|
||||
@@ -46,29 +46,6 @@
|
||||
class Window;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
-// SvxLinguConfigUpdate
|
||||
-// class to update configuration items when (before!) the linguistic is used.
|
||||
-//
|
||||
-// This class is called by all the dummy implementations to update all of the
|
||||
-// configuration (list of used/available services) when the linguistic is
|
||||
-// accessed for the first time.
|
||||
-
|
||||
-class SvxLinguConfigUpdate
|
||||
-{
|
||||
- static sal_Int32 nCurrentDataFilesChangedCheckValue;
|
||||
- static sal_Int16 nNeedUpdating; // n == -1 => needs to be checked
|
||||
- // n == 0 => already updated, nothing to be done
|
||||
- // n == 1 => needs to be updated
|
||||
-
|
||||
- static sal_Int32 CalcDataFilesChangedCheckValue();
|
||||
-
|
||||
-public:
|
||||
-
|
||||
- EDITENG_DLLPUBLIC static void UpdateAll( sal_Bool bForceCheck = sal_False );
|
||||
- static sal_Bool IsNeedUpdateAll( sal_Bool bForceCheck = sal_False );
|
||||
-};
|
||||
-
|
||||
-///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class EDITENG_DLLPUBLIC LinguMgr
|
||||
{
|
||||
diff -ru libreoffice-3.5.5.3.orig/editeng/source/misc/unolingu.cxx libreoffice-3.5.5.3/editeng/source/misc/unolingu.cxx
|
||||
--- libreoffice-3.5.5.3.orig/editeng/source/misc/unolingu.cxx 2012-07-13 12:37:15.900267806 +0100
|
||||
+++ libreoffice-3.5.5.3/editeng/source/misc/unolingu.cxx 2012-07-16 08:52:53.919596778 +0100
|
||||
@@ -90,365 +90,6 @@
|
||||
return xRes;
|
||||
}
|
||||
|
||||
-sal_Bool lcl_FindEntry( const OUString &rEntry, const Sequence< OUString > &rCfgSvcs )
|
||||
-{
|
||||
- sal_Int32 nRes = -1;
|
||||
- sal_Int32 nEntries = rCfgSvcs.getLength();
|
||||
- const OUString *pEntry = rCfgSvcs.getConstArray();
|
||||
- for (sal_Int32 i = 0; i < nEntries && nRes == -1; ++i)
|
||||
- {
|
||||
- if (rEntry == pEntry[i])
|
||||
- nRes = i;
|
||||
- }
|
||||
- return nRes != -1;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-Sequence< OUString > lcl_RemoveMissingEntries(
|
||||
- const Sequence< OUString > &rCfgSvcs,
|
||||
- const Sequence< OUString > &rAvailSvcs )
|
||||
-{
|
||||
- Sequence< OUString > aRes( rCfgSvcs.getLength() );
|
||||
- OUString *pRes = aRes.getArray();
|
||||
- sal_Int32 nCnt = 0;
|
||||
-
|
||||
- sal_Int32 nEntries = rCfgSvcs.getLength();
|
||||
- const OUString *pEntry = rCfgSvcs.getConstArray();
|
||||
- for (sal_Int32 i = 0; i < nEntries; ++i)
|
||||
- {
|
||||
- if (!pEntry[i].isEmpty() && lcl_FindEntry( pEntry[i], rAvailSvcs ))
|
||||
- pRes[ nCnt++ ] = pEntry[i];
|
||||
- }
|
||||
-
|
||||
- aRes.realloc( nCnt );
|
||||
- return aRes;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-Sequence< OUString > lcl_GetLastFoundSvcs(
|
||||
- SvtLinguConfig &rCfg,
|
||||
- const OUString &rLastFoundList ,
|
||||
- const Locale &rAvailLocale )
|
||||
-{
|
||||
- Sequence< OUString > aRes;
|
||||
-
|
||||
- OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
- SvxLocaleToLanguage( rAvailLocale ) ) );
|
||||
-
|
||||
- Sequence< OUString > aNodeNames( rCfg.GetNodeNames(rLastFoundList) );
|
||||
- sal_Bool bFound = lcl_FindEntry( aCfgLocaleStr, aNodeNames);
|
||||
-
|
||||
- if (bFound)
|
||||
- {
|
||||
- Sequence< OUString > aNames(1);
|
||||
- OUString &rNodeName = aNames.getArray()[0];
|
||||
- rNodeName = rLastFoundList;
|
||||
- rNodeName += OUString::valueOf( (sal_Unicode)'/' );
|
||||
- rNodeName += aCfgLocaleStr;
|
||||
- Sequence< Any > aValues( rCfg.GetProperties( aNames ) );
|
||||
- if (aValues.getLength())
|
||||
- {
|
||||
- OSL_ENSURE( aValues.getLength() == 1, "unexpected length of sequence" );
|
||||
- Sequence< OUString > aSvcImplNames;
|
||||
- if (aValues.getConstArray()[0] >>= aSvcImplNames)
|
||||
- aRes = aSvcImplNames;
|
||||
- else
|
||||
- {
|
||||
- OSL_FAIL( "type mismatch" );
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return aRes;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-Sequence< OUString > lcl_GetNewEntries(
|
||||
- const Sequence< OUString > &rLastFoundSvcs,
|
||||
- const Sequence< OUString > &rAvailSvcs )
|
||||
-{
|
||||
- sal_Int32 nLen = rAvailSvcs.getLength();
|
||||
- Sequence< OUString > aRes( nLen );
|
||||
- OUString *pRes = aRes.getArray();
|
||||
- sal_Int32 nCnt = 0;
|
||||
-
|
||||
- const OUString *pEntry = rAvailSvcs.getConstArray();
|
||||
- for (sal_Int32 i = 0; i < nLen; ++i)
|
||||
- {
|
||||
- if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], rLastFoundSvcs ))
|
||||
- pRes[ nCnt++ ] = pEntry[i];
|
||||
- }
|
||||
-
|
||||
- aRes.realloc( nCnt );
|
||||
- return aRes;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-Sequence< OUString > lcl_MergeSeq(
|
||||
- const Sequence< OUString > &rCfgSvcs,
|
||||
- const Sequence< OUString > &rNewSvcs )
|
||||
-{
|
||||
- Sequence< OUString > aRes( rCfgSvcs.getLength() + rNewSvcs.getLength() );
|
||||
- OUString *pRes = aRes.getArray();
|
||||
- sal_Int32 nCnt = 0;
|
||||
-
|
||||
- for (sal_Int32 k = 0; k < 2; ++k)
|
||||
- {
|
||||
- // add previously configuerd service first and append
|
||||
- // new found services at the end
|
||||
- const Sequence< OUString > &rSeq = k == 0 ? rCfgSvcs : rNewSvcs;
|
||||
-
|
||||
- sal_Int32 nLen = rSeq.getLength();
|
||||
- const OUString *pEntry = rSeq.getConstArray();
|
||||
- for (sal_Int32 i = 0; i < nLen; ++i)
|
||||
- {
|
||||
- if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], aRes ))
|
||||
- pRes[ nCnt++ ] = pEntry[i];
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- aRes.realloc( nCnt );
|
||||
- return aRes;
|
||||
-}
|
||||
-
|
||||
-sal_Int16 SvxLinguConfigUpdate::nNeedUpdating = -1;
|
||||
-sal_Int32 SvxLinguConfigUpdate::nCurrentDataFilesChangedCheckValue = -1;
|
||||
-
|
||||
-void SvxLinguConfigUpdate::UpdateAll( sal_Bool bForceCheck )
|
||||
-{
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::UpdateAll" );
|
||||
-
|
||||
- if (IsNeedUpdateAll( bForceCheck ))
|
||||
- {
|
||||
- typedef OUString OUstring_t;
|
||||
- typedef Sequence< OUString > Sequence_OUString_t;
|
||||
- typedef std::map< OUstring_t, Sequence_OUString_t > list_entry_map_t;
|
||||
-
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::UpdateAll - updating..." );
|
||||
-
|
||||
- OSL_ENSURE( nNeedUpdating == 1, "SvxLinguConfigUpdate::UpdateAll already updated!" );
|
||||
-
|
||||
- uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
|
||||
- OSL_ENSURE( xLngSvcMgr.is(), "service manager missing");
|
||||
- if (!xLngSvcMgr.is())
|
||||
- return;
|
||||
-
|
||||
- SvtLinguConfig aCfg;
|
||||
-
|
||||
- const int nNumServices = 4;
|
||||
- const sal_Char * apServices[nNumServices] = { SN_SPELLCHECKER, SN_GRAMMARCHECKER, SN_HYPHENATOR, SN_THESAURUS };
|
||||
- const sal_Char * apCurLists[nNumServices] = { "ServiceManager/SpellCheckerList", "ServiceManager/GrammarCheckerList", "ServiceManager/HyphenatorList", "ServiceManager/ThesaurusList" };
|
||||
- const sal_Char * apLastFoundLists[nNumServices] = { "ServiceManager/LastFoundSpellCheckers", "ServiceManager/LastFoundGrammarCheckers", "ServiceManager/LastFoundHyphenators", "ServiceManager/LastFoundThesauri" };
|
||||
-
|
||||
- // usage of indices as above: 0 = spell checker, 1 = grammar checker, 2 = hyphenator, 3 = thesaurus
|
||||
- std::vector< list_entry_map_t > aLastFoundSvcs(nNumServices);
|
||||
- std::vector< list_entry_map_t > aCurSvcs(nNumServices);
|
||||
-
|
||||
- for (int k = 0; k < nNumServices; ++k)
|
||||
- {
|
||||
- OUString aService( ::rtl::OUString::createFromAscii( apServices[k] ) );
|
||||
- OUString aActiveList( ::rtl::OUString::createFromAscii( apCurLists[k] ) );
|
||||
- OUString aLastFoundList( ::rtl::OUString::createFromAscii( apLastFoundLists[k] ) );
|
||||
- sal_Int32 i;
|
||||
-
|
||||
- //
|
||||
- // remove configured but not available language/services entries
|
||||
- //
|
||||
- Sequence< OUString > aNodeNames( aCfg.GetNodeNames( aActiveList ) ); // list of configured locales
|
||||
- sal_Int32 nNodeNames = aNodeNames.getLength();
|
||||
- const OUString *pNodeName = aNodeNames.getConstArray();
|
||||
- for (i = 0; i < nNodeNames; ++i)
|
||||
- {
|
||||
- Locale aLocale( SvxCreateLocale( MsLangId::convertIsoStringToLanguage(pNodeName[i]) ) );
|
||||
- Sequence< OUString > aCfgSvcs(
|
||||
- xLngSvcMgr->getConfiguredServices( aService, aLocale ));
|
||||
- Sequence< OUString > aAvailSvcs(
|
||||
- xLngSvcMgr->getAvailableServices( aService, aLocale ));
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- const OUString * pCfgSvcs = aCfgSvcs.getConstArray();
|
||||
- const OUString * pAvailSvcs = aAvailSvcs.getConstArray();
|
||||
- (void) pCfgSvcs;
|
||||
- (void) pAvailSvcs;
|
||||
-#endif
|
||||
- aCfgSvcs = lcl_RemoveMissingEntries( aCfgSvcs, aAvailSvcs );
|
||||
-
|
||||
- aCurSvcs[k][ pNodeName[i] ] = aCfgSvcs;
|
||||
- }
|
||||
-
|
||||
- //
|
||||
- // add new available language/servcice entries
|
||||
- //
|
||||
- uno::Reference< XAvailableLocales > xAvail( xLngSvcMgr, UNO_QUERY );
|
||||
- Sequence< Locale > aAvailLocales( xAvail->getAvailableLocales(aService) );
|
||||
- sal_Int32 nAvailLocales = aAvailLocales.getLength();
|
||||
- const Locale *pAvailLocale = aAvailLocales.getConstArray();
|
||||
- for (i = 0; i < nAvailLocales; ++i)
|
||||
- {
|
||||
- Sequence< OUString > aAvailSvcs(
|
||||
- xLngSvcMgr->getAvailableServices( aService, pAvailLocale[i] ));
|
||||
- Sequence< OUString > aLastSvcs(
|
||||
- lcl_GetLastFoundSvcs( aCfg, aLastFoundList , pAvailLocale[i] ));
|
||||
- Sequence< OUString > aNewSvcs =
|
||||
- lcl_GetNewEntries( aLastSvcs, aAvailSvcs );
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- const OUString * pAvailSvcs = aAvailSvcs.getConstArray();
|
||||
- const OUString * pLastSvcs = aLastSvcs.getConstArray();
|
||||
- const OUString * pNewSvcs = aNewSvcs.getConstArray();
|
||||
- (void) pAvailSvcs;
|
||||
- (void) pLastSvcs;
|
||||
- (void) pNewSvcs;
|
||||
-#endif
|
||||
-
|
||||
- OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
- SvxLocaleToLanguage( pAvailLocale[i] ) ) );
|
||||
- Sequence< OUString > aCfgSvcs( aCurSvcs[k][ aCfgLocaleStr ] );
|
||||
-
|
||||
- // merge services list (previously configured to be listed first).
|
||||
- aCfgSvcs = lcl_MergeSeq( aCfgSvcs, aNewSvcs );
|
||||
-
|
||||
-/*
|
||||
- // there is at most one Hyphenator per language allowed
|
||||
- // to be configured, thus we only use the first one found.
|
||||
- if (k == 2 && aCfgSvcs.getLength() > 1)
|
||||
- aCfgSvcs.realloc(1);
|
||||
-*/
|
||||
- aCurSvcs[k][ aCfgLocaleStr ] = aCfgSvcs;
|
||||
- }
|
||||
-
|
||||
- //
|
||||
- // set last found services to currently available ones
|
||||
- //
|
||||
- for (i = 0; i < nAvailLocales; ++i)
|
||||
- {
|
||||
- Sequence< OUString > aSvcImplNames(
|
||||
- xLngSvcMgr->getAvailableServices( aService, pAvailLocale[i] ) );
|
||||
-
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- sal_Int32 nSvcs = aSvcImplNames.getLength();
|
||||
- const OUString *pSvcImplName = aSvcImplNames.getConstArray();
|
||||
- for (sal_Int32 j = 0; j < nSvcs; ++j)
|
||||
- {
|
||||
- OUString aImplName( pSvcImplName[j] );
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
- OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
- SvxLocaleToLanguage( pAvailLocale[i] ) ) );
|
||||
- aLastFoundSvcs[k][ aCfgLocaleStr ] = aSvcImplNames;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- //
|
||||
- // write new data back to configuration
|
||||
- //
|
||||
- for (int k = 0; k < nNumServices; ++k)
|
||||
- {
|
||||
- for (int i = 0; i < 2; ++i)
|
||||
- {
|
||||
- const sal_Char *pSubNodeName = (i == 0) ? apCurLists[k] : apLastFoundLists[k];
|
||||
- OUString aSubNodeName( ::rtl::OUString::createFromAscii(pSubNodeName) );
|
||||
-
|
||||
- list_entry_map_t &rCurMap = (i == 0) ? aCurSvcs[k] : aLastFoundSvcs[k];
|
||||
- list_entry_map_t::const_iterator aIt( rCurMap.begin() );
|
||||
- sal_Int32 nVals = static_cast< sal_Int32 >( rCurMap.size() );
|
||||
- Sequence< PropertyValue > aNewValues( nVals );
|
||||
- PropertyValue *pNewValue = aNewValues.getArray();
|
||||
- while (aIt != rCurMap.end())
|
||||
- {
|
||||
- OUString aCfgEntryName( aSubNodeName );
|
||||
- aCfgEntryName += OUString::valueOf( (sal_Unicode) '/' );
|
||||
- aCfgEntryName += (*aIt).first;
|
||||
-
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- Sequence< OUString > aSvcImplNames( (*aIt).second );
|
||||
- sal_Int32 nSvcs = aSvcImplNames.getLength();
|
||||
- const OUString *pSvcImplName = aSvcImplNames.getConstArray();
|
||||
- for (sal_Int32 j = 0; j < nSvcs; ++j)
|
||||
- {
|
||||
- OUString aImplName( pSvcImplName[j] );
|
||||
- }
|
||||
-#endif
|
||||
- pNewValue->Name = aCfgEntryName;
|
||||
- pNewValue->Value <<= (*aIt).second;
|
||||
- ++pNewValue;
|
||||
- ++aIt;
|
||||
- }
|
||||
- OSL_ENSURE( pNewValue - aNewValues.getArray() == nVals,
|
||||
- "possible mismatch of sequence size and property number" );
|
||||
-
|
||||
- {
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::UpdateAll - ReplaceSetProperties" );
|
||||
- // add new or replace existing entries.
|
||||
- sal_Bool bRes = aCfg.ReplaceSetProperties( aSubNodeName, aNewValues );
|
||||
- if (!bRes)
|
||||
- {
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- OSL_FAIL( "failed to set new configuration values" );
|
||||
-#endif
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- OSL_ENSURE( nCurrentDataFilesChangedCheckValue != -1, "SvxLinguConfigUpdate::UpdateAll DataFilesChangedCheckValue not yet calculated!" );
|
||||
- Any aAny;
|
||||
-
|
||||
- // for the time being (developer builds until OOo 3.0)
|
||||
- // we should always check for everything available
|
||||
- // otherwise we may miss a new installed extension dicitonary
|
||||
- // just because e.g. the spellchecker is not asked what
|
||||
- // languages it does support currently...
|
||||
- // Since the check is on-demand occuring and executed once it should
|
||||
- // not be too troublesome.
|
||||
- // In OOo 3.0 we will not need the respective code anymore at all.
|
||||
-// aAny <<= nCurrentDataFilesChangedCheckValue;
|
||||
- aAny <<= (sal_Int32) -1; // keep the value set to 'need to check'
|
||||
-
|
||||
- aCfg.SetProperty( A2OU( "DataFilesChangedCheckValue" ), aAny );
|
||||
-
|
||||
- //! Note 1: the new values are commited when the 'aCfg' object
|
||||
- //! gets destroyed.
|
||||
- //! Note 2: the new settings in the configuration get applied
|
||||
- //! because the 'LngSvcMgr' (in linguistic/source/lngsvcmgr.hxx)
|
||||
- //! listens to the configuration for changes of the relevant
|
||||
- //! properties and then applies the new settings.
|
||||
-
|
||||
- // nothing needs to be done anymore
|
||||
- nNeedUpdating = 0;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-
|
||||
-sal_Int32 SvxLinguConfigUpdate::CalcDataFilesChangedCheckValue()
|
||||
-{
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::CalcDataFilesChangedCheckValue" );
|
||||
-
|
||||
- sal_Int32 nHashVal = 0;
|
||||
- // nothing to be checked anymore since those old directory paths are gone by now
|
||||
- return nHashVal;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-sal_Bool SvxLinguConfigUpdate::IsNeedUpdateAll( sal_Bool bForceCheck )
|
||||
-{
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::IsNeedUpdateAll" );
|
||||
- if (nNeedUpdating == -1 || bForceCheck ) // need to check if updating is necessary
|
||||
- {
|
||||
- // calculate hash value for current data files
|
||||
- nCurrentDataFilesChangedCheckValue = CalcDataFilesChangedCheckValue();
|
||||
-
|
||||
- // compare hash value and check value to see if anything has changed
|
||||
- // and thus the configuration needs to be updated
|
||||
- SvtLinguOptions aLinguOpt;
|
||||
- SvtLinguConfig aCfg;
|
||||
- aCfg.GetOptions( aLinguOpt );
|
||||
- nNeedUpdating = (nCurrentDataFilesChangedCheckValue == aLinguOpt.nDataFilesChangedCheckValue) ? 0 : 1;
|
||||
- }
|
||||
- OSL_ENSURE( nNeedUpdating != -1,
|
||||
- "need for linguistic configuration update should have been already checked." );
|
||||
-
|
||||
- return nNeedUpdating == 1;
|
||||
-}
|
||||
-
|
||||
|
||||
//! Dummy implementation in order to avoid loading of lingu DLL
|
||||
//! when only the XSupportedLocales interface is used.
|
||||
@@ -520,10 +158,6 @@
|
||||
|
||||
void ThesDummy_Impl::GetThes_Impl()
|
||||
{
|
||||
- // update configuration before accessing the service
|
||||
- if (SvxLinguConfigUpdate::IsNeedUpdateAll())
|
||||
- SvxLinguConfigUpdate::UpdateAll();
|
||||
-
|
||||
if (!xThes.is())
|
||||
{
|
||||
uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
|
||||
@@ -543,8 +177,7 @@
|
||||
ThesDummy_Impl::getLocales()
|
||||
throw(uno::RuntimeException)
|
||||
{
|
||||
- if (!SvxLinguConfigUpdate::IsNeedUpdateAll()) // configuration already update and thus lingu DLL's already loaded ?
|
||||
- GetThes_Impl();
|
||||
+ GetThes_Impl();
|
||||
if (xThes.is())
|
||||
return xThes->getLocales();
|
||||
else if (!pLocaleSeq) // if not already loaded save startup time by avoiding loading them now
|
||||
@@ -557,8 +190,7 @@
|
||||
ThesDummy_Impl::hasLocale( const lang::Locale& rLocale )
|
||||
throw(uno::RuntimeException)
|
||||
{
|
||||
- if (!SvxLinguConfigUpdate::IsNeedUpdateAll()) // configuration already update and thus lingu DLL's already loaded ?
|
||||
- GetThes_Impl();
|
||||
+ GetThes_Impl();
|
||||
if (xThes.is())
|
||||
return xThes->hasLocale( rLocale );
|
||||
else if (!pLocaleSeq) // if not already loaded save startup time by avoiding loading them now
|
||||
@@ -632,10 +264,6 @@
|
||||
|
||||
void SpellDummy_Impl::GetSpell_Impl()
|
||||
{
|
||||
- // update configuration before accessing the service
|
||||
- if (SvxLinguConfigUpdate::IsNeedUpdateAll())
|
||||
- SvxLinguConfigUpdate::UpdateAll();
|
||||
-
|
||||
if (!xSpell.is())
|
||||
{
|
||||
uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
|
||||
@@ -748,10 +376,6 @@
|
||||
|
||||
void HyphDummy_Impl::GetHyph_Impl()
|
||||
{
|
||||
- // update configuration before accessing the service
|
||||
- if (SvxLinguConfigUpdate::IsNeedUpdateAll())
|
||||
- SvxLinguConfigUpdate::UpdateAll();
|
||||
-
|
||||
if (!xHyph.is())
|
||||
{
|
||||
uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
|
||||
diff -ru libreoffice-3.5.5.3.orig/linguistic/Library_lng.mk libreoffice-3.5.5.3/linguistic/Library_lng.mk
|
||||
--- libreoffice-3.5.5.3.orig/linguistic/Library_lng.mk 2012-07-13 12:23:35.568866084 +0100
|
||||
+++ libreoffice-3.5.5.3/linguistic/Library_lng.mk 2012-07-16 08:49:27.810226966 +0100
|
||||
@@ -56,6 +56,7 @@
|
||||
tl \
|
||||
ucbhelper \
|
||||
utl \
|
||||
+ vcl \
|
||||
xo \
|
||||
$(gb_STDLIBS) \
|
||||
))
|
||||
diff -ru libreoffice-3.5.5.3.orig/linguistic/prj/build.lst libreoffice-3.5.5.3/linguistic/prj/build.lst
|
||||
--- libreoffice-3.5.5.3.orig/linguistic/prj/build.lst 2012-07-13 12:23:35.611866523 +0100
|
||||
+++ libreoffice-3.5.5.3/linguistic/prj/build.lst 2012-07-16 08:49:27.820227082 +0100
|
||||
@@ -1,2 +1,2 @@
|
||||
-lg linguistic : svl xmloff ucbhelper comphelper ICU:icu LIBXSLT:libxslt NULL
|
||||
+lg linguistic : svl vcl xmloff ucbhelper comphelper ICU:icu LIBXSLT:libxslt NULL
|
||||
lg linguistic\prj nmake - all lg_prj NULL
|
||||
diff -ru libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.cxx libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.cxx
|
||||
--- libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.cxx 2012-07-13 12:23:35.585866257 +0100
|
||||
+++ libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.cxx 2012-07-16 08:49:27.829227184 +0100
|
||||
@@ -27,6 +27,7 @@
|
||||
************************************************************************/
|
||||
|
||||
|
||||
+#include <com/sun/star/deployment/ExtensionManager.hpp>
|
||||
#include <com/sun/star/registry/XRegistryKey.hpp>
|
||||
#include <com/sun/star/container/XContentEnumerationAccess.hpp>
|
||||
#include <com/sun/star/container/XEnumeration.hpp>
|
||||
@@ -270,8 +271,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
-
|
||||
-//IMPL_LINK( LngSvcMgrListenerHelper, TimeOut, Timer*, pTimer )
|
||||
long LngSvcMgrListenerHelper::Timeout()
|
||||
{
|
||||
osl::MutexGuard aGuard( GetLinguMutex() );
|
||||
@@ -483,11 +482,98 @@
|
||||
pNames[2] = "ServiceManager/HyphenatorList";
|
||||
pNames[3] = "ServiceManager/ThesaurusList";
|
||||
EnableNotification( aNames );
|
||||
+
|
||||
+ UpdateAll();
|
||||
+
|
||||
+ aUpdateTimer.SetTimeout(500);
|
||||
+ aUpdateTimer.SetTimeoutHdl(LINK(this, LngSvcMgr, updateAndBroadcast));
|
||||
+
|
||||
+ // request to be notified if an extension has been added/removed
|
||||
+ uno::Reference<uno::XComponentContext> xContext(comphelper::getProcessComponentContext());
|
||||
+
|
||||
+ uno::Reference<deployment::XExtensionManager> xExtensionManager(
|
||||
+ deployment::ExtensionManager::get(xContext));
|
||||
+ if (xExtensionManager.is())
|
||||
+ {
|
||||
+ xMB = uno::Reference<util::XModifyBroadcaster>(xExtensionManager, uno::UNO_QUERY_THROW);
|
||||
+
|
||||
+ uno::Reference<util::XModifyListener> xListener(this);
|
||||
+ xMB->addModifyListener( xListener );
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+// ::com::sun::star::util::XModifyListener
|
||||
+void LngSvcMgr::modified(const lang::EventObject&)
|
||||
+ throw(uno::RuntimeException)
|
||||
+{
|
||||
+ osl::MutexGuard aGuard(GetLinguMutex());
|
||||
+ //assume that if an extension has been added/removed that
|
||||
+ //it might be a dictionary extension, so drop our cache
|
||||
+
|
||||
+ delete pAvailSpellSvcs;
|
||||
+ pAvailSpellSvcs = NULL;
|
||||
+ delete pAvailGrammarSvcs;
|
||||
+ pAvailGrammarSvcs = NULL;
|
||||
+ delete pAvailHyphSvcs;
|
||||
+ pAvailHyphSvcs = NULL;
|
||||
+ delete pAvailThesSvcs;
|
||||
+ pAvailThesSvcs = NULL;
|
||||
+
|
||||
+ //schedule in an update to execute in the main thread
|
||||
+ aUpdateTimer.Start();
|
||||
+}
|
||||
+
|
||||
+//run update, and inform everyone that dictionaries (may) have changed, this
|
||||
+//needs to be run in the main thread because
|
||||
+//utl::ConfigChangeListener_Impl::changesOccurred grabs the SolarMutex and we
|
||||
+//get notified that an extension was added from an extension manager thread
|
||||
+IMPL_LINK_NOARG(LngSvcMgr, updateAndBroadcast)
|
||||
+{
|
||||
+ osl::MutexGuard aGuard( GetLinguMutex() );
|
||||
+
|
||||
+ UpdateAll();
|
||||
+
|
||||
+ if (pListenerHelper)
|
||||
+ {
|
||||
+ pListenerHelper->AddLngSvcEvt(
|
||||
+ linguistic2::LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN |
|
||||
+ linguistic2::LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN |
|
||||
+ linguistic2::LinguServiceEventFlags::PROOFREAD_AGAIN |
|
||||
+ linguistic2::LinguServiceEventFlags::HYPHENATE_AGAIN );
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
+void LngSvcMgr::stopListening()
|
||||
+{
|
||||
+ osl::MutexGuard aGuard(GetLinguMutex());
|
||||
+
|
||||
+ if (xMB.is())
|
||||
+ {
|
||||
+ try
|
||||
+ {
|
||||
+ uno::Reference<util::XModifyListener> xListener(this);
|
||||
+ xMB->removeModifyListener(xListener);
|
||||
+ }
|
||||
+ catch (const uno::Exception&)
|
||||
+ {
|
||||
+ }
|
||||
+
|
||||
+ xMB.clear();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void LngSvcMgr::disposing(const lang::EventObject&)
|
||||
+ throw (uno::RuntimeException)
|
||||
+{
|
||||
+ stopListening();
|
||||
+}
|
||||
|
||||
LngSvcMgr::~LngSvcMgr()
|
||||
{
|
||||
+ stopListening();
|
||||
+
|
||||
// memory for pSpellDsp, pHyphDsp, pThesDsp, pListenerHelper
|
||||
// will be freed in the destructor of the respective Reference's
|
||||
// xSpellDsp, xGrammarDsp, xHyphDsp, xThesDsp
|
||||
@@ -498,6 +584,252 @@
|
||||
delete pAvailThesSvcs;
|
||||
}
|
||||
|
||||
+namespace
|
||||
+{
|
||||
+ using lang::Locale;
|
||||
+ using uno::Any;
|
||||
+ using uno::Sequence;
|
||||
+
|
||||
+ sal_Bool lcl_FindEntry( const OUString &rEntry, const Sequence< OUString > &rCfgSvcs )
|
||||
+ {
|
||||
+ sal_Int32 nRes = -1;
|
||||
+ sal_Int32 nEntries = rCfgSvcs.getLength();
|
||||
+ const OUString *pEntry = rCfgSvcs.getConstArray();
|
||||
+ for (sal_Int32 i = 0; i < nEntries && nRes == -1; ++i)
|
||||
+ {
|
||||
+ if (rEntry == pEntry[i])
|
||||
+ nRes = i;
|
||||
+ }
|
||||
+ return nRes != -1;
|
||||
+ }
|
||||
+
|
||||
+ Sequence< OUString > lcl_GetLastFoundSvcs(
|
||||
+ SvtLinguConfig &rCfg,
|
||||
+ const OUString &rLastFoundList ,
|
||||
+ const Locale &rAvailLocale )
|
||||
+ {
|
||||
+ Sequence< OUString > aRes;
|
||||
+
|
||||
+ OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
+ LocaleToLanguage( rAvailLocale ) ) );
|
||||
+
|
||||
+ Sequence< OUString > aNodeNames( rCfg.GetNodeNames(rLastFoundList) );
|
||||
+ sal_Bool bFound = lcl_FindEntry( aCfgLocaleStr, aNodeNames);
|
||||
+
|
||||
+ if (bFound)
|
||||
+ {
|
||||
+ Sequence< OUString > aNames(1);
|
||||
+ OUString &rNodeName = aNames.getArray()[0];
|
||||
+ rNodeName = rLastFoundList;
|
||||
+ rNodeName += OUString::valueOf( (sal_Unicode)'/' );
|
||||
+ rNodeName += aCfgLocaleStr;
|
||||
+ Sequence< Any > aValues( rCfg.GetProperties( aNames ) );
|
||||
+ if (aValues.getLength())
|
||||
+ {
|
||||
+ OSL_ENSURE( aValues.getLength() == 1, "unexpected length of sequence" );
|
||||
+ Sequence< OUString > aSvcImplNames;
|
||||
+ if (aValues.getConstArray()[0] >>= aSvcImplNames)
|
||||
+ aRes = aSvcImplNames;
|
||||
+ else
|
||||
+ {
|
||||
+ OSL_FAIL( "type mismatch" );
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return aRes;
|
||||
+ }
|
||||
+
|
||||
+ Sequence< OUString > lcl_RemoveMissingEntries(
|
||||
+ const Sequence< OUString > &rCfgSvcs,
|
||||
+ const Sequence< OUString > &rAvailSvcs )
|
||||
+ {
|
||||
+ Sequence< OUString > aRes( rCfgSvcs.getLength() );
|
||||
+ OUString *pRes = aRes.getArray();
|
||||
+ sal_Int32 nCnt = 0;
|
||||
+
|
||||
+ sal_Int32 nEntries = rCfgSvcs.getLength();
|
||||
+ const OUString *pEntry = rCfgSvcs.getConstArray();
|
||||
+ for (sal_Int32 i = 0; i < nEntries; ++i)
|
||||
+ {
|
||||
+ if (!pEntry[i].isEmpty() && lcl_FindEntry( pEntry[i], rAvailSvcs ))
|
||||
+ pRes[ nCnt++ ] = pEntry[i];
|
||||
+ }
|
||||
+
|
||||
+ aRes.realloc( nCnt );
|
||||
+ return aRes;
|
||||
+ }
|
||||
+
|
||||
+ Sequence< OUString > lcl_GetNewEntries(
|
||||
+ const Sequence< OUString > &rLastFoundSvcs,
|
||||
+ const Sequence< OUString > &rAvailSvcs )
|
||||
+ {
|
||||
+ sal_Int32 nLen = rAvailSvcs.getLength();
|
||||
+ Sequence< OUString > aRes( nLen );
|
||||
+ OUString *pRes = aRes.getArray();
|
||||
+ sal_Int32 nCnt = 0;
|
||||
+
|
||||
+ const OUString *pEntry = rAvailSvcs.getConstArray();
|
||||
+ for (sal_Int32 i = 0; i < nLen; ++i)
|
||||
+ {
|
||||
+ if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], rLastFoundSvcs ))
|
||||
+ pRes[ nCnt++ ] = pEntry[i];
|
||||
+ }
|
||||
+
|
||||
+ aRes.realloc( nCnt );
|
||||
+ return aRes;
|
||||
+ }
|
||||
+
|
||||
+ Sequence< OUString > lcl_MergeSeq(
|
||||
+ const Sequence< OUString > &rCfgSvcs,
|
||||
+ const Sequence< OUString > &rNewSvcs )
|
||||
+ {
|
||||
+ Sequence< OUString > aRes( rCfgSvcs.getLength() + rNewSvcs.getLength() );
|
||||
+ OUString *pRes = aRes.getArray();
|
||||
+ sal_Int32 nCnt = 0;
|
||||
+
|
||||
+ for (sal_Int32 k = 0; k < 2; ++k)
|
||||
+ {
|
||||
+ // add previously configuerd service first and append
|
||||
+ // new found services at the end
|
||||
+ const Sequence< OUString > &rSeq = k == 0 ? rCfgSvcs : rNewSvcs;
|
||||
+
|
||||
+ sal_Int32 nLen = rSeq.getLength();
|
||||
+ const OUString *pEntry = rSeq.getConstArray();
|
||||
+ for (sal_Int32 i = 0; i < nLen; ++i)
|
||||
+ {
|
||||
+ if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], aRes ))
|
||||
+ pRes[ nCnt++ ] = pEntry[i];
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ aRes.realloc( nCnt );
|
||||
+ return aRes;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void LngSvcMgr::UpdateAll()
|
||||
+{
|
||||
+ using beans::PropertyValue;
|
||||
+ using lang::Locale;
|
||||
+ using uno::Sequence;
|
||||
+
|
||||
+ typedef OUString OUstring_t;
|
||||
+ typedef Sequence< OUString > Sequence_OUString_t;
|
||||
+ typedef std::map< OUstring_t, Sequence_OUString_t > list_entry_map_t;
|
||||
+
|
||||
+ SvtLinguConfig aCfg;
|
||||
+
|
||||
+ const int nNumServices = 4;
|
||||
+ const sal_Char * apServices[nNumServices] = { SN_SPELLCHECKER, SN_GRAMMARCHECKER, SN_HYPHENATOR, SN_THESAURUS };
|
||||
+ const sal_Char * apCurLists[nNumServices] = { "ServiceManager/SpellCheckerList", "ServiceManager/GrammarCheckerList", "ServiceManager/HyphenatorList", "ServiceManager/ThesaurusList" };
|
||||
+ const sal_Char * apLastFoundLists[nNumServices] = { "ServiceManager/LastFoundSpellCheckers", "ServiceManager/LastFoundGrammarCheckers", "ServiceManager/LastFoundHyphenators", "ServiceManager/LastFoundThesauri" };
|
||||
+
|
||||
+ // usage of indices as above: 0 = spell checker, 1 = grammar checker, 2 = hyphenator, 3 = thesaurus
|
||||
+ std::vector< list_entry_map_t > aLastFoundSvcs(nNumServices);
|
||||
+ std::vector< list_entry_map_t > aCurSvcs(nNumServices);
|
||||
+
|
||||
+ for (int k = 0; k < nNumServices; ++k)
|
||||
+ {
|
||||
+ OUString aService( ::rtl::OUString::createFromAscii( apServices[k] ) );
|
||||
+ OUString aActiveList( ::rtl::OUString::createFromAscii( apCurLists[k] ) );
|
||||
+ OUString aLastFoundList( ::rtl::OUString::createFromAscii( apLastFoundLists[k] ) );
|
||||
+ sal_Int32 i;
|
||||
+
|
||||
+ //
|
||||
+ // remove configured but not available language/services entries
|
||||
+ //
|
||||
+ Sequence< OUString > aNodeNames( aCfg.GetNodeNames( aActiveList ) ); // list of configured locales
|
||||
+ sal_Int32 nNodeNames = aNodeNames.getLength();
|
||||
+ const OUString *pNodeName = aNodeNames.getConstArray();
|
||||
+ for (i = 0; i < nNodeNames; ++i)
|
||||
+ {
|
||||
+ Locale aLocale( CreateLocale( MsLangId::convertIsoStringToLanguage(pNodeName[i]) ) );
|
||||
+ Sequence< OUString > aCfgSvcs( getConfiguredServices( aService, aLocale ));
|
||||
+ Sequence< OUString > aAvailSvcs( getAvailableServices( aService, aLocale ));
|
||||
+
|
||||
+ aCfgSvcs = lcl_RemoveMissingEntries( aCfgSvcs, aAvailSvcs );
|
||||
+
|
||||
+ aCurSvcs[k][ pNodeName[i] ] = aCfgSvcs;
|
||||
+ }
|
||||
+
|
||||
+ //
|
||||
+ // add new available language/service entries
|
||||
+ // and
|
||||
+ // set last found services to currently available ones
|
||||
+ //
|
||||
+ Sequence< Locale > aAvailLocales( getAvailableLocales(aService) );
|
||||
+ sal_Int32 nAvailLocales = aAvailLocales.getLength();
|
||||
+ const Locale *pAvailLocale = aAvailLocales.getConstArray();
|
||||
+ for (i = 0; i < nAvailLocales; ++i)
|
||||
+ {
|
||||
+ OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
+ LocaleToLanguage( pAvailLocale[i] ) ) );
|
||||
+
|
||||
+ Sequence< OUString > aAvailSvcs( getAvailableServices( aService, pAvailLocale[i] ));
|
||||
+
|
||||
+ aLastFoundSvcs[k][ aCfgLocaleStr ] = aAvailSvcs;
|
||||
+
|
||||
+ Sequence< OUString > aLastSvcs(
|
||||
+ lcl_GetLastFoundSvcs( aCfg, aLastFoundList , pAvailLocale[i] ));
|
||||
+ Sequence< OUString > aNewSvcs =
|
||||
+ lcl_GetNewEntries( aLastSvcs, aAvailSvcs );
|
||||
+
|
||||
+ Sequence< OUString > aCfgSvcs( aCurSvcs[k][ aCfgLocaleStr ] );
|
||||
+
|
||||
+ // merge services list (previously configured to be listed first).
|
||||
+ aCfgSvcs = lcl_MergeSeq( aCfgSvcs, aNewSvcs );
|
||||
+
|
||||
+ aCurSvcs[k][ aCfgLocaleStr ] = aCfgSvcs;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ //
|
||||
+ // write new data back to configuration
|
||||
+ //
|
||||
+ for (int k = 0; k < nNumServices; ++k)
|
||||
+ {
|
||||
+ for (int i = 0; i < 2; ++i)
|
||||
+ {
|
||||
+ const sal_Char *pSubNodeName = (i == 0) ? apCurLists[k] : apLastFoundLists[k];
|
||||
+ OUString aSubNodeName( ::rtl::OUString::createFromAscii(pSubNodeName) );
|
||||
+
|
||||
+ list_entry_map_t &rCurMap = (i == 0) ? aCurSvcs[k] : aLastFoundSvcs[k];
|
||||
+ list_entry_map_t::const_iterator aIt( rCurMap.begin() );
|
||||
+ sal_Int32 nVals = static_cast< sal_Int32 >( rCurMap.size() );
|
||||
+ Sequence< PropertyValue > aNewValues( nVals );
|
||||
+ PropertyValue *pNewValue = aNewValues.getArray();
|
||||
+ while (aIt != rCurMap.end())
|
||||
+ {
|
||||
+ OUString aCfgEntryName( aSubNodeName );
|
||||
+ aCfgEntryName += OUString::valueOf( (sal_Unicode) '/' );
|
||||
+ aCfgEntryName += (*aIt).first;
|
||||
+
|
||||
+ pNewValue->Name = aCfgEntryName;
|
||||
+ pNewValue->Value <<= (*aIt).second;
|
||||
+ ++pNewValue;
|
||||
+ ++aIt;
|
||||
+ }
|
||||
+ OSL_ENSURE( pNewValue - aNewValues.getArray() == nVals,
|
||||
+ "possible mismatch of sequence size and property number" );
|
||||
+
|
||||
+ {
|
||||
+ // add new or replace existing entries.
|
||||
+ sal_Bool bRes = aCfg.ReplaceSetProperties( aSubNodeName, aNewValues );
|
||||
+ if (!bRes)
|
||||
+ {
|
||||
+#if OSL_DEBUG_LEVEL > 1
|
||||
+ OSL_FAIL( "failed to set new configuration values" );
|
||||
+#endif
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ //The new settings in the configuration get applied ! because we are
|
||||
+ //listening to the configuration for changes of the relevant ! properties
|
||||
+ //and Notify applies the new settings.
|
||||
+}
|
||||
|
||||
void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames )
|
||||
{
|
||||
@@ -1263,32 +1595,21 @@
|
||||
|
||||
if (0 == rServiceName.compareToAscii( SN_SPELLCHECKER ))
|
||||
{
|
||||
- // don't used cached data here (force re-evaluation in order to have downloaded dictionaries
|
||||
- // already found without the need to restart the office
|
||||
- delete pAvailSpellSvcs; pAvailSpellSvcs = 0;
|
||||
GetAvailableSpellSvcs_Impl();
|
||||
pInfoArray = pAvailSpellSvcs;
|
||||
}
|
||||
else if (0 == rServiceName.compareToAscii( SN_GRAMMARCHECKER ))
|
||||
{
|
||||
-// disable force re-loading of the cache - re-start needed for new grammer checkers: fdo#35270
|
||||
-// delete pAvailGrammarSvcs; pAvailGrammarSvcs = 0;
|
||||
GetAvailableGrammarSvcs_Impl();
|
||||
pInfoArray = pAvailGrammarSvcs;
|
||||
}
|
||||
else if (0 == rServiceName.compareToAscii( SN_HYPHENATOR ))
|
||||
{
|
||||
- // don't used cached data here (force re-evaluation in order to have downloaded dictionaries
|
||||
- // already found without the need to restart the office
|
||||
- delete pAvailHyphSvcs; pAvailHyphSvcs = 0;
|
||||
GetAvailableHyphSvcs_Impl();
|
||||
pInfoArray = pAvailHyphSvcs;
|
||||
}
|
||||
else if (0 == rServiceName.compareToAscii( SN_THESAURUS ))
|
||||
{
|
||||
- // don't used cached data here (force re-evaluation in order to have downloaded dictionaries
|
||||
- // already found without the need to restart the office
|
||||
- delete pAvailThesSvcs; pAvailThesSvcs = 0;
|
||||
GetAvailableThesSvcs_Impl();
|
||||
pInfoArray = pAvailThesSvcs;
|
||||
}
|
||||
diff -ru libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.hxx libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.hxx
|
||||
--- libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.hxx 2012-07-13 12:23:35.598866391 +0100
|
||||
+++ libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.hxx 2012-07-16 08:49:27.833227231 +0100
|
||||
@@ -30,7 +30,7 @@
|
||||
#define _LINGUISTIC_LNGSVCMGR_HXX_
|
||||
|
||||
#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
|
||||
-#include <cppuhelper/implbase4.hxx> // helper for implementations
|
||||
+#include <cppuhelper/implbase5.hxx> // helper for implementations
|
||||
#include <cppuhelper/interfacecontainer.h> //OMultiTypeInterfaceContainerHelper
|
||||
|
||||
|
||||
@@ -39,8 +39,10 @@
|
||||
#include <com/sun/star/lang/XComponent.hpp>
|
||||
#include <com/sun/star/linguistic2/XLinguServiceManager.hpp>
|
||||
#include <com/sun/star/linguistic2/XAvailableLocales.hpp>
|
||||
+#include <com/sun/star/util/XModifyBroadcaster.hpp>
|
||||
+#include <com/sun/star/util/XModifyListener.hpp>
|
||||
#include <unotools/configitem.hxx>
|
||||
-
|
||||
+#include <vcl/timer.hxx>
|
||||
#include <boost/ptr_container/ptr_vector.hpp>
|
||||
|
||||
#include "linguistic/misc.hxx"
|
||||
@@ -65,12 +67,13 @@
|
||||
|
||||
|
||||
class LngSvcMgr :
|
||||
- public cppu::WeakImplHelper4
|
||||
+ public cppu::WeakImplHelper5
|
||||
<
|
||||
com::sun::star::linguistic2::XLinguServiceManager,
|
||||
com::sun::star::linguistic2::XAvailableLocales,
|
||||
com::sun::star::lang::XComponent,
|
||||
- com::sun::star::lang::XServiceInfo
|
||||
+ com::sun::star::lang::XServiceInfo,
|
||||
+ com::sun::star::util::XModifyListener
|
||||
>,
|
||||
private utl::ConfigItem
|
||||
{
|
||||
@@ -90,6 +93,12 @@
|
||||
com::sun::star::uno::Reference<
|
||||
::com::sun::star::lang::XEventListener > xListenerHelper;
|
||||
|
||||
+ com::sun::star::uno::Reference<
|
||||
+ ::com::sun::star::util::XModifyBroadcaster> xMB;
|
||||
+
|
||||
+ Timer aUpdateTimer;
|
||||
+
|
||||
+
|
||||
com::sun::star::uno::Sequence<
|
||||
com::sun::star::lang::Locale > aAvailSpellLocales;
|
||||
com::sun::star::uno::Sequence<
|
||||
@@ -140,6 +149,10 @@
|
||||
virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString > &rPropertyNames );
|
||||
virtual void Commit();
|
||||
|
||||
+ void UpdateAll();
|
||||
+ void stopListening();
|
||||
+ DECL_LINK( updateAndBroadcast, void* );
|
||||
+
|
||||
public:
|
||||
LngSvcMgr();
|
||||
virtual ~LngSvcMgr();
|
||||
@@ -167,6 +180,11 @@
|
||||
virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
|
||||
+ // XEventListener
|
||||
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& rSource ) throw(::com::sun::star::uno::RuntimeException);
|
||||
+
|
||||
+ // XModifyListener
|
||||
+ virtual void SAL_CALL modified( const ::com::sun::star::lang::EventObject& rEvent ) throw(::com::sun::star::uno::RuntimeException);
|
||||
|
||||
static inline ::rtl::OUString getImplementationName_Static();
|
||||
static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static() throw();
|
|
@ -0,0 +1,37 @@
|
|||
From 4fc8af89257436b9cad70de574a166aa11ec42f1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Mon, 9 Jul 2012 12:51:16 +0100
|
||||
Subject: [PATCH] Resolves: rhbz#838368 --view ignored while -view accepted
|
||||
|
||||
and our ooviewdoc script uses --view
|
||||
|
||||
Change-Id: Ice708f1c72c8d29d411ba21e93cb19876af13881
|
||||
---
|
||||
desktop/source/app/cmdlineargs.cxx | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
|
||||
index af7ee26..c67db8c 100644
|
||||
--- a/desktop/source/app/cmdlineargs.cxx
|
||||
+++ b/desktop/source/app/cmdlineargs.cxx
|
||||
@@ -217,7 +217,7 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
|
||||
bStartEvent = false;
|
||||
bDisplaySpec = false;
|
||||
}
|
||||
- else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-view" )))
|
||||
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "view" )))
|
||||
{
|
||||
// open in viewmode
|
||||
bOpenEvent = false;
|
||||
@@ -229,7 +229,7 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
|
||||
bStartEvent = false;
|
||||
bDisplaySpec = false;
|
||||
}
|
||||
- else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-show" )))
|
||||
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "show" )))
|
||||
{
|
||||
// open in viewmode
|
||||
bOpenEvent = false;
|
||||
--
|
||||
1.7.10.4
|
||||
|
25
0001-disable-failing-check.patch
Normal file
25
0001-disable-failing-check.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
From b2d583e88ac53aafe96e71eb9b1068f6014100b7 Mon Sep 17 00:00:00 2001
|
||||
From: David Tardon <dtardon@redhat.com>
|
||||
Date: Thu, 21 Jun 2012 12:14:39 +0200
|
||||
Subject: [PATCH] disable failing check
|
||||
|
||||
Change-Id: I746cd1178c40c78127e04dbc1876de052794bd57
|
||||
---
|
||||
sdext/Module_sdext.mk | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/sdext/Module_sdext.mk b/sdext/Module_sdext.mk
|
||||
index 6280984..ffafa6b 100644
|
||||
--- a/sdext/Module_sdext.mk
|
||||
+++ b/sdext/Module_sdext.mk
|
||||
@@ -50,7 +50,6 @@ $(eval $(call gb_Module_add_targets,sdext,\
|
||||
))
|
||||
|
||||
$(eval $(call gb_Module_add_check_targets,sdext,\
|
||||
- CppunitTest_pdfimport \
|
||||
))
|
||||
endif
|
||||
|
||||
--
|
||||
1.7.10.2
|
||||
|
BIN
185d60944ea767075d27247c3162b3bc-unowinreg.dll
Normal file
BIN
185d60944ea767075d27247c3162b3bc-unowinreg.dll
Normal file
Binary file not shown.
11
fix-build.diff
Normal file
11
fix-build.diff
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- configure.in.tv 2012-08-02 10:07:41.303904565 +0000
|
||||
+++ configure.in 2012-08-02 10:08:26.854002828 +0000
|
||||
@@ -11707,7 +11707,7 @@
|
||||
echo "setting up the build environment variables..."
|
||||
|
||||
if test -z "$COMPATH"; then
|
||||
- AC_MSG_ERROR([No compiler found.])
|
||||
+ COMPATH=/usr/bin
|
||||
fi
|
||||
AC_SUBST(COMPATH)
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
--- ./xmlhelp/source/cxxhelp/provider/databases.cxx.orig3 2011-12-05 15:11:11.000000000 +0000
|
||||
+++ ./xmlhelp/source/cxxhelp/provider/databases.cxx 2011-12-05 16:15:02.000000000 +0000
|
||||
@@ -303,17 +303,34 @@ rtl::OString Databases::getImagesZipFile
|
||||
bool bFound = false;
|
||||
if ( aSymbolsStyleName.getLength() != 0 )
|
||||
{
|
||||
- rtl::OUString aZipName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "images_" ));
|
||||
- aZipName += aSymbolsStyleName;
|
||||
- aZipName += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ".zip" ));
|
||||
-
|
||||
+ rtl::OUString aZipName;
|
||||
+ if (aSymbolsStyleName.equals( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("default")) )) {
|
||||
+ aZipName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "images.zip" ));
|
||||
+ } else {
|
||||
+ aZipName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "images_" ));
|
||||
+ aZipName += aSymbolsStyleName;
|
||||
+ aZipName += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ".zip" ));
|
||||
+ }
|
||||
bFound = impl_getZipFile( m_aImagesZipPaths, aZipName, aImageZip );
|
||||
}
|
||||
|
||||
+ // Fallbacks in case the configured style fle was not found
|
||||
+ if ( ! bFound )
|
||||
+ bFound = impl_getZipFile( m_aImagesZipPaths, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "images_oxygen.zip" )), aImageZip );
|
||||
+
|
||||
+ if ( ! bFound )
|
||||
+ bFound = impl_getZipFile( m_aImagesZipPaths, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "images_crystal.zip" )), aImageZip );
|
||||
+
|
||||
if ( ! bFound )
|
||||
bFound = impl_getZipFile( m_aImagesZipPaths, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "images.zip" )), aImageZip );
|
||||
|
||||
if ( ! bFound )
|
||||
+ bFound = impl_getZipFile( m_aImagesZipPaths, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "images_tango.zip" )), aImageZip );
|
||||
+
|
||||
+ if ( ! bFound )
|
||||
+ bFound = impl_getZipFile( m_aImagesZipPaths, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "images_hicontrast.zip" )), aImageZip );
|
||||
+
|
||||
+ if ( ! bFound )
|
||||
aImageZip = rtl::OUString();
|
||||
|
||||
m_aImagesZipFileURL = rtl::OUStringToOString(
|
11
libreoffice-3.6.1.2-boost.patch
Normal file
11
libreoffice-3.6.1.2-boost.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- libreoffice-3.6.1/tail_build/Makefile.bero 2012-09-11 14:39:15.249292107 +0200
|
||||
+++ libreoffice-3.6.1/tail_build/Makefile 2012-09-11 14:39:27.238357865 +0200
|
||||
@@ -33,6 +33,8 @@ endif
|
||||
|
||||
include $(SOLARENV)/gbuild/gbuild.mk
|
||||
|
||||
+gb_LinkTarget_LDFLAGS += -lboost_system
|
||||
+
|
||||
$(eval $(call gb_Module_make_global_targets,$(SRCDIR)/Module_tail_build.mk))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
855
libreoffice.spec
855
libreoffice.spec
File diff suppressed because it is too large
Load diff
15
openoffice.org-2.0.2.rh188467.printingdefaults.patch
Normal file
15
openoffice.org-2.0.2.rh188467.printingdefaults.patch
Normal file
|
@ -0,0 +1,15 @@
|
|||
Index: configuration/ppds/SGENPRT.PS
|
||||
===================================================================
|
||||
RCS file: /cvs/external/psprint_config/configuration/ppds/SGENPRT.PS,v
|
||||
retrieving revision 1.3
|
||||
diff -u -p -u -r1.3 SGENPRT.PS
|
||||
--- openoffice.org.orig/psprint_config/configuration/ppds/SGENPRT.PS 26 Nov 2004 16:10:35 -0000 1.3
|
||||
+++ openoffice.org/psprint_config/configuration/ppds/SGENPRT.PS 30 Aug 2005 11:17:51 -0000
|
||||
@@ -58,6 +58,7 @@
|
||||
*ColorDevice: True
|
||||
*DefaultColorSpace: RGB
|
||||
*LanguageLevel: "2"
|
||||
+*TTRasterizer: Type42
|
||||
|
||||
*% --- For None Color or old PostScript(R) printers use following lines ---
|
||||
*% *ColorDevice: False
|
47
openoffice.org-2.4.0.ooo86080.unopkg.bodge.patch
Normal file
47
openoffice.org-2.4.0.ooo86080.unopkg.bodge.patch
Normal file
|
@ -0,0 +1,47 @@
|
|||
--- openoffice.org.orig/desktop/scripts/unopkg.sh 2008-01-14 15:55:26.000000000 +0000
|
||||
+++ openoffice.org/desktop/scripts/unopkg.sh 2008-02-14 10:52:10.000000000 +0000
|
||||
@@ -62,6 +62,33 @@
|
||||
;;
|
||||
esac
|
||||
|
||||
+isnotuser=0
|
||||
+for arg in $@
|
||||
+do
|
||||
+if [ "$arg" = "--shared" -o "$arg" = "--bundled" ]; then
|
||||
+ isnotuser=1
|
||||
+fi
|
||||
+done
|
||||
+if [ $isnotuser -eq 1 ]; then
|
||||
+ echo $@ | grep -q env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY
|
||||
+ if [ $? -ne 0 ]; then
|
||||
+ set -- $@ '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
|
||||
+ fi
|
||||
+ echo $@ | grep -q env:UNO_JAVA_JFW_INSTALL_DATA
|
||||
+ if [ $? -ne 0 -a -w $sd_prog/../share/config/javasettingsunopkginstall.xml ]; then
|
||||
+ set -- $@ '-env:UNO_JAVA_JFW_INSTALL_DATA=$$ORIGIN/../share/config/javasettingsunopkginstall.xml'
|
||||
+ fi
|
||||
+ echo $@ | grep -q env:UserInstallation
|
||||
+ if [ $? -ne 0 ]; then
|
||||
+ INSTDIR=`/bin/mktemp -d --tmpdir unoinstall.XXXXXX`
|
||||
+ if [ $? -ne 0 ]; then
|
||||
+ echo "Could not create tmp dir" >&2
|
||||
+ exit 1
|
||||
+ fi
|
||||
+ set -- $@ '-env:UserInstallation=file://'$INSTDIR
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
#collect all bootstrap variables specified on the command line
|
||||
#so that they can be passed as arguments to javaldx later on
|
||||
for arg in $@
|
||||
@@ -110,6 +137,8 @@
|
||||
# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS
|
||||
|
||||
# execute binary
|
||||
-exec "$sd_prog/unopkg.bin" "$@" \
|
||||
+"$sd_prog/unopkg.bin" "$@" \
|
||||
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"
|
||||
-
|
||||
+if [ -n "$INSTDIR" ]; then
|
||||
+ rm -rf $INSTDIR
|
||||
+fi
|
141
openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch
Normal file
141
openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch
Normal file
|
@ -0,0 +1,141 @@
|
|||
From 5316edea6948f3e2a77e4fc68799f67de21fada7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Mon, 5 Dec 2011 15:28:19 +0100
|
||||
Subject: [PATCH] vertical content overflowing out of cell (#i88341#)
|
||||
|
||||
---
|
||||
sc/source/ui/inc/output.hxx | 2 +
|
||||
sc/source/ui/view/output2.cxx | 66 ++++++++++++++++++++++++++--------------
|
||||
2 files changed, 45 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/sc/source/ui/inc/output.hxx b/sc/source/ui/inc/output.hxx
|
||||
index 72934cf..3a91c14 100644
|
||||
--- a/sc/source/ui/inc/output.hxx
|
||||
+++ b/sc/source/ui/inc/output.hxx
|
||||
@@ -306,6 +306,8 @@ public:
|
||||
void DrawExtraShadow(sal_Bool bLeft, sal_Bool bTop, sal_Bool bRight, sal_Bool bBottom);
|
||||
void DrawFrame();
|
||||
|
||||
+ bool UseNormalClip(SCROW nCellY, const SfxItemSet* pCondSet);
|
||||
+
|
||||
// with logic MapMode set!
|
||||
void DrawEdit(sal_Bool bPixelToLogic);
|
||||
|
||||
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
|
||||
index de1506a..5522e69 100644
|
||||
--- a/sc/source/ui/view/output2.cxx
|
||||
+++ b/sc/source/ui/view/output2.cxx
|
||||
@@ -2818,13 +2818,7 @@ void ScOutputData::DrawEditStandard(DrawEditParam& rParam)
|
||||
(ScMergeAttr*)&rParam.mpPattern->GetItem(ATTR_MERGE);
|
||||
bool bMerged = pMerge->GetColMerge() > 1 || pMerge->GetRowMerge() > 1;
|
||||
|
||||
- // Don't clip for text height when printing rows with optimal height,
|
||||
- // except when font size is from conditional formatting.
|
||||
- //! Allow clipping when vertically merged?
|
||||
- if ( eType != OUTTYPE_PRINTER ||
|
||||
- ( pDoc->GetRowFlags( rParam.mnCellY, nTab ) & CR_MANUALSIZE ) ||
|
||||
- ( rParam.mpCondSet && SFX_ITEM_SET ==
|
||||
- rParam.mpCondSet->GetItemState(ATTR_FONT_HEIGHT, true) ) )
|
||||
+ if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet))
|
||||
bClip = true;
|
||||
else
|
||||
bSimClip = true;
|
||||
@@ -2859,6 +2853,19 @@ void ScOutputData::DrawEditStandard(DrawEditParam& rParam)
|
||||
}
|
||||
|
||||
Rectangle aLogicClip;
|
||||
+ if (
|
||||
+ ((nAttrRotate == 9000) || (nAttrRotate == 27000)) &&
|
||||
+ (!(rParam.meOrient==SVX_ORIENTATION_STANDARD &&
|
||||
+ !rParam.mbAsianVertical)) &&
|
||||
+ (!(bClip || bSimClip))
|
||||
+ )
|
||||
+ {
|
||||
+ if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet))
|
||||
+ bClip = true;
|
||||
+ else
|
||||
+ bSimClip = true;
|
||||
+ }
|
||||
+
|
||||
if (bClip || bSimClip)
|
||||
{
|
||||
// Clip marks are already handled in GetOutputArea
|
||||
@@ -3191,13 +3198,8 @@ void ScOutputData::DrawEditBottomTop(DrawEditParam& rParam)
|
||||
(ScMergeAttr*)&rParam.mpPattern->GetItem(ATTR_MERGE);
|
||||
bool bMerged = pMerge->GetColMerge() > 1 || pMerge->GetRowMerge() > 1;
|
||||
|
||||
- // Don't clip for text height when printing rows with optimal height,
|
||||
- // except when font size is from conditional formatting.
|
||||
- //! Allow clipping when vertically merged?
|
||||
- if ( eType != OUTTYPE_PRINTER ||
|
||||
- ( pDoc->GetRowFlags( rParam.mnCellY, nTab ) & CR_MANUALSIZE ) ||
|
||||
- ( rParam.mpCondSet && SFX_ITEM_SET ==
|
||||
- rParam.mpCondSet->GetItemState(ATTR_FONT_HEIGHT, true) ) )
|
||||
+
|
||||
+ if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet))
|
||||
bClip = true;
|
||||
else
|
||||
bSimClip = true;
|
||||
@@ -3563,13 +3565,7 @@ void ScOutputData::DrawEditTopBottom(DrawEditParam& rParam)
|
||||
(ScMergeAttr*)&rParam.mpPattern->GetItem(ATTR_MERGE);
|
||||
bool bMerged = pMerge->GetColMerge() > 1 || pMerge->GetRowMerge() > 1;
|
||||
|
||||
- // Don't clip for text height when printing rows with optimal height,
|
||||
- // except when font size is from conditional formatting.
|
||||
- //! Allow clipping when vertically merged?
|
||||
- if ( eType != OUTTYPE_PRINTER ||
|
||||
- ( pDoc->GetRowFlags( rParam.mnCellY, nTab ) & CR_MANUALSIZE ) ||
|
||||
- ( rParam.mpCondSet && SFX_ITEM_SET ==
|
||||
- rParam.mpCondSet->GetItemState(ATTR_FONT_HEIGHT, true) ) )
|
||||
+ if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet))
|
||||
bClip = true;
|
||||
else
|
||||
bSimClip = true;
|
||||
@@ -4460,6 +4456,20 @@ void ScOutputData::DrawEditAsianVertical(DrawEditParam& rParam)
|
||||
rParam.adjustForHyperlinkInPDF(aURLStart, pDev);
|
||||
}
|
||||
|
||||
+bool ScOutputData::UseNormalClip(SCROW nCellY, const SfxItemSet* pCondSet)
|
||||
+{
|
||||
+ bool bNormalClip = false;
|
||||
+ // Don't clip for text height when printing rows with optimal height,
|
||||
+ // except when font size is from conditional formatting.
|
||||
+ //! Allow clipping when vertically merged?
|
||||
+ if ( eType != OUTTYPE_PRINTER ||
|
||||
+ ( pDoc->GetRowFlags( nCellY, nTab ) & CR_MANUALSIZE ) ||
|
||||
+ ( pCondSet && SFX_ITEM_SET ==
|
||||
+ pCondSet->GetItemState(ATTR_FONT_HEIGHT, sal_True) ) )
|
||||
+ bNormalClip = true;
|
||||
+ return bNormalClip;
|
||||
+}
|
||||
+
|
||||
void ScOutputData::DrawEdit(sal_Bool bPixelToLogic)
|
||||
{
|
||||
ScFieldEditEngine* pEngine = NULL;
|
||||
@@ -5168,11 +5178,21 @@ void ScOutputData::DrawRotated(sal_Bool bPixelToLogic)
|
||||
else
|
||||
{
|
||||
// bei gedrehtem Text ist Standard zentriert
|
||||
+ long nDiff = 0;
|
||||
if (eHorJust==SVX_HOR_JUSTIFY_RIGHT)
|
||||
- aLogicStart.X() += nAvailWidth - nEngineWidth;
|
||||
+ nDiff = nAvailWidth - nEngineWidth;
|
||||
else if (eHorJust==SVX_HOR_JUSTIFY_CENTER ||
|
||||
eHorJust==SVX_HOR_JUSTIFY_STANDARD)
|
||||
- aLogicStart.X() += (nAvailWidth - nEngineWidth) / 2;
|
||||
+ nDiff = (nAvailWidth - nEngineWidth) / 2;
|
||||
+
|
||||
+ if (nEngineWidth > nAvailWidth)
|
||||
+ {
|
||||
+ if (nAttrRotate == 9000)
|
||||
+ nDiff = 0;
|
||||
+ else if (nAttrRotate == 27000)
|
||||
+ nDiff = nAvailWidth - nEngineWidth;
|
||||
+ }
|
||||
+ aLogicStart.X() += nDiff;
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
1.7.7.3
|
||||
|
187
openoffice.org-3.1.0.ooo101274.opening-a-directory.patch
Normal file
187
openoffice.org-3.1.0.ooo101274.opening-a-directory.patch
Normal file
|
@ -0,0 +1,187 @@
|
|||
From 7e3bdb601c02e60b772e64ec9d11c56881c9a643 Mon Sep 17 00:00:00 2001
|
||||
From: David Tardon <dtardon@redhat.com>
|
||||
Date: Thu, 1 Dec 2011 14:02:07 +0100
|
||||
Subject: [PATCH 1/2] #i101274 a directory on command line is silently ignored
|
||||
|
||||
---
|
||||
.../source/misc/stillreadwriteinteraction.cxx | 1 +
|
||||
ucbhelper/source/client/content.cxx | 75 ++++++++++++++++++++
|
||||
2 files changed, 76 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/comphelper/source/misc/stillreadwriteinteraction.cxx b/comphelper/source/misc/stillreadwriteinteraction.cxx
|
||||
index 124564d..506f31c 100644
|
||||
--- a/comphelper/source/misc/stillreadwriteinteraction.cxx
|
||||
+++ b/comphelper/source/misc/stillreadwriteinteraction.cxx
|
||||
@@ -96,6 +96,7 @@ ucbhelper::InterceptedInteraction::EInterceptionState StillReadWriteInteraction:
|
||||
bAbort = (
|
||||
(exIO.Code == css::ucb::IOErrorCode_ACCESS_DENIED )
|
||||
|| (exIO.Code == css::ucb::IOErrorCode_LOCKING_VIOLATION )
|
||||
+ || (exIO.Code == css::ucb::IOErrorCode_NO_FILE )
|
||||
|| (exIO.Code == css::ucb::IOErrorCode_NOT_EXISTING )
|
||||
#ifdef MACOSX
|
||||
// this is a workaround for MAC, on this platform if the file is locked
|
||||
diff --git a/ucbhelper/source/client/content.cxx b/ucbhelper/source/client/content.cxx
|
||||
index 676acd5..4a599c9 100644
|
||||
--- a/ucbhelper/source/client/content.cxx
|
||||
+++ b/ucbhelper/source/client/content.cxx
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <cppuhelper/weak.hxx>
|
||||
|
||||
#include <cppuhelper/implbase1.hxx>
|
||||
+#include <com/sun/star/beans/PropertyValue.hpp>
|
||||
#include <com/sun/star/ucb/ContentCreationError.hpp>
|
||||
#include <com/sun/star/ucb/XCommandEnvironment.hpp>
|
||||
#include <com/sun/star/ucb/XCommandInfo.hpp>
|
||||
@@ -47,6 +48,8 @@
|
||||
#include <com/sun/star/ucb/ContentAction.hpp>
|
||||
#include <com/sun/star/ucb/OpenCommandArgument2.hpp>
|
||||
#include <com/sun/star/ucb/InsertCommandArgument.hpp>
|
||||
+#include <com/sun/star/ucb/IOErrorCode.hpp>
|
||||
+#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
|
||||
#include <com/sun/star/ucb/GlobalTransferCommandArgument.hpp>
|
||||
#include <com/sun/star/ucb/NameClash.hpp>
|
||||
#include <com/sun/star/ucb/OpenMode.hpp>
|
||||
@@ -64,6 +67,8 @@
|
||||
#include <com/sun/star/sdbc/XRow.hpp>
|
||||
#include <com/sun/star/lang/IllegalArgumentException.hpp>
|
||||
#include <com/sun/star/beans/UnknownPropertyException.hpp>
|
||||
+#include <com/sun/star/task/XInteractionRequest.hpp>
|
||||
+
|
||||
#include <ucbhelper/macros.hxx>
|
||||
#include <ucbhelper/content.hxx>
|
||||
#include <ucbhelper/contentbroker.hxx>
|
||||
@@ -71,6 +76,10 @@
|
||||
#include <ucbhelper/activedatastreamer.hxx>
|
||||
#include <ucbhelper/interactionrequest.hxx>
|
||||
#include <ucbhelper/cancelcommandexecution.hxx>
|
||||
+#include <ucbhelper/fileidentifierconverter.hxx>
|
||||
+#include <ucbhelper/simpleinteractionrequest.hxx>
|
||||
+
|
||||
+#include <memory>
|
||||
|
||||
using namespace com::sun::star::container;
|
||||
using namespace com::sun::star::beans;
|
||||
@@ -373,6 +382,54 @@ static Reference< XContent > getContent(
|
||||
return Reference< XContent >();
|
||||
}
|
||||
|
||||
+namespace
|
||||
+{
|
||||
+
|
||||
+void
|
||||
+lcl_displayMessage(
|
||||
+ const Reference<XCommandEnvironment>& rEnvironment,
|
||||
+ const rtl::OUString& rUri)
|
||||
+{
|
||||
+ // Create exception
|
||||
+ const Reference<XContentProviderManager> xCPM(
|
||||
+ getContentBroker(true)->getContentProviderManagerInterface());
|
||||
+ const PropertyValue aUriProperty(
|
||||
+ rtl::OUString::createFromAscii("Uri"),
|
||||
+ -1,
|
||||
+ makeAny(getSystemPathFromFileURL(xCPM, rUri)),
|
||||
+ PropertyState_DIRECT_VALUE)
|
||||
+ ;
|
||||
+ Sequence<Any> lArguments(1);
|
||||
+ lArguments[0] <<= aUriProperty;
|
||||
+ const InteractiveAugmentedIOException xError(
|
||||
+ rtl::OUString(),
|
||||
+ 0,
|
||||
+ InteractionClassification_ERROR,
|
||||
+ IOErrorCode_NO_FILE,
|
||||
+ lArguments)
|
||||
+ ;
|
||||
+
|
||||
+ // Create interaction request
|
||||
+ std::auto_ptr<ucbhelper::SimpleInteractionRequest> aRequest(
|
||||
+ new ucbhelper::SimpleInteractionRequest(makeAny(xError), CONTINUATION_APPROVE));
|
||||
+ {
|
||||
+ Reference<XInteractionContinuation> xContinuation(
|
||||
+ new ::ucbhelper::InteractionApprove(aRequest.get()));
|
||||
+ Sequence<Reference<XInteractionContinuation> > lContinuations(1);
|
||||
+ lContinuations[0].set(xContinuation);
|
||||
+ aRequest->setContinuations(lContinuations);
|
||||
+ }
|
||||
+
|
||||
+ Reference<XInteractionHandler> xInteraction(rEnvironment->getInteractionHandler());
|
||||
+ if (xInteraction.is())
|
||||
+ {
|
||||
+ Reference<XInteractionRequest> xRequest(aRequest.release());
|
||||
+ xInteraction->handle(xRequest);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+}
|
||||
+
|
||||
//=========================================================================
|
||||
//=========================================================================
|
||||
//
|
||||
@@ -787,7 +902,10 @@ Reference< XInputStream > Content::openStream()
|
||||
throw( CommandAbortedException, RuntimeException, Exception )
|
||||
{
|
||||
if ( !isDocument() )
|
||||
+ {
|
||||
+ lcl_displayMessage(m_xImpl->getEnvironment(), getURL());
|
||||
return Reference< XInputStream >();
|
||||
+ }
|
||||
|
||||
Reference< XActiveDataSink > xSink = new ActiveDataSink;
|
||||
|
||||
@@ -813,7 +930,10 @@ Reference< XInputStream > Content::openStreamNoLock()
|
||||
throw( CommandAbortedException, RuntimeException, Exception )
|
||||
{
|
||||
if ( !isDocument() )
|
||||
+ {
|
||||
+ lcl_displayMessage(m_xImpl->getEnvironment(), getURL());
|
||||
return Reference< XInputStream >();
|
||||
+ }
|
||||
|
||||
Reference< XActiveDataSink > xSink = new ActiveDataSink;
|
||||
|
||||
@@ -838,7 +965,10 @@ Reference< XStream > Content::openWriteableStream()
|
||||
throw( CommandAbortedException, RuntimeException, Exception )
|
||||
{
|
||||
if ( !isDocument() )
|
||||
+ {
|
||||
+ lcl_displayMessage(m_xImpl->getEnvironment(), getURL());
|
||||
return Reference< XStream >();
|
||||
+ }
|
||||
|
||||
Reference< XActiveDataStreamer > xStreamer = new ActiveDataStreamer;
|
||||
|
||||
@@ -863,7 +990,10 @@ Reference< XStream > Content::openWriteableStreamNoLock()
|
||||
throw( CommandAbortedException, RuntimeException, Exception )
|
||||
{
|
||||
if ( !isDocument() )
|
||||
+ {
|
||||
+ lcl_displayMessage(m_xImpl->getEnvironment(), getURL());
|
||||
return Reference< XStream >();
|
||||
+ }
|
||||
|
||||
Reference< XActiveDataStreamer > xStreamer = new ActiveDataStreamer;
|
||||
|
||||
@@ -888,7 +1019,10 @@ sal_Bool Content::openStream( const Reference< XActiveDataSink >& rSink )
|
||||
throw( CommandAbortedException, RuntimeException, Exception )
|
||||
{
|
||||
if ( !isDocument() )
|
||||
+ {
|
||||
+ lcl_displayMessage(m_xImpl->getEnvironment(), getURL());
|
||||
return sal_False;
|
||||
+ }
|
||||
|
||||
OpenCommandArgument2 aArg;
|
||||
aArg.Mode = OpenMode::DOCUMENT;
|
||||
@@ -911,7 +1045,10 @@ sal_Bool Content::openStream( const Reference< XOutputStream >& rStream )
|
||||
throw( CommandAbortedException, RuntimeException, Exception )
|
||||
{
|
||||
if ( !isDocument() )
|
||||
+ {
|
||||
+ lcl_displayMessage(m_xImpl->getEnvironment(), getURL());
|
||||
return sal_False;
|
||||
+ }
|
||||
|
||||
OpenCommandArgument2 aArg;
|
||||
aArg.Mode = OpenMode::DOCUMENT;
|
||||
--
|
||||
1.7.7.3
|
||||
|
199
openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch
Normal file
199
openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch
Normal file
|
@ -0,0 +1,199 @@
|
|||
From 36644331aad8382ccab7fb19d7ab3339bbff0c20 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Thu, 1 Dec 2011 14:18:09 +0100
|
||||
Subject: [PATCH 2/2] #i105784# vcl: improve selection of fallback font by
|
||||
supplying language hint when none exists
|
||||
|
||||
---
|
||||
vcl/generic/fontmanager/fontconfig.cxx | 143 +++++++++++++++++++++++++++++++-
|
||||
1 files changed, 141 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx
|
||||
index 4d02a76..ecd3b5d 100644
|
||||
--- a/vcl/generic/fontmanager/fontconfig.cxx
|
||||
+++ b/vcl/generic/fontmanager/fontconfig.cxx
|
||||
@@ -89,6 +89,9 @@ using namespace psp;
|
||||
|
||||
#include "sal/alloca.h"
|
||||
|
||||
+#include <i18nutil/unicode.hxx> //unicode::getUnicodeScriptType
|
||||
+#include <com/sun/star/i18n/ScriptType.hdl> //ScriptType
|
||||
+
|
||||
#include <utility>
|
||||
#include <algorithm>
|
||||
|
||||
@@ -747,6 +750,138 @@ static void addtopattern(FcPattern *pPattern,
|
||||
}
|
||||
}
|
||||
|
||||
+static const char* pick_sample_language(const sal_uInt32 cCode)
|
||||
+{
|
||||
+ using namespace ::com::sun::star::i18n;
|
||||
+
|
||||
+ static ScriptTypeList aScripts[] =
|
||||
+ {
|
||||
+ { UnicodeScript_kBasicLatin, UnicodeScript_kBasicLatin, UnicodeScript_kBasicLatin },
|
||||
+ { UnicodeScript_kLatin1Supplement, UnicodeScript_kLatin1Supplement, UnicodeScript_kLatin1Supplement },
|
||||
+ { UnicodeScript_kLatinExtendedA, UnicodeScript_kLatinExtendedA, UnicodeScript_kLatinExtendedA },
|
||||
+ { UnicodeScript_kLatinExtendedB, UnicodeScript_kLatinExtendedB, UnicodeScript_kLatinExtendedB },
|
||||
+ { UnicodeScript_kGreek, UnicodeScript_kGreek, UnicodeScript_kGreek },
|
||||
+ { UnicodeScript_kCyrillic, UnicodeScript_kCyrillic, UnicodeScript_kCyrillic },
|
||||
+ { UnicodeScript_kArmenian, UnicodeScript_kArmenian, UnicodeScript_kArmenian },
|
||||
+ { UnicodeScript_kHebrew, UnicodeScript_kHebrew, UnicodeScript_kHebrew },
|
||||
+ { UnicodeScript_kArabic, UnicodeScript_kArabic, UnicodeScript_kArabic },
|
||||
+ { UnicodeScript_kSyriac, UnicodeScript_kSyriac, UnicodeScript_kSyriac },
|
||||
+ { UnicodeScript_kThaana, UnicodeScript_kThaana, UnicodeScript_kThaana },
|
||||
+ { UnicodeScript_kDevanagari, UnicodeScript_kDevanagari, UnicodeScript_kDevanagari },
|
||||
+ { UnicodeScript_kBengali, UnicodeScript_kBengali, UnicodeScript_kBengali },
|
||||
+ { UnicodeScript_kGurmukhi, UnicodeScript_kGurmukhi, UnicodeScript_kGurmukhi },
|
||||
+ { UnicodeScript_kGujarati, UnicodeScript_kGujarati, UnicodeScript_kGujarati },
|
||||
+ { UnicodeScript_kOriya, UnicodeScript_kOriya, UnicodeScript_kOriya },
|
||||
+ { UnicodeScript_kTamil, UnicodeScript_kTamil, UnicodeScript_kTamil },
|
||||
+ { UnicodeScript_kTelugu, UnicodeScript_kTelugu, UnicodeScript_kTelugu },
|
||||
+ { UnicodeScript_kKannada, UnicodeScript_kKannada, UnicodeScript_kKannada },
|
||||
+ { UnicodeScript_kMalayalam, UnicodeScript_kMalayalam, UnicodeScript_kMalayalam },
|
||||
+ { UnicodeScript_kSinhala, UnicodeScript_kSinhala, UnicodeScript_kSinhala },
|
||||
+ { UnicodeScript_kThai, UnicodeScript_kThai, UnicodeScript_kThai },
|
||||
+ { UnicodeScript_kLao, UnicodeScript_kLao, UnicodeScript_kLao },
|
||||
+ { UnicodeScript_kTibetan, UnicodeScript_kTibetan, UnicodeScript_kTibetan },
|
||||
+ { UnicodeScript_kMyanmar, UnicodeScript_kMyanmar, UnicodeScript_kMyanmar },
|
||||
+ { UnicodeScript_kGeorgian, UnicodeScript_kGeorgian, UnicodeScript_kGeorgian },
|
||||
+ { UnicodeScript_kHangulJamo, UnicodeScript_kHangulJamo, UnicodeScript_kHangulJamo },
|
||||
+ { UnicodeScript_kEthiopic, UnicodeScript_kEthiopic, UnicodeScript_kEthiopic },
|
||||
+ { UnicodeScript_kCherokee, UnicodeScript_kCherokee, UnicodeScript_kCherokee },
|
||||
+ { UnicodeScript_kUnifiedCanadianAboriginalSyllabics,
|
||||
+ UnicodeScript_kUnifiedCanadianAboriginalSyllabics,
|
||||
+ UnicodeScript_kUnifiedCanadianAboriginalSyllabics },
|
||||
+ { UnicodeScript_kKhmer, UnicodeScript_kKhmer, UnicodeScript_kKhmer },
|
||||
+ { UnicodeScript_kMongolian, UnicodeScript_kMongolian, UnicodeScript_kMongolian },
|
||||
+ { UnicodeScript_kLatinExtendedAdditional, UnicodeScript_kLatinExtendedAdditional,
|
||||
+ UnicodeScript_kLatinExtendedAdditional },
|
||||
+ { UnicodeScript_kGreekExtended, UnicodeScript_kGreekExtended, UnicodeScript_kGreekExtended },
|
||||
+ { UnicodeScript_kHiragana, UnicodeScript_kHiragana, UnicodeScript_kHiragana },
|
||||
+ { UnicodeScript_kKatakana, UnicodeScript_kKatakana, UnicodeScript_kKatakana },
|
||||
+ { UnicodeScript_kHangulCompatibilityJamo, UnicodeScript_kHangulCompatibilityJamo,
|
||||
+ UnicodeScript_kHangulCompatibilityJamo },
|
||||
+ { UnicodeScript_kHangulSyllable, UnicodeScript_kHangulSyllable,
|
||||
+ UnicodeScript_kHangulSyllable },
|
||||
+ { UnicodeScript_kArabicPresentationB, UnicodeScript_kArabicPresentationB,
|
||||
+ UnicodeScript_kArabicPresentationB },
|
||||
+ { UnicodeScript_kScriptCount, UnicodeScript_kScriptCount, UnicodeScript_kScriptCount }
|
||||
+ };
|
||||
+
|
||||
+ switch (unicode::getUnicodeScriptType(cCode, aScripts, UnicodeScript_kScriptCount))
|
||||
+ {
|
||||
+ case UnicodeScript_kBasicLatin:
|
||||
+ case UnicodeScript_kLatin1Supplement:
|
||||
+ case UnicodeScript_kLatinExtendedA:
|
||||
+ case UnicodeScript_kLatinExtendedB:
|
||||
+ case UnicodeScript_kLatinExtendedAdditional:
|
||||
+ return "en";
|
||||
+ case UnicodeScript_kGreek:
|
||||
+ case UnicodeScript_kGreekExtended:
|
||||
+ return "el";
|
||||
+ case UnicodeScript_kCyrillic:
|
||||
+ return "ru";
|
||||
+ case UnicodeScript_kArmenian:
|
||||
+ return "hy";
|
||||
+ case UnicodeScript_kHebrew:
|
||||
+ return "he";
|
||||
+ case UnicodeScript_kArabic:
|
||||
+ case UnicodeScript_kArabicPresentationB:
|
||||
+ return "ar";
|
||||
+ case UnicodeScript_kSyriac:
|
||||
+ return "syr";
|
||||
+ case UnicodeScript_kThaana:
|
||||
+ return "dv";
|
||||
+ case UnicodeScript_kDevanagari:
|
||||
+ return "hi";
|
||||
+ case UnicodeScript_kBengali:
|
||||
+ return "bn";
|
||||
+ case UnicodeScript_kGurmukhi:
|
||||
+ return "pa";
|
||||
+ case UnicodeScript_kGujarati:
|
||||
+ return "gu";
|
||||
+ case UnicodeScript_kOriya:
|
||||
+ return "or";
|
||||
+ case UnicodeScript_kTamil:
|
||||
+ return "ta";
|
||||
+ case UnicodeScript_kTelugu:
|
||||
+ return "te";
|
||||
+ case UnicodeScript_kKannada:
|
||||
+ return "ka";
|
||||
+ case UnicodeScript_kMalayalam:
|
||||
+ return "ml";
|
||||
+ case UnicodeScript_kSinhala:
|
||||
+ return "si";
|
||||
+ case UnicodeScript_kThai:
|
||||
+ return "th";
|
||||
+ case UnicodeScript_kLao:
|
||||
+ return "lo";
|
||||
+ case UnicodeScript_kTibetan:
|
||||
+ return "bo";
|
||||
+ case UnicodeScript_kMyanmar:
|
||||
+ return "my";
|
||||
+ case UnicodeScript_kGeorgian:
|
||||
+ return "ka";
|
||||
+ case UnicodeScript_kHangulJamo:
|
||||
+ case UnicodeScript_kHangulCompatibilityJamo:
|
||||
+ case UnicodeScript_kHangulSyllable:
|
||||
+ return "ko";
|
||||
+ case UnicodeScript_kEthiopic:
|
||||
+ return "am";
|
||||
+ case UnicodeScript_kCherokee:
|
||||
+ return "chr";
|
||||
+ case UnicodeScript_kUnifiedCanadianAboriginalSyllabics:
|
||||
+ return "ui";
|
||||
+ case UnicodeScript_kKhmer:
|
||||
+ return "km";
|
||||
+ case UnicodeScript_kMongolian:
|
||||
+ return "mn";
|
||||
+ case UnicodeScript_kHiragana:
|
||||
+ case UnicodeScript_kKatakana:
|
||||
+ return "ja";
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
bool PrintFontManager::Substitute( FontSelectPattern &rPattern, rtl::OUString& rMissingCodes )
|
||||
{
|
||||
bool bRet = false;
|
||||
@@ -764,14 +899,13 @@ bool PrintFontManager::Substitute( FontSelectPattern &rPattern, rtl::OUString& r
|
||||
FcPatternAddString(pPattern, FC_FAMILY, pTargetNameUtf8);
|
||||
|
||||
const rtl::OString aLangAttrib = MsLangId::convertLanguageToIsoByteString(rPattern.meLanguage);
|
||||
+ const FcChar8* pLangAttribUtf8 = NULL;
|
||||
if( !aLangAttrib.isEmpty() )
|
||||
{
|
||||
- const FcChar8* pLangAttribUtf8;
|
||||
if (aLangAttrib.equalsIgnoreAsciiCase(OString(RTL_CONSTASCII_STRINGPARAM("pa-in"))))
|
||||
pLangAttribUtf8 = (FcChar8*)"pa";
|
||||
else
|
||||
pLangAttribUtf8 = (FcChar8*)aLangAttrib.getStr();
|
||||
- FcPatternAddString(pPattern, FC_LANG, pLangAttribUtf8);
|
||||
}
|
||||
|
||||
// Add required Unicode characters, if any
|
||||
@@ -783,11 +917,16 @@ bool PrintFontManager::Substitute( FontSelectPattern &rPattern, rtl::OUString& r
|
||||
// also handle unicode surrogates
|
||||
const sal_uInt32 nCode = rMissingCodes.iterateCodePoints( &nStrIndex );
|
||||
FcCharSetAddChar( unicodes, nCode );
|
||||
+ if (!pLangAttribUtf8)
|
||||
+ pLangAttribUtf8 = (const FcChar8*)pick_sample_language(nCode);
|
||||
}
|
||||
FcPatternAddCharSet(pPattern, FC_CHARSET, unicodes);
|
||||
FcCharSetDestroy(unicodes);
|
||||
}
|
||||
|
||||
+ if( pLangAttribUtf8 )
|
||||
+ FcPatternAddString( pPattern, FC_LANG, pLangAttribUtf8 );
|
||||
+
|
||||
addtopattern(pPattern, rPattern.meItalic, rPattern.meWeight,
|
||||
rPattern.meWidthType, rPattern.mePitch);
|
||||
|
||||
--
|
||||
1.7.7.3
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
diff -p -up ./extensions/source/plugin/util/makefile.pmk.orig3 ./extensions/source/plugin/util/makefile.pmk
|
||||
--- extensions/source/plugin/util/makefile.pmk.orig3 2009-10-20 18:35:37.000000000 -0400
|
||||
+++ extensions/source/plugin/util/makefile.pmk 2009-10-20 18:37:43.000000000 -0400
|
||||
@@ -34,7 +34,9 @@ NOUNODOC=true
|
||||
|
||||
.IF "$(SYSTEM_MOZILLA)" == "YES"
|
||||
CFLAGS+=-DSYSTEM_MOZILLA
|
||||
-PKGCONFIG_MODULES+=$(MOZ_FLAVOUR)-plugin
|
||||
+# our xulrunner devel package still has
|
||||
+# mozila-plugin.pc intead of xulrunner-plugin.pc
|
||||
+PKGCONFIG_MODULES+=mozilla-plugin
|
||||
.ENDIF
|
||||
|
||||
.IF "$(GUIBASE)" == "unx" && "$(ENABLE_GTK)" == "TRUE"
|
Loading…
Add table
Reference in a new issue