diff --git a/.libreoffice.metadata b/.libreoffice.metadata new file mode 100644 index 0000000..9ed7464 --- /dev/null +++ b/.libreoffice.metadata @@ -0,0 +1,10 @@ +0855ebef85ecad5f28c7b9d6f872d7c1d40e50be SOURCES/libreoffice-4.1.3.2.tar.xz +1acea86fd399ed7817879d36370d3d1f8b109050 SOURCES/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip +7168b0f40aa5c72267899601c116d2348d2f56ec SOURCES/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip +452eba922e4f41603539c9dc39947d2271e47093 SOURCES/0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz +f5ed5424a50bc24761e7255b73079ad134eb164e SOURCES/libreoffice-translations-4.1.3.2.tar.xz +8a90669029e107b61953b90ba11545fef586c2ca SOURCES/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip +2d49e11b0b711970f494294dc3698f05eb294853 SOURCES/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip +8f949ae74a6d66278a595bd063f13e0ad196d14a SOURCES/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz +2873a84f858743f4a1ce753a6bbcf80a8d4c4a03 SOURCES/libreoffice-help-4.1.3.2.tar.xz +0619ed3a89644bef318df67db12045b2b590585b SOURCES/185d60944ea767075d27247c3162b3bc-unowinreg.dll diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/0001-Make-charmap.cxx-compile-with-icu-4.4.patch b/SOURCES/0001-Make-charmap.cxx-compile-with-icu-4.4.patch new file mode 100644 index 0000000..b4f5f3e --- /dev/null +++ b/SOURCES/0001-Make-charmap.cxx-compile-with-icu-4.4.patch @@ -0,0 +1,138 @@ +From 163116da07b5b277b9f0489e2542fac6eef43cc9 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Fri, 31 May 2013 00:10:58 +0200 +Subject: [PATCH] Make charmap.cxx compile with icu >= 4.4. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +configure.ac claims ICU >= 4.2 is supported. Make it so. + +Change-Id: Ia08bb492f41dcb88bc84550edb51ce5e89fe1103 +Reviewed-on: https://gerrit.libreoffice.org/4112 +Reviewed-by: Caolán McNamara +Tested-by: Caolán McNamara +(cherry picked from commit 30c3032920be91741ab089966f7e458ce08d09a4) +--- + i18npool/qa/cppunit/test_breakiterator.cxx | 4 +++- + i18nutil/source/utility/unicode.cxx | 6 +++--- + svx/source/dialog/charmap.cxx | 5 +++++ + sw/source/core/text/porlay.cxx | 4 ++++ + 4 files changed, 15 insertions(+), 4 deletions(-) + +diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx +index 41e4077..b121f6d 100644 +--- a/i18npool/qa/cppunit/test_breakiterator.cxx ++++ b/i18npool/qa/cppunit/test_breakiterator.cxx +@@ -16,7 +16,7 @@ + #include + #include + +-#include ++#include + + #include + #include +@@ -233,6 +233,8 @@ void TestBreakIterator::testWordBoundaries() + } + + //See https://bugs.freedesktop.org/show_bug.cgi?id=49629 ++ //Note that the breakiterator test will fail on older icu versions ++ //(4.2.1) for the 200B (ZWSP) Zero Width Space testcase. + sal_Unicode aBreakTests[] = { ' ', 1, 2, 3, 4, 5, 6, 7, 0x91, 0x92, 0x200B, 0xE8FF, 0xF8FF }; + for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode) + { +diff --git a/i18nutil/source/utility/unicode.cxx b/i18nutil/source/utility/unicode.cxx +index 2c2dd42..b46a7f6 100644 +--- a/i18nutil/source/utility/unicode.cxx ++++ b/i18nutil/source/utility/unicode.cxx +@@ -826,6 +826,9 @@ OString SAL_CALL unicode::getExemplerLanguageForUScriptCode(UScriptCode eScript) + case USCRIPT_TAI_VIET: + sRet = "blt"; + break; ++ case USCRIPT_MANDAEAN: /* Aliased to USCRIPT_MANDAIC in icu 4.6. */ ++ sRet = "mic"; ++ break; + #if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 4) + case USCRIPT_NABATAEAN: //no language with an assigned code yet + sRet = "mis"; +@@ -833,9 +836,6 @@ OString SAL_CALL unicode::getExemplerLanguageForUScriptCode(UScriptCode eScript) + case USCRIPT_PALMYRENE: //no language with an assigned code yet + sRet = "mis"; + break; +- case USCRIPT_MANDAIC: +- sRet = "mic"; +- break; + case USCRIPT_BAMUM: + sRet = "bax"; + break; +diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx +index 82239d8..be165f8 100644 +--- a/svx/source/dialog/charmap.cxx ++++ b/svx/source/dialog/charmap.cxx +@@ -1302,6 +1302,7 @@ void SubsetMap::InitList() + case UBLOCK_DOMINO_TILES: + aAllSubsets.push_back( Subset( 0x1F030, 0x1F09F, RID_SUBSETSTR_DOMINO_TILES ) ); + break; ++#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 4) + case UBLOCK_SAMARITAN: + aAllSubsets.push_back( Subset( 0x0800, 0x083F, RID_SUBSETSTR_SAMARITAN ) ); + break; +@@ -1380,6 +1381,8 @@ void SubsetMap::InitList() + case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: + aAllSubsets.push_back( Subset( 0x2A700, 0x2B73F, RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C ) ); + break; ++#endif ++#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 6) + case UBLOCK_MANDAIC: + aAllSubsets.push_back( Subset( 0x0840, 0x085F, RID_SUBSETSTR_MANDAIC ) ); + break; +@@ -1416,6 +1419,8 @@ void SubsetMap::InitList() + case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: + aAllSubsets.push_back( Subset( 0x2B740, 0x2B81F, RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D ) ); + break; ++#endif ++// Note ICU version 49 (NOT 4.9), so the MAJOR_NUM is two digits. + #if U_ICU_VERSION_MAJOR_NUM >= 49 + case UBLOCK_ARABIC_EXTENDED_A: + aAllSubsets.push_back( Subset( 0x08A0, 0x08FF, RID_SUBSETSTR_ARABIC_EXTENDED_A ) ); +diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx +index b820b8b..edc8458 100644 +--- a/sw/source/core/text/porlay.cxx ++++ b/sw/source/core/text/porlay.cxx +@@ -72,7 +72,11 @@ using namespace i18n::ScriptType; + #define isRehChar(c) IS_JOINING_GROUP((c), REH) + #define isTehMarbutaChar(c) IS_JOINING_GROUP((c), TEH_MARBUTA) + #define isWawChar(c) IS_JOINING_GROUP((c), WAW) ++#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 4) + #define isYehChar(c) (IS_JOINING_GROUP((c), YEH) || IS_JOINING_GROUP((c), FARSI_YEH)) ++#else ++#define isYehChar(c) IS_JOINING_GROUP((c), YEH) ++#endif + #define isSeenOrSadChar(c) (IS_JOINING_GROUP((c), SAD) || IS_JOINING_GROUP((c), SEEN)) + + bool isTransparentChar ( sal_Unicode cCh ) +diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx +--- a/i18npool/qa/cppunit/test_breakiterator.cxx ++++ b/i18npool/qa/cppunit/test_breakiterator.cxx +@@ -233,14 +233,18 @@ + } + + //See https://bugs.freedesktop.org/show_bug.cgi?id=49629 +- //Note that the breakiterator test will fail on older icu versions +- //(4.2.1) for the 200B (ZWSP) Zero Width Space testcase. + sal_Unicode aBreakTests[] = { ' ', 1, 2, 3, 4, 5, 6, 7, 0x91, 0x92, 0x200B, 0xE8FF, 0xF8FF }; + for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode) + { + //make sure that in all cases isBeginWord and isEndWord matches getWordBoundary + for (size_t i = 0; i < SAL_N_ELEMENTS(aBreakTests); ++i) + { ++#if (U_ICU_VERSION_MAJOR_NUM == 4) && (U_ICU_VERSION_MINOR_NUM <= 2) ++ //Note the breakiterator test is known to fail on older icu ++ //versions (4.2.1) for the 200B (ZWSP) Zero Width Space testcase. ++ if (aBreakTests[i] == 0x200B) ++ continue; ++#endif + OUString aTest("Word"); + aTest += OUString(aBreakTests[i]) + OUString("Word"); + aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, mode, true); diff --git a/SOURCES/0001-Related-rhbz-1020712-wrong-default-font-shown-in-edi.patch b/SOURCES/0001-Related-rhbz-1020712-wrong-default-font-shown-in-edi.patch new file mode 100644 index 0000000..fc4ae38 --- /dev/null +++ b/SOURCES/0001-Related-rhbz-1020712-wrong-default-font-shown-in-edi.patch @@ -0,0 +1,134 @@ +From e3bde35198d8a5420b7106c983766b88ccfba51a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Fri, 18 Oct 2013 15:36:28 +0100 +Subject: [PATCH] Related: rhbz#1020712 wrong default font shown in editengine + +Only in editengine could we have this fiasco. + +There are two ImpEditEngine::GetScriptType's + +a) sal_uInt16 ImpEditEngine::GetScriptType(const EditPaM& rPaM, sal_uInt16* pEndPos) const +this one returns i18n::ScriptType + +b) sal_uInt16 ImpEditEngine::GetScriptType(const EditSelection& rSel) const +this one returns SCRIPTTYPE + +Could there be a better way to ensure that mistakes will be made. + +Anyway, within variant b, with an empty edit engine +ImpEditEngine::GetScriptType calls GetI18NScriptTypeOfLanguage but *that* +returns i18n::ScriptType's not SCRIPTTYPEs but when there is content then a +SCRIPTTYPE is truly returned. + +Change-Id: I3a4a7c8746728e0fdfb25d961004c8339a24c93d +(cherry picked from commit e63a0d5657c7b9c7431525ba669b3edab0e56af3) + +Related: rhbz#1020712 more i18n::ScriptType being compared against SCRIPTTYPE + +Change-Id: I5da9114a3fd8330df2b63dc9187323765d305791 +(cherry picked from commit b57ffef61afd61b57087150b1a9245e21079e15b) + +Resolves: rhbz#1020712 return all the selected scripts + +What we want here is *all* the scripts in the range, that's the whole point of +using SCRIPTTYPE. We use this to determine the font to show in the fontbox. If +it's an exclusive script then we can show the font that that script, and if +there are multiple scripts we know to set it empty. + +With the other intermediate bugs out of the way, this now appears to work +correctly. + +(cherry picked from commit f1a8aefec91f51a15c951f53f283a38a2edcd141) + +Conflicts: + editeng/source/editeng/impedit2.cxx + +Change-Id: I58426123602d70c151bd878e96fa5cbab7d3fd3e +--- + editeng/source/editeng/impedit2.cxx | 39 ++++++++++++++++++++----------------- + editeng/source/editeng/impedit4.cxx | 4 ++-- + 2 files changed, 23 insertions(+), 20 deletions(-) + +diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx +index 4bc6d70..21d0d32 100644 +--- a/editeng/source/editeng/impedit2.cxx ++++ b/editeng/source/editeng/impedit2.cxx +@@ -1788,32 +1788,35 @@ sal_uInt16 ImpEditEngine::GetScriptType( const EditSelection& rSel ) const + + const ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; + +- // find the first(!) script type position that holds the +- // complete selection. Thus it will work for selections as +- // well as with just moving the cursor from char to char. ++ // find all the scripts of this range + sal_uInt16 nS = ( nPara == nStartPara ) ? aSel.Min().GetIndex() : 0; + sal_uInt16 nE = ( nPara == nEndPara ) ? aSel.Max().GetIndex() : pParaPortion->GetNode()->Len(); +- for ( size_t n = 0; n < rTypes.size(); n++ ) ++ ++ //no selection, just bare cursor ++ if (nStartPara == nEndPara && nS == nE) + { +- if (rTypes[n].nStartPos <= nS && nE <= rTypes[n].nEndPos) +- { ++ //If we are not at the start of the paragraph we want the properties of the ++ //preceding character. Otherwise get the properties of the next (or what the ++ //next would have if it existed) ++ if (nS != 0) ++ --nS; ++ else ++ ++nE; ++ } ++ ++ for (size_t n = 0; n < rTypes.size(); ++n) ++ { ++ bool bStartInRange = rTypes[n].nStartPos <= nS && nS < rTypes[n].nEndPos; ++ bool bEndInRange = rTypes[n].nStartPos < nE && nE <= rTypes[n].nEndPos; ++ ++ if (bStartInRange || bEndInRange) ++ { + if ( rTypes[n].nScriptType != i18n::ScriptType::WEAK ) +- { + nScriptType |= GetItemScriptType ( rTypes[n].nScriptType ); +- } +- else +- { +- if ( !nScriptType && n ) +- { +- // #93548# When starting with WEAK, use prev ScriptType... +- nScriptType = rTypes[n-1].nScriptType; +- } +- } +- break; + } + } + } +- return nScriptType ? nScriptType : GetI18NScriptTypeOfLanguage( GetDefaultLanguage() ); ++ return nScriptType ? nScriptType : SvtLanguageOptions::GetScriptTypeOfLanguage( GetDefaultLanguage() ); + } + + sal_Bool ImpEditEngine::IsScriptChange( const EditPaM& rPaM ) const +diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx +index 39e8156..5e0fa09 100644 +--- a/editeng/source/editeng/impedit4.cxx ++++ b/editeng/source/editeng/impedit4.cxx +@@ -2124,7 +2124,7 @@ void ImpEditEngine::ApplyChangedSentence(EditView& rEditView, + rEditView.pImpEditView->SetEditSelection( aCurrentOldPosition->Max() ); + } + +- sal_uInt16 nScriptType = GetI18NScriptTypeOfLanguage( aCurrentNewPortion->eLanguage ); ++ sal_uInt16 nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( aCurrentNewPortion->eLanguage ); + sal_uInt16 nLangWhichId = EE_CHAR_LANGUAGE; + switch(nScriptType) + { +@@ -2171,7 +2171,7 @@ void ImpEditEngine::ApplyChangedSentence(EditView& rEditView, + LanguageType eCurLanguage = GetLanguage( aCurrentPaM ); + if(eCurLanguage != aCurrentNewPortion->eLanguage) + { +- sal_uInt16 nScriptType = GetI18NScriptTypeOfLanguage( aCurrentNewPortion->eLanguage ); ++ sal_uInt16 nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( aCurrentNewPortion->eLanguage ); + sal_uInt16 nLangWhichId = EE_CHAR_LANGUAGE; + switch(nScriptType) + { +-- +1.8.3.1 + diff --git a/SOURCES/0001-Related-rhbz-919070-display-1-means-span-all-display.patch b/SOURCES/0001-Related-rhbz-919070-display-1-means-span-all-display.patch new file mode 100644 index 0000000..817b1e0 --- /dev/null +++ b/SOURCES/0001-Related-rhbz-919070-display-1-means-span-all-display.patch @@ -0,0 +1,463 @@ +From eb27eda272dd9fe6dfa4ebcfef24069bd117e5b3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Fri, 18 Oct 2013 10:04:45 +0100 +Subject: [PATCH] Related: rhbz#919070 display -1 means span all displays + +So try to set size to full "screen" size. most window managers +will ignore this however unless _NET_WM_FULLSCREEN_MONITORS is +set, Under gtk3 we can use gdk_window_set_fullscreen_mode to +do that. Its effectively impractical for LibreOffice to itself +calculate the right parameters for _NET_WM_FULLSCREEN_MONITORS +as far as I can see + +Change-Id: Ia725f21048bfcec3dbf1478b4303ccd9cfec0b36 +(cherry picked from commit a8dd794356cb62480b2dc12504ad9e0158a0b583) + +Resolves: rhbz#919070 offload set span-all-displays to a gtk3 utility + +Jaw dropping hack to set a slideshow to span all +monitors if gtk3 is available at runtime + +(cherry picked from commit 14bb85e0a3d95419c484bfa23881f03c54031c5d) + +Conflicts: + Repository.mk + +Change-Id: I363f63c9855d5cb1f92d65d0b34add0c60f7263c + +missing .mk + +Change-Id: I923153579d6cc50354450a5b3a55ecc133ae5e41 +(cherry picked from commit 2d3dd8594ee3e43fcf9a65887f90d187a4393297) + +move xid-fullscreen into gnome package + +Change-Id: I2ad0838a12ce06b2c6e77b7f55cdc2cd0627a38b +(cherry picked from commit 9c1170b25a9fab13084d2677aa4fc986db5ab675) + +pScreen uninitialized + +Change-Id: I244c3b5a949ae5c8a5bf46d1b58439e080b2c848 +(cherry picked from commit 1b4aa55ecd7b2c3f6e0d281642d0ed0a066dec69) +--- + Repository.mk | 3 + + scp2/source/gnome/module_gnome.scp | 3 +- + scp2/source/ooo/file_library_ooo.scp | 10 ++ + vcl/Executable_xid_fullscreen_on_all_monitors.mk | 20 +++ + vcl/Module_vcl.mk | 1 + + vcl/inc/unx/gtk/gtkframe.hxx | 1 + + vcl/unx/gtk/window/gtksalframe.cxx | 134 ++++++++++++++++----- + .../gtk/window/xid_fullscreen_on_all_monitors.c | 99 +++++++++++++++ + 8 files changed, 243 insertions(+), 28 deletions(-) + create mode 100644 vcl/Executable_xid_fullscreen_on_all_monitors.mk + create mode 100644 vcl/unx/gtk/window/xid_fullscreen_on_all_monitors.c + +diff --git a/Repository.mk b/Repository.mk +index e0d4d7c..99278bc 100644 +--- a/Repository.mk ++++ b/Repository.mk +@@ -89,6 +89,9 @@ endif + $(eval $(call gb_Helper_register_executables,OOO, \ + gnome-open-url.bin \ + spadmin.bin \ ++ $(if $(filter $(GUIBASE)$(ENABLE_GTK),unxTRUE), \ ++ xid-fullscreen-on-all-monitors \ ++ ) \ + $(if $(filter $(GUIBASE)$(ENABLE_TDE),unxTRUE), \ + tdefilepicker \ + ) \ +diff --git a/scp2/source/gnome/module_gnome.scp b/scp2/source/gnome/module_gnome.scp +index e8a22bf..75214d5 100644 +--- a/scp2/source/gnome/module_gnome.scp ++++ b/scp2/source/gnome/module_gnome.scp +@@ -34,7 +34,8 @@ Module gid_Module_Optional_Gnome + gid_File_Share_Registry_Gnome_Xcd, + #endif + gid_File_Bin_Gnome_Open_Url, +- gid_File_Bin_Gnome_Open_Url_Bin ++ gid_File_Bin_Gnome_Open_Url_Bin, ++ gid_File_Bin_XidFullscreen + ); + End + +diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp +index 36ec8d4..417f483 100644 +--- a/scp2/source/ooo/file_library_ooo.scp ++++ b/scp2/source/ooo/file_library_ooo.scp +@@ -343,6 +343,16 @@ File gid_File_Bin_KdeFilePicker + Name = "kdefilepicker"; + End + #endif ++ ++#ifdef ENABLE_GTK ++File gid_File_Bin_XidFullscreen ++ BIN_FILE_BODY; ++ Styles = (PACKED); ++ Dir = gid_Brand_Dir_Program; ++ Name = "xid-fullscreen-on-all-monitors"; ++End ++#endif ++ + #endif + + #ifdef MACOSX +diff --git a/vcl/Executable_xid_fullscreen_on_all_monitors.mk b/vcl/Executable_xid_fullscreen_on_all_monitors.mk +new file mode 100644 +index 0000000..5f9c127 +--- /dev/null ++++ b/vcl/Executable_xid_fullscreen_on_all_monitors.mk +@@ -0,0 +1,20 @@ ++# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- ++# ++# This file is part of the LibreOffice project. ++# ++# This Source Code Form is subject to the terms of the Mozilla Public ++# License, v. 2.0. If a copy of the MPL was not distributed with this ++# file, You can obtain one at http://mozilla.org/MPL/2.0/. ++# ++ ++$(eval $(call gb_Executable_Executable,xid-fullscreen-on-all-monitors)) ++ ++$(eval $(call gb_Executable_add_libs,xid-fullscreen-on-all-monitors,\ ++ -ldl \ ++)) ++ ++$(eval $(call gb_Executable_add_cobjects,xid-fullscreen-on-all-monitors,\ ++ vcl/unx/gtk/window/xid_fullscreen_on_all_monitors \ ++)) ++ ++# vim: set noet sw=4 ts=4: +diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk +index fd2be4c5..47031b3 100644 +--- a/vcl/Module_vcl.mk ++++ b/vcl/Module_vcl.mk +@@ -39,6 +39,7 @@ $(eval $(call gb_Module_add_targets,vcl,\ + + ifneq ($(ENABLE_GTK),) + $(eval $(call gb_Module_add_targets,vcl,\ ++ Executable_xid_fullscreen_on_all_monitors \ + Library_vclplug_gtk \ + )) + endif +diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx +index c3ea919..3edd2cb 100644 +--- a/vcl/inc/unx/gtk/gtkframe.hxx ++++ b/vcl/inc/unx/gtk/gtkframe.hxx +@@ -196,6 +196,7 @@ class GtkSalFrame : public SalFrame + guint m_nGSMCookie; + int m_nWorkArea; + bool m_bFullscreen; ++ bool m_bSpanMonitorsWhenFullscreen; + bool m_bDefaultPos; + bool m_bDefaultSize; + bool m_bSendModChangeOnRelease; +diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx +index fef8407..4a3d01c 100644 +--- a/vcl/unx/gtk/window/gtksalframe.cxx ++++ b/vcl/unx/gtk/window/gtksalframe.cxx +@@ -29,6 +29,9 @@ + #include + #include + #include ++#include ++#include ++#include + #include + #include + #include +@@ -814,6 +819,7 @@ void GtkSalFrame::InitCommon() + m_pCurrentCursor = NULL; + m_nKeyModifiers = 0; + m_bFullscreen = false; ++ m_bSpanMonitorsWhenFullscreen = false; + m_nState = GDK_WINDOW_STATE_WITHDRAWN; + m_nVisibility = GDK_VISIBILITY_FULLY_OBSCURED; + m_bSendModChangeOnRelease = false; +@@ -2045,43 +2051,68 @@ void GtkSalFrame::SetScreen( unsigned int nNewScreen, int eType, Rectangle *pSiz + if (maGeometry.nDisplayScreenNumber == nNewScreen && eType == SET_RETAIN_SIZE) + return; + +- gint nMonitor; +- bool bSameMonitor = false; +- GdkScreen *pScreen = getDisplay()->getSystem()->getScreenMonitorFromIdx( nNewScreen, nMonitor ); +- if (!pScreen) ++ GdkScreen *pScreen = NULL; ++ GdkRectangle aNewMonitor; ++ ++ bool bSpanAllScreens = nNewScreen == (unsigned int)-1; ++ m_bSpanMonitorsWhenFullscreen = bSpanAllScreens && getDisplay()->getSystem()->GetDisplayScreenCount() > 1; ++ ++ if (m_bSpanMonitorsWhenFullscreen) //span all screens + { +- g_warning ("Attempt to move GtkSalFrame to invalid screen %d => " +- "fallback to current\n", nNewScreen); + pScreen = gtk_widget_get_screen( m_pWindow ); +- bSameMonitor = true; ++ aNewMonitor.x = 0; ++ aNewMonitor.y = 0; ++ aNewMonitor.width = gdk_screen_get_width(pScreen); ++ aNewMonitor.height = gdk_screen_get_height(pScreen); + } ++ else ++ { ++ gint nMonitor; ++ bool bSameMonitor = false; + +- // Heavy lifting, need to move screen ... +- if( pScreen != gtk_widget_get_screen( m_pWindow )) +- gtk_window_set_screen( GTK_WINDOW( m_pWindow ), pScreen ); ++ if (!bSpanAllScreens) ++ { ++ pScreen = getDisplay()->getSystem()->getScreenMonitorFromIdx( nNewScreen, nMonitor ); ++ if (!pScreen) ++ { ++ g_warning ("Attempt to move GtkSalFrame to invalid screen %d => " ++ "fallback to current\n", nNewScreen); ++ } ++ } + +- gint nOldMonitor = gdk_screen_get_monitor_at_window( +- pScreen, widget_get_window( m_pWindow ) ); +- if (bSameMonitor) +- nMonitor = nOldMonitor; ++ if (!pScreen) ++ { ++ pScreen = gtk_widget_get_screen( m_pWindow ); ++ bSameMonitor = true; ++ } + +-#if OSL_DEBUG_LEVEL > 1 +- if( nMonitor == nOldMonitor ) +- g_warning( "An apparently pointless SetScreen - should we elide it ?" ); +-#endif ++ // Heavy lifting, need to move screen ... ++ if( pScreen != gtk_widget_get_screen( m_pWindow )) ++ gtk_window_set_screen( GTK_WINDOW( m_pWindow ), pScreen ); ++ ++ gint nOldMonitor = gdk_screen_get_monitor_at_window( ++ pScreen, widget_get_window( m_pWindow ) ); ++ if (bSameMonitor) ++ nMonitor = nOldMonitor; + +- GdkRectangle aOldMonitor, aNewMonitor; +- gdk_screen_get_monitor_geometry( pScreen, nOldMonitor, &aOldMonitor ); +- gdk_screen_get_monitor_geometry( pScreen, nMonitor, &aNewMonitor ); ++ #if OSL_DEBUG_LEVEL > 1 ++ if( nMonitor == nOldMonitor ) ++ g_warning( "An apparently pointless SetScreen - should we elide it ?" ); ++ #endif ++ ++ GdkRectangle aOldMonitor; ++ gdk_screen_get_monitor_geometry( pScreen, nOldMonitor, &aOldMonitor ); ++ gdk_screen_get_monitor_geometry( pScreen, nMonitor, &aNewMonitor ); ++ ++ maGeometry.nX = aNewMonitor.x + maGeometry.nX - aOldMonitor.x; ++ maGeometry.nY = aNewMonitor.y + maGeometry.nY - aOldMonitor.y; ++ } + + bool bResize = false; + bool bVisible = IS_WIDGET_MAPPED( m_pWindow ); + if( bVisible ) + Show( sal_False ); + +- maGeometry.nX = aNewMonitor.x + maGeometry.nX - aOldMonitor.x; +- maGeometry.nY = aNewMonitor.y + maGeometry.nY - aOldMonitor.y; +- + if( eType == SET_FULLSCREEN ) + { + maGeometry.nX = aNewMonitor.x; +@@ -2093,8 +2124,8 @@ void GtkSalFrame::SetScreen( unsigned int nNewScreen, int eType, Rectangle *pSiz + + // #i110881# for the benefit of compiz set a max size here + // else setting to fullscreen fails for unknown reasons +- m_aMaxSize.Width() = aNewMonitor.width+100; +- m_aMaxSize.Height() = aNewMonitor.height+100; ++ m_aMaxSize.Width() = aNewMonitor.width; ++ m_aMaxSize.Height() = aNewMonitor.height; + } + + if( pSize && eType == SET_UN_FULLSCREEN ) +@@ -2119,14 +2150,19 @@ void GtkSalFrame::SetScreen( unsigned int nNewScreen, int eType, Rectangle *pSiz + + #if !GTK_CHECK_VERSION(3,0,0) + // _NET_WM_STATE_FULLSCREEN (Metacity <-> KWin) +- if( ! getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() ) ++ if( ! getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() ) + #endif + { ++#if GTK_CHECK_VERSION(3,8,0) ++ gdk_window_set_fullscreen_mode( gtk_widget_get_window(m_pWindow), m_bSpanMonitorsWhenFullscreen ++ ? GDK_FULLSCREEN_ON_ALL_MONITORS : GDK_FULLSCREEN_ON_CURRENT_MONITOR ); ++#endif + if( eType == SET_FULLSCREEN ) + gtk_window_fullscreen( GTK_WINDOW( m_pWindow ) ); + else if( eType == SET_UN_FULLSCREEN ) + gtk_window_unfullscreen( GTK_WINDOW( m_pWindow ) ); + } ++ + if( eType == SET_UN_FULLSCREEN && + !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) ) + gtk_window_set_resizable( GTK_WINDOW( m_pWindow ), FALSE ); +@@ -3339,10 +3375,54 @@ gboolean GtkSalFrame::signalFocus( GtkWidget*, GdkEventFocus* pEvent, gpointer f + return sal_False; + } + ++#if !GTK_CHECK_VERSION(3,8,0) ++static OString getDisplayString() ++{ ++ int nParams = rtl_getAppCommandArgCount(); ++ OUString aParam; ++ for( int i = 0; i < nParams; i++ ) ++ { ++ rtl_getAppCommandArg( i, &aParam.pData ); ++ if( i < nParams-1 && (aParam == "-display" || aParam == "--display" ) ) ++ { ++ rtl_getAppCommandArg( i+1, &aParam.pData ); ++ return OUStringToOString( aParam, osl_getThreadTextEncoding() ); ++ } ++ } ++ return OString(); ++} ++#endif ++ + gboolean GtkSalFrame::signalMap( GtkWidget *pWidget, GdkEvent*, gpointer frame ) + { + GtkSalFrame* pThis = (GtkSalFrame*)frame; + ++#if !GTK_CHECK_VERSION(3,8,0) ++ //Spawn off a helper program that will attempt to set this fullscreen ++ //window to span all displays. ++ if (pThis->m_bFullscreen && pThis->m_bSpanMonitorsWhenFullscreen) ++ { ++ GdkWindow* gdkwin = gtk_widget_get_window(pThis->m_pWindow); ++ if (gdkwin) ++ { ++ OUString sProgramURL( "$BRAND_BASE_DIR/program/xid-fullscreen-on-all-monitors"); ++ rtl::Bootstrap::expandMacros(sProgramURL); ++ OUString sProgram; ++ if (osl::FileBase::getSystemPathFromFileURL(sProgramURL, sProgram) == osl::File::E_None) ++ { ++ OString sFinalProgram(OUStringToOString(sProgram, osl_getThreadTextEncoding()) ++ + " " + OString::number((int)GDK_WINDOW_XID(gdkwin))); ++ OString sDisplay(getDisplayString()); ++ if (!sDisplay.isEmpty()) ++ { ++ sFinalProgram += "--display " + sDisplay; ++ } ++ system(sFinalProgram.getStr()); ++ } ++ } ++ } ++#endif ++ + bool bSetFocus = pThis->m_bSetFocusOnMap; + pThis->m_bSetFocusOnMap = false; + +diff --git a/vcl/unx/gtk/window/xid_fullscreen_on_all_monitors.c b/vcl/unx/gtk/window/xid_fullscreen_on_all_monitors.c +new file mode 100644 +index 0000000..00554b1 +--- /dev/null ++++ b/vcl/unx/gtk/window/xid_fullscreen_on_all_monitors.c +@@ -0,0 +1,99 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* ++ * This file is part of the LibreOffice project. ++ * ++ * This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ */ ++ ++#include ++#include ++ ++typedef int Window; ++typedef union _GdkEvent GdkEvent; ++typedef struct _GdkWindow GdkWindow; ++typedef struct _GdkDisplay GdkDisplay; ++typedef struct _GdkScreen GdkScreen; ++ ++typedef enum ++{ ++ GDK_FULLSCREEN_ON_CURRENT_MONITOR, ++ GDK_FULLSCREEN_ON_ALL_MONITORS ++} GdkFullscreenMode; ++ ++int main(int argc, char *argv[]) ++{ ++ void *handle; ++ void (*gtk_init)(int*, char***); ++ GdkWindow* (*gdk_x11_window_foreign_new_for_display)(GdkDisplay*, Window); ++ GdkDisplay* (*gdk_display_get_default)(void); ++ GdkEvent* (*gdk_event_get)(void); ++ void (*gtk_main_do_event)(GdkEvent*); ++ void (*gdk_event_free)(GdkEvent*); ++ void (*gdk_window_fullscreen)(GdkWindow *); ++ void (*gdk_window_set_fullscreen_mode)(GdkWindow *, GdkFullscreenMode); ++ ++ GdkEvent *event; ++ GdkWindow *window; ++ int windowid; ++ ++ handle = dlopen("libgtk-3.so.0", RTLD_LAZY); ++ if( NULL == handle ) ++ return -1; ++ ++ gtk_init = (void (*) (int*, char***)) ++ dlsym(handle, "gtk_init"); ++ gdk_x11_window_foreign_new_for_display = (GdkWindow* (*)(GdkDisplay*, Window)) ++ dlsym(handle, "gdk_x11_window_foreign_new_for_display"); ++ gdk_display_get_default = (GdkDisplay* (*)(void)) ++ dlsym(handle, "gdk_display_get_default"); ++ gdk_event_get = (GdkEvent* (*)(void)) ++ dlsym(handle, "gdk_event_get"); ++ gtk_main_do_event = (void (*)(GdkEvent*)) ++ dlsym(handle, "gtk_main_do_event"); ++ gdk_event_free = (void (*)(GdkEvent*)) ++ dlsym(handle, "gdk_event_free"); ++ gdk_window_fullscreen = (void (*)(GdkWindow *)) ++ dlsym(handle, "gdk_window_fullscreen"); ++ gdk_window_set_fullscreen_mode = (void (*)(GdkWindow *, GdkFullscreenMode)) ++ dlsym(handle, "gdk_window_set_fullscreen_mode"); ++ ++ if (!gtk_init || ++ !gdk_x11_window_foreign_new_for_display || ++ !gdk_display_get_default || ++ !gdk_event_get || ++ !gtk_main_do_event || ++ !gdk_event_free || ++ !gdk_window_fullscreen || ++ !gdk_window_set_fullscreen_mode) ++ { ++ dlclose(handle); ++ return -1; ++ } ++ ++ gtk_init(&argc, &argv); ++ ++ windowid = atoi(argv[1]); ++ ++ window = gdk_x11_window_foreign_new_for_display(gdk_display_get_default(), windowid); ++ if (!window) ++ { ++ dlclose(handle); ++ return -1; ++ } ++ ++ gdk_window_set_fullscreen_mode(window, GDK_FULLSCREEN_ON_ALL_MONITORS); ++ gdk_window_fullscreen(window); ++ ++ while ((event = gdk_event_get()) != NULL) ++ { ++ gtk_main_do_event(event); ++ gdk_event_free(event); ++ } ++ ++ dlclose(handle); ++ return 0; ++} ++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ ++ +-- +1.8.3.1 + diff --git a/SOURCES/0001-Related-rhbz-968892-discard-impossible-languages-for.patch b/SOURCES/0001-Related-rhbz-968892-discard-impossible-languages-for.patch new file mode 100644 index 0000000..8bfe9a0 --- /dev/null +++ b/SOURCES/0001-Related-rhbz-968892-discard-impossible-languages-for.patch @@ -0,0 +1,68 @@ +From b5bd2d1d8d09a44af354584ff187d9e935ffd973 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Tue, 4 Jun 2013 17:13:13 +0100 +Subject: [PATCH] Related: rhbz#968892 discard impossible languages for glyph + fallback + +Change-Id: I14f1bab09eb0be9c2c896a1dde45913b99aab6df +--- + vcl/generic/fontmanager/fontconfig.cxx | 39 ++++++++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx +index 1b36980..ff471fa 100644 +--- a/vcl/generic/fontmanager/fontconfig.cxx ++++ b/vcl/generic/fontmanager/fontconfig.cxx +@@ -847,6 +847,41 @@ + #endif + } + ++ //returns true if the given code-point couldn't possibly be in rLangTag. ++ bool isImpossibleCodePointForLang(const LanguageTag &rLangTag, sal_uInt32 currentChar) ++ { ++ //a non-default script is set, lets believe it ++ if (rLangTag.hasScript()) ++ return false; ++ ++ int32_t script = u_getIntPropertyValue(currentChar, UCHAR_SCRIPT); ++ UScriptCode eScript = static_cast(script); ++ bool bIsImpossible = false; ++ OUString sLang = rLangTag.getLanguage(); ++ switch (eScript) ++ { ++ case USCRIPT_TELUGU: ++ bIsImpossible = sLang != "te"; ++ break; ++ case USCRIPT_BENGALI: ++ bIsImpossible = sLang != "bn" && ++ sLang != "as" && sLang != "mkb" && ++ sLang != "kfv" && sLang != "ccp" && ++ sLang != "tnv" && sLang != "ctg" && ++ sLang != "haj" && sLang != "ksy" && ++ sLang != "rkt" && sLang != "rjs" && ++ sLang != "rhg" && sLang != "syl" && ++ sLang != "kyv" && sLang != "zrg" && ++ sLang != "nhh"; ++ break; ++ default: ++ break; ++ } ++ SAL_WARN_IF(bIsImpossible, "vcl", "Throwing away user set language of " ++ << sLang << " for finding a font for glyph fallback and autodetecting instead"); ++ return bIsImpossible; ++ } ++ + LanguageTag getExemplerLangTagForCodePoint(sal_uInt32 currentChar) + { + int32_t script = u_getIntPropertyValue(currentChar, UCHAR_SCRIPT); +@@ -954,6 +989,10 @@ + // also handle unicode surrogates + const sal_uInt32 nCode = rMissingCodes.iterateCodePoints( &nStrIndex ); + FcCharSetAddChar( unicodes, nCode ); ++ //if the codepoint is impossible for this lang tag, then clear it ++ //and autodetect something useful ++ if (!aLangAttrib.isEmpty() && isImpossibleCodePointForLang(aLangTag, nCode)) ++ aLangAttrib = OString(); + //#i105784#/rhbz#527719 improve selection of fallback font + if (aLangAttrib.isEmpty()) + { diff --git a/SOURCES/0001-Resolves-fdo-48835-application-menu-for-LibreOffice.patch b/SOURCES/0001-Resolves-fdo-48835-application-menu-for-LibreOffice.patch new file mode 100644 index 0000000..a55294e --- /dev/null +++ b/SOURCES/0001-Resolves-fdo-48835-application-menu-for-LibreOffice.patch @@ -0,0 +1,249 @@ +From 931fc46eb8e09a9b16232fd58a222a47d28c5ea1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Thu, 18 Jul 2013 17:19:46 +0100 +Subject: [PATCH] Resolves: fdo#48835 application menu for LibreOffice + +(cherry picked from commit c6d4c18c7ccf047bdb0ca1b65d8f63efa5d8422f) + +Change-Id: I623f029722b71dde6e60f289c7339a96e2dfbf8e +--- + vcl/inc/unx/gtk/gtkframe.hxx | 2 + + vcl/unx/gtk/window/gtksalframe.cxx | 149 +++++++++++++++++++++++++++++++++++-- + 2 files changed, 144 insertions(+), 7 deletions(-) + +diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx +index c3ea919..cce16ab 100644 +--- a/vcl/inc/unx/gtk/gtkframe.hxx ++++ b/vcl/inc/unx/gtk/gtkframe.hxx +@@ -309,7 +309,9 @@ public: + GtkSalFrame( SystemParentData* pSysData ); + + guint m_nMenuExportId; ++ guint m_nAppMenuExportId; + guint m_nActionGroupExportId; ++ guint m_nAppActionGroupExportId; + guint m_nHudAwarenessId; + + // dispatches an event, returns true if dispatched +diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx +index 0f53e93..a3e648a 100644 +--- a/vcl/unx/gtk/window/gtksalframe.cxx ++++ b/vcl/unx/gtk/window/gtksalframe.cxx +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -65,11 +66,17 @@ + # include + #endif + ++#include ++#include + #include + #include + #include + #include + #include ++#include ++#include ++#include ++#include + + #if GTK_CHECK_VERSION(3,0,0) + # include +@@ -534,6 +541,71 @@ static void hud_activated( gboolean hud_active, gpointer user_data ) + } + } + ++static void activate_uno(GSimpleAction *action, GVariant*, gpointer) ++{ ++ uno::Reference< css::uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext(); ++ ++ uno::Reference< css::frame::XDesktop2 > xDesktop = css::frame::Desktop::create( xContext ); ++ ++ uno::Reference < css::frame::XFrame > xFrame(xDesktop->getActiveFrame()); ++ if (!xFrame.is()) ++ xFrame = uno::Reference < css::frame::XFrame >(xDesktop, uno::UNO_QUERY); ++ ++ if (!xFrame.is()) ++ return; ++ ++ uno::Reference< css::frame::XDispatchProvider > xDispatchProvider(xFrame, uno::UNO_QUERY); ++ if (!xDispatchProvider.is()) ++ return; ++ ++ gchar *strval = NULL; ++ g_object_get(action, "name", &strval, NULL); ++ if (!strval) ++ return; ++ ++ if (strcmp(strval, "New") == 0) ++ { ++ uno::Reference xModuleManager(frame::ModuleManager::create(xContext)); ++ OUString aModuleId(xModuleManager->identify(xFrame)); ++ if (aModuleId.isEmpty()) ++ return; ++ ++ comphelper::SequenceAsHashMap lModuleDescription(xModuleManager->getByName(aModuleId)); ++ OUString sFactoryService; ++ lModuleDescription[OUString("ooSetupFactoryEmptyDocumentURL")] >>= sFactoryService; ++ if (sFactoryService.isEmpty()) ++ return; ++ ++ uno::Sequence < css::beans::PropertyValue > args(0); ++ xDesktop->loadComponentFromURL(sFactoryService, OUString("_blank"), 0, args); ++ return; ++ } ++ ++ OUString sCommand(".uno:"); ++ sCommand += OUString(strval, strlen(strval), RTL_TEXTENCODING_UTF8); ++ g_free(strval); ++ ++ css::util::URL aCommand; ++ aCommand.Complete = sCommand; ++ uno::Reference< css::util::XURLTransformer > xParser = css::util::URLTransformer::create(xContext); ++ xParser->parseStrict(aCommand); ++ ++ uno::Reference< css::frame::XDispatch > xDisp = xDispatchProvider->queryDispatch(aCommand, OUString(), 0); ++ ++ if (!xDisp.is()) ++ return; ++ ++ xDisp->dispatch(aCommand, css::uno::Sequence< css::beans::PropertyValue >()); ++} ++ ++static GActionEntry app_entries[] = { ++ { "OptionsTreeDialog", activate_uno, NULL, NULL, NULL, {0} }, ++ { "About", activate_uno, NULL, NULL, NULL, {0} }, ++ { "HelpIndex", activate_uno, NULL, NULL, NULL, {0} }, ++ { "Quit", activate_uno, NULL, NULL, NULL, {0} }, ++ { "New", activate_uno, NULL, NULL, NULL, {0} } ++}; ++ + gboolean ensure_dbus_setup( gpointer data ) + { + GtkSalFrame* pSalFrame = reinterpret_cast< GtkSalFrame* >( data ); +@@ -553,29 +625,86 @@ gboolean ensure_dbus_setup( gpointer data ) + + // Generate menu paths. + XLIB_Window windowId = GDK_WINDOW_XID( gdkWindow ); +- gchar* aDBusPath = g_strdup_printf("/window/%lu", windowId); +- gchar* aDBusWindowPath = g_strdup_printf( "/window/%lu", windowId ); +- gchar* aDBusMenubarPath = g_strdup_printf( "/window/%lu/menus/menubar", windowId ); ++ gchar* aDBusWindowPath = g_strdup_printf( "/org/libreoffice/window/%lu", windowId ); ++ gchar* aDBusMenubarPath = g_strdup_printf( "/org/libreoffice/window/%lu/menus/menubar", windowId ); + + // Set window properties. + g_object_set_data_full( G_OBJECT( gdkWindow ), "g-lo-menubar", pMenuModel, ObjectDestroyedNotify ); + g_object_set_data_full( G_OBJECT( gdkWindow ), "g-lo-action-group", pActionGroup, ObjectDestroyedNotify ); + ++ gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_ID", "org.libreoffice" ); + gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_UNIQUE_BUS_NAME", g_dbus_connection_get_unique_name( pSessionBus ) ); +- gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_OBJECT_PATH", "" ); ++ gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_OBJECT_PATH", "/org/libreoffice" ); + gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_WINDOW_OBJECT_PATH", aDBusWindowPath ); + gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_MENUBAR_OBJECT_PATH", aDBusMenubarPath ); ++ gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APP_MENU_OBJECT_PATH", "/org/libreoffice/menus/appmenu" ); + + // Publish the menu model and the action group. + SAL_INFO("vcl.unity", "exporting menu model at " << pMenuModel << " for window " << windowId); + pSalFrame->m_nMenuExportId = g_dbus_connection_export_menu_model (pSessionBus, aDBusMenubarPath, pMenuModel, NULL); + SAL_INFO("vcl.unity", "exporting action group at " << pActionGroup << " for window " << windowId); +- pSalFrame->m_nActionGroupExportId = g_dbus_connection_export_action_group( pSessionBus, aDBusPath, pActionGroup, NULL); ++ pSalFrame->m_nActionGroupExportId = g_dbus_connection_export_action_group( pSessionBus, aDBusWindowPath, pActionGroup, NULL); + pSalFrame->m_nHudAwarenessId = hud_awareness_register( pSessionBus, aDBusMenubarPath, hud_activated, pSalFrame, NULL, NULL ); + +- g_free( aDBusPath ); +- g_free( aDBusWindowPath ); ++ //app menu, to-do translations, block normal menus when active, honor use appmenu settings ++ ResMgr* pMgr = ImplGetResMgr(); ++ if( pMgr ) ++ { ++ GMenu *menu = g_menu_new (); ++ GMenuItem* item; ++ ++ GMenu *firstsubmenu = g_menu_new (); ++ ++ OString sNew(OUStringToOString(ResId(SV_BUTTONTEXT_NEW, *pMgr).toString(), ++ RTL_TEXTENCODING_UTF8).replaceFirst("~", "_")); ++ ++ item = g_menu_item_new(sNew.getStr(), "app.New"); ++ g_menu_append_item( firstsubmenu, item ); ++ ++ g_menu_append_section( menu, NULL, G_MENU_MODEL(firstsubmenu)); ++ ++ GMenu *secondsubmenu = g_menu_new (); ++ ++ OString sPreferences(OUStringToOString(ResId(SV_STDTEXT_PREFERENCES, *pMgr).toString(), ++ RTL_TEXTENCODING_UTF8).replaceFirst("~", "_")); ++ ++ item = g_menu_item_new(sPreferences.getStr(), "app.OptionsTreeDialog"); ++ g_menu_append_item( secondsubmenu, item ); ++ ++ g_menu_append_section( menu, NULL, G_MENU_MODEL(secondsubmenu)); ++ GMenu *thirdsubmenu = g_menu_new (); ++ ++ OString sHelp(OUStringToOString(ResId(SV_BUTTONTEXT_HELP, *pMgr).toString(), ++ RTL_TEXTENCODING_UTF8).replaceFirst("~", "_")); ++ ++ item = g_menu_item_new(sHelp.getStr(), "app.HelpIndex"); ++ g_menu_append_item( thirdsubmenu, item ); ++ ++ OString sAbout(OUStringToOString(ResId(SV_STDTEXT_ABOUT, *pMgr).toString(), ++ RTL_TEXTENCODING_UTF8).replaceFirst("~", "_")); ++ ++ item = g_menu_item_new(sAbout.getStr(), "app.About"); ++ g_menu_append_item( thirdsubmenu, item ); ++ ++ OString sQuit(OUStringToOString(ResId(SV_MENU_MAC_QUITAPP, *pMgr).toString(), ++ RTL_TEXTENCODING_UTF8).replaceFirst("~", "_")); ++ ++ item = g_menu_item_new(sQuit.getStr(), "app.Quit"); ++ g_menu_append_item( thirdsubmenu, item ); ++ g_menu_append_section( menu, NULL, G_MENU_MODEL(thirdsubmenu)); ++ ++ GSimpleActionGroup *group = g_simple_action_group_new (); ++ g_simple_action_group_add_entries (group, app_entries, G_N_ELEMENTS (app_entries), NULL); ++ GActionGroup* pAppActionGroup = G_ACTION_GROUP(group); ++ ++ pSalFrame->m_nAppActionGroupExportId = g_dbus_connection_export_action_group( pSessionBus, "/org/libreoffice", pAppActionGroup, NULL); ++ g_object_unref(pAppActionGroup); ++ pSalFrame->m_nAppMenuExportId = g_dbus_connection_export_menu_model (pSessionBus, "/org/libreoffice/menus/appmenu", G_MENU_MODEL (menu), NULL); ++ g_object_unref(menu); ++ } ++ + g_free( aDBusMenubarPath ); ++ g_free( aDBusWindowPath ); + } + + return FALSE; +@@ -707,8 +836,12 @@ GtkSalFrame::~GtkSalFrame() + hud_awareness_unregister( pSessionBus, m_nHudAwarenessId ); + if ( m_nMenuExportId ) + g_dbus_connection_unexport_menu_model( pSessionBus, m_nMenuExportId ); ++ if ( m_nAppMenuExportId ) ++ g_dbus_connection_unexport_menu_model( pSessionBus, m_nAppMenuExportId ); + if ( m_nActionGroupExportId ) + g_dbus_connection_unexport_action_group( pSessionBus, m_nActionGroupExportId ); ++ if ( m_nAppActionGroupExportId ) ++ g_dbus_connection_unexport_action_group( pSessionBus, m_nAppActionGroupExportId ); + } + #endif + gtk_widget_destroy( m_pWindow ); +@@ -828,7 +961,9 @@ void GtkSalFrame::InitCommon() + m_pSalMenu = NULL; + m_nWatcherId = 0; + m_nMenuExportId = 0; ++ m_nAppMenuExportId = 0; + m_nActionGroupExportId = 0; ++ m_nAppActionGroupExportId = 0; + m_nHudAwarenessId = 0; + + gtk_widget_set_app_paintable( m_pWindow, TRUE ); +-- +1.8.3.1 + diff --git a/SOURCES/0001-Resolves-rhbz-1013480-crash-in-EditLineList-operator.patch b/SOURCES/0001-Resolves-rhbz-1013480-crash-in-EditLineList-operator.patch new file mode 100644 index 0000000..6ad4032 --- /dev/null +++ b/SOURCES/0001-Resolves-rhbz-1013480-crash-in-EditLineList-operator.patch @@ -0,0 +1,45 @@ +From b9240ac3695c0f4b88c539721f13dc03b5afdabb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Tue, 1 Oct 2013 15:14:30 +0100 +Subject: [PATCH] Resolves: rhbz#1013480 crash in EditLineList::operator[] + +avoid crashing anyway, though unknown how to end up in +this scenario + +Change-Id: Ib602c73478e5c4772cfef73f70c67ad22877a39f +--- + editeng/source/editeng/impedit2.cxx | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx +index 4bc6d70..8dd3e35 100644 +--- a/editeng/source/editeng/impedit2.cxx ++++ b/editeng/source/editeng/impedit2.cxx +@@ -4119,10 +4119,13 @@ Rectangle ImpEditEngine::GetEditCursor( ParaPortion* pPortion, sal_uInt16 nIndex + ? GetYValue( rLSItem.GetInterLineSpace() ) : 0; + + sal_uInt16 nCurIndex = 0; +- OSL_ENSURE( pPortion->GetLines().Count(), "Empty ParaPortion in GetEditCursor!" ); ++ size_t nLineCount = pPortion->GetLines().Count(); ++ OSL_ENSURE( nLineCount, "Empty ParaPortion in GetEditCursor!" ); ++ if (nLineCount == 0) ++ return Rectangle(); + const EditLine* pLine = NULL; + sal_Bool bEOL = ( nFlags & GETCRSR_ENDOFLINE ) ? sal_True : sal_False; +- for ( sal_uInt16 nLine = 0; nLine < pPortion->GetLines().Count(); nLine++ ) ++ for (size_t nLine = 0; nLine < nLineCount; ++nLine) + { + const EditLine* pTmpLine = pPortion->GetLines()[nLine]; + if ( ( pTmpLine->GetStart() == nIndex ) || ( pTmpLine->IsIn( nIndex, bEOL ) ) ) +@@ -4141,7 +4144,7 @@ Rectangle ImpEditEngine::GetEditCursor( ParaPortion* pPortion, sal_uInt16 nIndex + // Cursor at the End of the paragraph. + OSL_ENSURE( nIndex == nCurIndex, "Index dead wrong in GetEditCursor!" ); + +- pLine = pPortion->GetLines()[pPortion->GetLines().Count()-1]; ++ pLine = pPortion->GetLines()[nLineCount-1]; + nY -= pLine->GetHeight(); + if ( !aStatus.IsOutliner() ) + nY -= nSBL; +-- +1.8.3.1 + diff --git a/SOURCES/0001-Resolves-rhbz-1015281-crash-on-clicking-custom-anima.patch b/SOURCES/0001-Resolves-rhbz-1015281-crash-on-clicking-custom-anima.patch new file mode 100644 index 0000000..ac18ca7 --- /dev/null +++ b/SOURCES/0001-Resolves-rhbz-1015281-crash-on-clicking-custom-anima.patch @@ -0,0 +1,38 @@ +From 95c7765107d4d668cfa0709dce8003bf3258ef66 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Mon, 7 Oct 2013 12:21:54 +0100 +Subject: [PATCH] Resolves: rhbz#1015281 crash on clicking custom animation + +Change-Id: Ibb4519a3d41266ae16fcb93567cf5b5c67066b0c +--- + sd/source/ui/animations/motionpathtag.cxx | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/sd/source/ui/animations/motionpathtag.cxx b/sd/source/ui/animations/motionpathtag.cxx +index f5f7ac2..2051823 100644 +--- a/sd/source/ui/animations/motionpathtag.cxx ++++ b/sd/source/ui/animations/motionpathtag.cxx +@@ -366,7 +366,8 @@ MotionPathTag::MotionPathTag( CustomAnimationPane& rPane, ::sd::View& rView, con + { + mpPathObj = mpEffect->createSdrPathObjFromPath(); + mxPolyPoly = mpPathObj->GetPathPoly(); +- maOriginPos = mxOrigin->getPosition(); ++ if (mxOrigin.is()) ++ maOriginPos = mxOrigin->getPosition(); + + SdrPage* pPage = mrView.GetSdrPageView()->GetPage(); + if( pPage ) +@@ -946,7 +947,9 @@ void MotionPathTag::addCustomHandles( SdrHdlList& rHandlerList ) + { + if( mpPathObj ) + { +- ::com::sun::star::awt::Point aPos( mxOrigin->getPosition() ); ++ ::com::sun::star::awt::Point aPos; ++ if (mxOrigin.is()) ++ aPos = mxOrigin->getPosition(); + if( (aPos.X != maOriginPos.X) || (aPos.Y != maOriginPos.Y) ) + { + const basegfx::B2DHomMatrix aTransform(basegfx::tools::createTranslateB2DHomMatrix( +-- +1.8.3.1 + diff --git a/SOURCES/0001-Resolves-rhbz-1021915-force-menubar-menus-to-be-up-d.patch b/SOURCES/0001-Resolves-rhbz-1021915-force-menubar-menus-to-be-up-d.patch new file mode 100644 index 0000000..93a9ae8 --- /dev/null +++ b/SOURCES/0001-Resolves-rhbz-1021915-force-menubar-menus-to-be-up-d.patch @@ -0,0 +1,130 @@ +From 0881ae68b0d7f977003e0798e52548caa2556f44 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Tue, 29 Oct 2013 16:10:18 +0000 +Subject: [PATCH] Resolves: rhbz#1021915 force menubar menus to be up/down only + +If a menu won't fit in the desired location the default mode is to place it +somewhere it will fit. e.g. above, left, right. For some cases, e.g. menubars, +it's desirable to limit the options to above/below and force the menu to scroll +if it won't fit + +Change-Id: I1998a842d25752389ec9032e54673408d1ed6cb5 +--- + include/vcl/floatwin.hxx | 1 + + include/vcl/menu.hxx | 17 +++++++++++------ + vcl/source/window/menu.cxx | 34 ++++++++++++++++++++++++++++------ + 3 files changed, 40 insertions(+), 12 deletions(-) + +diff --git a/include/vcl/floatwin.hxx b/include/vcl/floatwin.hxx +index 4e2f97c..9a9dbdc 100644 +--- a/include/vcl/floatwin.hxx ++++ b/include/vcl/floatwin.hxx +@@ -48,6 +48,7 @@ class ToolBox; + #define FLOATWIN_POPUPMODE_NEWLEVEL ((sal_uLong)0x00008000) + #define FLOATWIN_POPUPMODE_NOMOUSEUPCLOSE ((sal_uLong)0x00010000) + #define FLOATWIN_POPUPMODE_GRABFOCUS ((sal_uLong)0x00020000) ++#define FLOATWIN_POPUPMODE_NOHORZPLACEMENT ((sal_uLong)0x00040000) + + #define FLOATWIN_POPUPMODEEND_CANCEL ((sal_uInt16)0x0001) + #define FLOATWIN_POPUPMODEEND_TEAROFF ((sal_uInt16)0x0002) +diff --git a/include/vcl/menu.hxx b/include/vcl/menu.hxx +index 5579149..637c701 100644 +--- a/include/vcl/menu.hxx ++++ b/include/vcl/menu.hxx +@@ -62,12 +62,17 @@ namespace vcl { struct MenuLayoutData; } + #define MENU_APPEND ((sal_uInt16)0xFFFF) + #define MENU_ITEM_NOTFOUND ((sal_uInt16)0xFFFF) + +-#define POPUPMENU_EXECUTE_DOWN ((sal_uInt16)0x0001) +-#define POPUPMENU_EXECUTE_UP ((sal_uInt16)0x0002) +-#define POPUPMENU_EXECUTE_LEFT ((sal_uInt16)0x0004) +-#define POPUPMENU_EXECUTE_RIGHT ((sal_uInt16)0x0008) +- +-#define POPUPMENU_NOMOUSEUPCLOSE ((sal_uInt16)0x0010) ++#define POPUPMENU_EXECUTE_DOWN ((sal_uInt16)0x0001) ++#define POPUPMENU_EXECUTE_UP ((sal_uInt16)0x0002) ++#define POPUPMENU_EXECUTE_LEFT ((sal_uInt16)0x0004) ++#define POPUPMENU_EXECUTE_RIGHT ((sal_uInt16)0x0008) ++#define POPUPMENU_NOMOUSEUPCLOSE ((sal_uInt16)0x0010) ++//If there isn't enough space to put the menu where it wants ++//to go, then they will be autoplaced. Toggle this bit ++//on to force menus to be placed either above or below ++//the starting rectangle and shrunk to fit and then scroll rather than place ++//the menu beside that rectangle ++#define POPUPMENU_NOHORZ_PLACEMENT ((sal_uInt16)0x0020) + + #define MENU_FLAG_NOAUTOMNEMONICS 0x0001 + #define MENU_FLAG_HIDEDISABLEDENTRIES 0x0002 +diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx +index f567ba3..6083554 100644 +--- a/vcl/source/window/menu.cxx ++++ b/vcl/source/window/menu.cxx +@@ -3581,7 +3581,6 @@ + { + ENSURE_OR_RETURN( pExecWindow, "PopupMenu::Execute: need a non-NULL window!", 0 ); + +- + sal_uLong nPopupModeFlags = 0; + if ( nFlags & POPUPMENU_EXECUTE_DOWN ) + nPopupModeFlags = FLOATWIN_POPUPMODE_DOWN; +@@ -3597,6 +3596,9 @@ + if (nFlags & POPUPMENU_NOMOUSEUPCLOSE ) // allow popup menus to stay open on mouse button up + nPopupModeFlags |= FLOATWIN_POPUPMODE_NOMOUSEUPCLOSE; // useful if the menu was opened on mousebutton down (eg toolbox configuration) + ++ if (nFlags & POPUPMENU_NOHORZ_PLACEMENT) ++ nPopupModeFlags |= FLOATWIN_POPUPMODE_NOHORZPLACEMENT; ++ + return ImplExecute( pExecWindow, rRect, nPopupModeFlags, 0, sal_False ); + } + +@@ -3700,17 +3702,37 @@ + + Size aSz = ImplCalcSize( pWin ); + +- long nMaxHeight = pWin->GetDesktopRectPixel().GetHeight(); ++ Rectangle aDesktopRect(pWin->GetDesktopRectPixel()); + if( Application::GetScreenCount() > 1 && Application::IsUnifiedDisplay() ) + { + Window* pDeskW = pWindow->GetWindow( WINDOW_REALPARENT ); + if( ! pDeskW ) + pDeskW = pWindow; + Point aDesktopTL( pDeskW->OutputToAbsoluteScreenPixel( aRect.TopLeft() ) ); +- nMaxHeight = Application::GetWorkAreaPosSizePixel( +- Application::GetBestScreen( Rectangle( aDesktopTL, aRect.GetSize() ) ) +- ).GetHeight(); ++ aDesktopRect = Application::GetWorkAreaPosSizePixel( ++ Application::GetBestScreen( Rectangle( aDesktopTL, aRect.GetSize() ) )); + } ++ ++ long nMaxHeight = aDesktopRect.GetHeight(); ++ ++ //rhbz#1021915. If a menu won't fit in the desired location the default ++ //mode is to place it somewhere it will fit. e.g. above, left, right. For ++ //some cases, e.g. menubars, it's desirable to limit the options to ++ //above/below and force the menu to scroll if it won't fit ++ if (nPopupModeFlags & FLOATWIN_POPUPMODE_NOHORZPLACEMENT) ++ { ++ Window* pRef = pWin; ++ if ( pRef->GetParent() ) ++ pRef = pRef->GetParent(); ++ ++ Rectangle devRect( pRef->OutputToAbsoluteScreenPixel( aRect.TopLeft() ), ++ pRef->OutputToAbsoluteScreenPixel( aRect.BottomRight() ) ); ++ ++ long nHeightAbove = devRect.Top() - aDesktopRect.Top(); ++ long nHeightBelow = aDesktopRect.Bottom() - devRect.Bottom(); ++ nMaxHeight = std::min(nMaxHeight, std::max(nHeightAbove, nHeightBelow)); ++ } ++ + if ( pStartedFrom && pStartedFrom->bIsMenuBar ) + nMaxHeight -= pW->GetSizePixel().Height(); + sal_Int32 nLeft, nTop, nRight, nBottom; +@@ -5345,7 +5367,7 @@ + // #99071# do not grab the focus, otherwise it will be restored to the menubar + // when the frame is reactivated later + //GrabFocus(); +- pActivePopup->ImplExecute( this, Rectangle( aItemTopLeft, aItemBottomRight ), FLOATWIN_POPUPMODE_DOWN, pMenu, bPreSelectFirst ); ++ pActivePopup->ImplExecute( this, Rectangle( aItemTopLeft, aItemBottomRight ), FLOATWIN_POPUPMODE_DOWN | FLOATWIN_POPUPMODE_NOHORZPLACEMENT, pMenu, bPreSelectFirst ); + if ( pActivePopup ) + { + // does not have a window, if aborted before or if there are no entries diff --git a/SOURCES/0001-Resolves-rhbz-968892-force-render-full-grapheme-with.patch b/SOURCES/0001-Resolves-rhbz-968892-force-render-full-grapheme-with.patch new file mode 100644 index 0000000..6f6f7da --- /dev/null +++ b/SOURCES/0001-Resolves-rhbz-968892-force-render-full-grapheme-with.patch @@ -0,0 +1,138 @@ +From 78f93c2ef1acd324c289286fe3c13a429340839b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Tue, 4 Jun 2013 15:48:23 +0100 +Subject: [PATCH] Resolves: rhbz#968892 force render full grapheme with + fallback font + +Change-Id: I5bb98c61d047e69d74666261b2c489d80f344502 +--- + vcl/generic/glyphs/gcach_layout.cxx | 61 ++++++++++++++++++++++--------------- + vcl/inc/generic/glyphcache.hxx | 5 +++ + 2 files changed, 42 insertions(+), 24 deletions(-) + +diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx +index 4fd4cf4..3c3c6de 100644 +--- a/vcl/generic/glyphs/gcach_layout.cxx ++++ b/vcl/generic/glyphs/gcach_layout.cxx +@@ -41,6 +41,10 @@ + #include + #include + ++#include ++#include ++#include ++ + // ======================================================================= + // layout implementation for ServerFont + // ======================================================================= +@@ -90,23 +94,42 @@ void ServerFontLayout::AdjustLayout( ImplLayoutArgs& rArgs ) + } + } + +-// ======================================================================= +- +-static bool lcl_CharIsJoiner(sal_Unicode cChar) ++void ServerFontLayout::setNeedFallback(ImplLayoutArgs& rArgs, sal_Int32 nCharPos, ++ bool bRightToLeft) + { +- return ((cChar == 0x200C) || (cChar == 0x200D)); +-} ++ if (nCharPos < 0) ++ return; + +-static bool needPreviousCode(sal_Unicode cChar) +-{ +- return lcl_CharIsJoiner(cChar) || U16_IS_LEAD(cChar); +-} ++ using namespace ::com::sun::star; + +-static bool needNextCode(sal_Unicode cChar) +-{ +- return lcl_CharIsJoiner(cChar) || U16_IS_TRAIL(cChar); ++ if (!mxBreak.is()) ++ { ++ uno::Reference< lang::XMultiServiceFactory > xFactory = ++ comphelper::getProcessServiceFactory(); ++ mxBreak = uno::Reference< i18n::XBreakIterator >(xFactory->createInstance( ++ "com.sun.star.i18n.BreakIterator"), uno::UNO_QUERY); ++ } ++ ++ LanguageTag aLangTag(rArgs.meLanguage); ++ lang::Locale aLocale(aLangTag.getLocale()); ++ ++ //if position nCharPos is missing in the font, grab the entire grapheme and ++ //mark all glyphs as missing so the whole thing is rendered with the same ++ //font ++ OUString aRun(rArgs.mpStr); ++ sal_Int32 nDone; ++ sal_Int32 nGraphemeStartPos = ++ mxBreak->previousCharacters(aRun, nCharPos+1, aLocale, ++ i18n::CharacterIteratorMode::SKIPCELL, 1, nDone); ++ sal_Int32 nGraphemeEndPos = ++ mxBreak->nextCharacters(aRun, nCharPos, aLocale, ++ i18n::CharacterIteratorMode::SKIPCELL, 1, nDone); ++ ++ rArgs.NeedFallback(nGraphemeStartPos, nGraphemeEndPos, bRightToLeft); + } + ++// ======================================================================= ++ + std::ostream &operator <<(std::ostream& s, ServerFont* pFont) + { + #ifndef SAL_LOG_INFO +@@ -401,9 +424,7 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) + // if needed request glyph fallback by updating LayoutArgs + if (!nGlyphIndex) + { +- if (nCharPos >= 0) +- rArgs.NeedFallback(nCharPos, bRightToLeft); +- ++ rLayout.setNeedFallback(rArgs, nCharPos, bRightToLeft); + if (SAL_LAYOUT_FOR_FALLBACK & rArgs.mnFlags) + continue; + } +@@ -1006,15 +1027,7 @@ bool IcuLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) + // if needed request glyph fallback by updating LayoutArgs + if( !nGlyphIndex ) + { +- if( nCharPos >= 0 ) +- { +- rArgs.NeedFallback( nCharPos, bRightToLeft ); +- if ( (nCharPos > 0) && needPreviousCode(rArgs.mpStr[nCharPos-1]) ) +- rArgs.NeedFallback( nCharPos-1, bRightToLeft ); +- else if ( (nCharPos + 1 < nEndRunPos) && needNextCode(rArgs.mpStr[nCharPos+1]) ) +- rArgs.NeedFallback( nCharPos+1, bRightToLeft ); +- } +- ++ rLayout.setNeedFallback(rArgs, nCharPos, bRightToLeft); + if( SAL_LAYOUT_FOR_FALLBACK & rArgs.mnFlags ) + continue; + } +diff --git a/vcl/inc/generic/glyphcache.hxx b/vcl/inc/generic/glyphcache.hxx +index a7363f9..d6cdee1 100644 +--- a/vcl/inc/generic/glyphcache.hxx ++++ b/vcl/inc/generic/glyphcache.hxx +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + namespace basegfx { class B2DPolyPolygon; } + +@@ -311,6 +312,7 @@ + { + private: + ServerFont& mrServerFont; ++ com::sun::star::uno::Reference mxBreak; + + // enforce proper copy semantic + SAL_DLLPRIVATE ServerFontLayout( const ServerFontLayout& ); +@@ -324,5 +326,7 @@ + virtual void AdjustLayout( ImplLayoutArgs& ); + virtual void DrawText( SalGraphics& ) const; ++ void setNeedFallback(ImplLayoutArgs& rArgs, sal_Int32 nIndex, ++ bool bRightToLeft); + ServerFont& GetServerFont() const { return mrServerFont; } + }; + diff --git a/SOURCES/0001-Resolves-rhbz-996162-apparent-NULL-bullet-font.patch b/SOURCES/0001-Resolves-rhbz-996162-apparent-NULL-bullet-font.patch new file mode 100644 index 0000000..bc27af2 --- /dev/null +++ b/SOURCES/0001-Resolves-rhbz-996162-apparent-NULL-bullet-font.patch @@ -0,0 +1,34 @@ +From 166510ed48bf49b75a031ce973f41d08fb4e4518 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Thu, 22 Aug 2013 15:29:10 +0100 +Subject: [PATCH] Resolves: rhbz#996162 apparent NULL bullet font + +Change-Id: I2f50ef1dabe2f152f2e18025edc88734158dbea2 +--- + editeng/source/outliner/outliner.cxx | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx +index cb27c69..49465fb 100644 +--- a/editeng/source/outliner/outliner.cxx ++++ b/editeng/source/outliner/outliner.cxx +@@ -897,9 +897,15 @@ Font Outliner::ImpCalcBulletFont( sal_Int32 nPara ) const + } + + Font aBulletFont; ++ const Font *pSourceFont = 0; + if ( pFmt->GetNumberingType() == SVX_NUM_CHAR_SPECIAL ) + { +- aBulletFont = *pFmt->GetBulletFont(); ++ pSourceFont = pFmt->GetBulletFont(); ++ } ++ ++ if (pSourceFont) ++ { ++ aBulletFont = *pSourceFont; + } + else + { +-- +1.8.3.1 + diff --git a/SOURCES/0001-WaE-Wstrict-overflow-assuming-signed-overflow-does-n.patch b/SOURCES/0001-WaE-Wstrict-overflow-assuming-signed-overflow-does-n.patch new file mode 100644 index 0000000..4c416c7 --- /dev/null +++ b/SOURCES/0001-WaE-Wstrict-overflow-assuming-signed-overflow-does-n.patch @@ -0,0 +1,33 @@ +From ca576e0804324bbb36b697543cbe992e34d4b951 Mon Sep 17 00:00:00 2001 +From: Eike Rathke +Date: Mon, 7 Oct 2013 21:51:26 +0200 +Subject: [PATCH] WaE [-Wstrict-overflow] assuming signed overflow does not + occur + +... when assuming that (X - c) <= X is always true +... or that (X + c) < X is always false + +Change-Id: Ib2313827cd6358ced0141b41cba753896b676e28 +--- + svtools/source/contnr/imivctl1.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/svtools/source/contnr/imivctl1.cxx b/svtools/source/contnr/imivctl1.cxx +index 1cd006b..0685bc3 100644 +--- a/svtools/source/contnr/imivctl1.cxx ++++ b/svtools/source/contnr/imivctl1.cxx +@@ -2710,9 +2710,9 @@ Rectangle SvxIconChoiceCtrl_Impl::CalcFocusRect( SvxIconChoiceCtrlEntry* pEntry + Rectangle aFocusRect( aBoundRect.Left(), aBmpRect.Top() - 1, + aBoundRect.Right() - 4, aTextRect.Bottom() + 1 ); + // the focus rectangle should not touch the text +- if( aFocusRect.Left() - 1 >= pEntry->aRect.Left() ) ++ if( aFocusRect.Left() > ::std::numeric_limits::min() && aFocusRect.Left() - 1 >= pEntry->aRect.Left() ) + aFocusRect.Left()--; +- if( aFocusRect.Right() + 1 <= pEntry->aRect.Right() ) ++ if( aFocusRect.Right() < ::std::numeric_limits::max() && aFocusRect.Right() + 1 <= pEntry->aRect.Right() ) + aFocusRect.Right()++; + + return aFocusRect; +-- +1.8.3.1 + diff --git a/SOURCES/0001-do-not-build-LibreOffice_Test.patch b/SOURCES/0001-do-not-build-LibreOffice_Test.patch new file mode 100644 index 0000000..076fa3c --- /dev/null +++ b/SOURCES/0001-do-not-build-LibreOffice_Test.patch @@ -0,0 +1,27 @@ +From ac58f62832260af9473eca69e764586258692bb6 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Thu, 23 May 2013 14:21:31 +0200 +Subject: [PATCH] do not build LibreOffice_Test + +Change-Id: I74d8d5192b007432a0943d10e82d0c5dad3a605c +--- + instsetoo_native/CustomTarget_install.mk | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/instsetoo_native/CustomTarget_install.mk b/instsetoo_native/CustomTarget_install.mk +index 0962ac8..d3d922285 100644 +--- a/instsetoo_native/CustomTarget_install.mk ++++ b/instsetoo_native/CustomTarget_install.mk +@@ -118,9 +118,6 @@ else # LIBO_DEV_INSTALL + ifeq (ODK,$(filter ODK,$(BUILD_TYPE))) + $(call instsetoo_native_install_command,sdkoo,en-US,_SDK,,$(PKGFORMAT)) + endif +-ifeq (,$(filter WNT MACOSX,$(OS))) +- $(call instsetoo_native_install_command,not-used,en-US,_Test,,$(PKGFORMAT)) +-endif + ifeq (HELP,$(filter HELP,$(BUILD_TYPE))$(filter MACOSX,$(OS))) + $(foreach lang,$(gb_HELP_LANGS),\ + $(call instsetoo_native_install_command,ooohelppack,$(lang),,-helppack,$(PKGFORMAT))) +-- +1.8.1.4 + diff --git a/SOURCES/0001-fdo-67725-unoidl-AggregatingCursor-must-wrap-modules.patch b/SOURCES/0001-fdo-67725-unoidl-AggregatingCursor-must-wrap-modules.patch new file mode 100644 index 0000000..8a840ea --- /dev/null +++ b/SOURCES/0001-fdo-67725-unoidl-AggregatingCursor-must-wrap-modules.patch @@ -0,0 +1,172 @@ +From f450c132e6a65e1d11f20595bb0bfbf786e1dc2d Mon Sep 17 00:00:00 2001 +From: Stephan Bergmann +Date: Thu, 24 Oct 2013 09:48:13 +0200 +Subject: [PATCH] fdo#67725 unoidl::AggregatingCursor must wrap modules for + aggregation, too + +Otherwise cppuhelper::TypeManager::createTypeDescriptionEnumeration, sitting on +top such an AggregatingCursor, will miss any entities from provider P' in module +M if any previous provider P contains the same module M. + +That happened when climaker generates cli_oootypes.dll, where the enumeration +missed everything from offapi in top-level module "com" because it had already +seen udkapi's "com", and only reported the handful of entities under offapi's +other top-level module "org" (which does not appear in udkapi). + +Change-Id: If538391bde22bcc346417b5988cf12023f0d4172 +(cherry picked from commit bdd55e28fc7788c2968daaf87b782f8e6189ee2d) +--- + unoidl/source/unoidl.cxx | 112 +++++++++++++++++++++++++++++++++-------------- + 1 file changed, 78 insertions(+), 34 deletions(-) + +diff --git a/unoidl/source/unoidl.cxx b/unoidl/source/unoidl.cxx +index a9939e4..c55e02b 100644 +--- a/unoidl/source/unoidl.cxx ++++ b/unoidl/source/unoidl.cxx +@@ -23,41 +23,101 @@ namespace unoidl { + + namespace { + ++class AggregatingModule: public ModuleEntity { ++public: ++ AggregatingModule( ++ std::vector< rtl::Reference< Provider > > const & providers, ++ OUString const & name): ++ providers_(providers), name_(name) ++ {} ++ ++private: ++ virtual ~AggregatingModule() throw () {} ++ ++ virtual std::vector< OUString > getMemberNames() const; ++ ++ virtual rtl::Reference< MapCursor > createCursor() const; ++ ++ std::vector< rtl::Reference< Provider > > providers_; ++ OUString name_; ++}; ++ ++std::vector< OUString > AggregatingModule::getMemberNames() const { ++ std::set< OUString > names; ++ for (std::vector< rtl::Reference< Provider > >::const_iterator i( ++ providers_.begin()); ++ i != providers_.end(); ++i) ++ { ++ rtl::Reference< Entity > ent((*i)->findEntity(name_)); ++ if (ent.is() && ent->getSort() == Entity::SORT_MODULE) { ++ std::vector< OUString > ns( ++ static_cast< ModuleEntity * >(ent.get())->getMemberNames()); ++ names.insert(ns.begin(), ns.end()); ++ } ++ } ++ return std::vector< OUString >(names.begin(), names.end()); ++} ++ + class AggregatingCursor: public MapCursor { + public: + AggregatingCursor( +- std::vector< rtl::Reference< MapCursor > > const & cursors): +- cursors_(cursors), iterator_(cursors_.begin()) +- {} ++ std::vector< rtl::Reference< Provider > > const & providers, ++ OUString const & name): ++ providers_(providers), name_(name), iterator_(providers_.begin()) ++ { findCursor(); } + + private: + virtual ~AggregatingCursor() throw () {} + +- virtual rtl::Reference< Entity > getNext(rtl::OUString * name); ++ virtual rtl::Reference< Entity > getNext(OUString * name); + +- std::vector< rtl::Reference< MapCursor > > cursors_; +- std::vector< rtl::Reference< MapCursor > >::iterator iterator_; +- std::set< rtl::OUString > seenMembers; ++ void findCursor(); ++ ++ std::vector< rtl::Reference< Provider > > providers_; ++ OUString name_; ++ std::vector< rtl::Reference< Provider > >::iterator iterator_; ++ rtl::Reference< MapCursor > cursor_; ++ std::set< OUString > seen_; + }; + +-rtl::Reference< Entity > AggregatingCursor::getNext(rtl::OUString * name) { +- for (;;) { +- if (iterator_ == cursors_.end()) { +- return rtl::Reference< Entity >(); +- } +- rtl::OUString n; +- rtl::Reference< Entity > ent((*iterator_)->getNext(&n)); ++rtl::Reference< Entity > AggregatingCursor::getNext(OUString * name) { ++ while (cursor_.is()) { ++ OUString n; ++ rtl::Reference< Entity > ent(cursor_->getNext(&n)); + if (ent.is()) { +- if (seenMembers.insert(n).second) { ++ if (seen_.insert(n).second) { + if (name != 0) { + *name = n; + } +- return ent; ++ return ent->getSort() == Entity::SORT_MODULE ++ ? new AggregatingModule( ++ providers_, (name_.isEmpty() ? name_ : name_ + ".") + n) ++ : ent; + } + } else { +- ++iterator_; ++ cursor_.clear(); ++ findCursor(); + } + } ++ return rtl::Reference< Entity >(); ++} ++ ++void AggregatingCursor::findCursor() { ++ for (; !cursor_.is() && iterator_ != providers_.end(); ++iterator_) { ++ if (name_.isEmpty()) { ++ cursor_ = (*iterator_)->createRootCursor(); ++ } else { ++ rtl::Reference< Entity > ent((*iterator_)->findEntity(name_)); ++ if (ent.is() && ent->getSort() == Entity::SORT_MODULE) { ++ cursor_ = static_cast< ModuleEntity * >(ent.get())-> ++ createCursor(); ++ } ++ } ++ } ++} ++ ++rtl::Reference< MapCursor > AggregatingModule::createCursor() const { ++ return new AggregatingCursor(providers_, name_); + } + + } +@@ -139,23 +199,7 @@ rtl::Reference< Entity > Manager::findEntity(rtl::OUString const & name) const { + rtl::Reference< MapCursor > Manager::createCursor(rtl::OUString const & name) + const + { +- std::vector< rtl::Reference< MapCursor > > curs; +- for (std::vector< rtl::Reference< Provider > >::const_iterator i( +- providers_.begin()); +- i != providers_.end(); ++i) +- { +- if (name.isEmpty()) { +- curs.push_back((*i)->createRootCursor()); +- } else { +- rtl::Reference< Entity > ent((*i)->findEntity(name)); +- if (ent.is() && ent->getSort() == Entity::SORT_MODULE) { +- curs.push_back( +- static_cast< ModuleEntity * >(ent.get())->createCursor()); +- } +- } +- } +- return curs.empty() +- ? rtl::Reference< MapCursor >() : new AggregatingCursor(curs); ++ return new AggregatingCursor(providers_, name); + } + + Manager::~Manager() throw () {} +-- +1.8.3.1 + diff --git a/SOURCES/0001-fdo-70201-sw-eliminate-no-extent-RSID-only-AUTOFMT-h.patch b/SOURCES/0001-fdo-70201-sw-eliminate-no-extent-RSID-only-AUTOFMT-h.patch new file mode 100644 index 0000000..1bf72b4 --- /dev/null +++ b/SOURCES/0001-fdo-70201-sw-eliminate-no-extent-RSID-only-AUTOFMT-h.patch @@ -0,0 +1,45 @@ +From a79a7f315a0a3bc8148a88bb1d3c6f83a4552094 Mon Sep 17 00:00:00 2001 +From: Michael Stahl +Date: Tue, 8 Oct 2013 18:37:35 +0200 +Subject: [PATCH] fdo#70201: sw: eliminate no-extent RSID-only AUTOFMT hints + +These are already filtered out in SwpHints::TryInsertHint(), but they +can be produced by a SwTxtNode::Update() following some deletion like in +SwTxtNode::ReplaceText() (or maybe CutImpl() and RstAttr() too?). + +So in order to prevent SwHistorySetTxt being created for these, +filter them out in SwpHints::MergePortions(), which has the advantage +that it's one location to change; probably filtering in Update() and +RstAttr() both would work too. + +(regression from 6db39dbd7378351f6476f6db25eb7110c9cfb291) + +Change-Id: I597a9ab290dcc3fb1b624dd2dca241c462acf256 +(cherry picked from commit 91159b1c31a7fd474ba0b97828f593604790ce3c) +--- + sw/source/core/txtnode/thints.cxx | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx +index 0893dac..34dac0a 100644 +--- a/sw/source/core/txtnode/thints.cxx ++++ b/sw/source/core/txtnode/thints.cxx +@@ -2528,6 +2528,15 @@ bool SwpHints::MergePortions( SwTxtNode& rNode ) + pHt->GetAutoFmt().GetStyleHandle()); + if ((pSet->Count() == 1) && pSet->GetItem(RES_CHRATR_RSID, false)) + { ++ // fdo#70201: eliminate no-extent RSID-only AUTOFMT ++ // could be produced by ReplaceText or (maybe?) RstAttr ++ if (*pHt->GetStart() == *pHt->GetEnd()) ++ { ++ SwpHintsArray::DeleteAtPos(i); // kill it without History! ++ SwTxtAttr::Destroy(pHt, rNode.GetDoc()->GetAttrPool()); ++ --i; ++ continue; ++ } + // fdo#52028: this one has _only_ RSID => ignore it completely + if (!pHt->IsFormatIgnoreStart() || !pHt->IsFormatIgnoreEnd()) + { +-- +1.8.3.1 + diff --git a/SOURCES/0001-fdo-70968-Incorrect-rendering-of-Devanagari-short-i-.patch b/SOURCES/0001-fdo-70968-Incorrect-rendering-of-Devanagari-short-i-.patch new file mode 100644 index 0000000..391227f --- /dev/null +++ b/SOURCES/0001-fdo-70968-Incorrect-rendering-of-Devanagari-short-i-.patch @@ -0,0 +1,98 @@ +From 71077148d442b3bbfeefd9a572942946c6a95823 Mon Sep 17 00:00:00 2001 +From: Khaled Hosny +Date: Wed, 30 Oct 2013 09:34:38 +0200 +Subject: [PATCH] fdo#70968: Incorrect rendering of Devanagari short 'i' vowel + +It seems that some Indic fonts assign 'mark' glyph class to combining +spacing marks (spacing not non spacing) so my reliance on the glyph +class to set the IS_DIACRITIC flags broke those fonts. This is a bandaid +to get around the issue, plus some long rant! (at this rate, I'll be +writing "The VCL haters handbook" pretty soon). + +Change-Id: I3ff892acf746d50182573f94e7e8c3c6f9464ae0 +--- + vcl/generic/glyphs/gcach_layout.cxx | 26 +++++++++++++++++++++----- + vcl/source/gdi/sallayout.cxx | 21 +++++++++++++++++++++ + 2 files changed, 42 insertions(+), 5 deletions(-) + +diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx +index 4673931..7a8bfc9 100644 +--- a/vcl/generic/glyphs/gcach_layout.cxx ++++ b/vcl/generic/glyphs/gcach_layout.cxx +@@ -456,20 +456,36 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) + if (bInCluster) + nGlyphFlags |= GlyphItem::IS_IN_CLUSTER; + ++ // The whole IS_DIACRITIC concept is a stupid hack that was ++ // introduced ages ago to work around the utter brokenness of the ++ // way justification adjustments are applied (the DXArray fiasco). ++ // Since it is such a stupid hack, there is no sane way to directly ++ // map to concepts of the "outside" world, so we do some rather ++ // ugly hacks: ++ // * If the font has a GDEF table, we check for glyphs with mark ++ // glyph class which is sensible, except that some fonts ++ // (fdo#70968) assign mark class to spacing marks (which is wrong ++ // but usually harmless), so we try to sniff what HarfBuzz thinks ++ // about this glyph by checking if it gives it a zero advance ++ // width. ++ // * If the font has no GDEF table, we just check if the glyph has ++ // zero advance width, but this is stupid and can be wrong. A ++ // better way would to check the character's Unicode combining ++ // class, but unfortunately glyph gives combining marks the ++ // cluster value of its base character, so nCharPos will be ++ // pointing to the wrong character (but HarfBuzz might change ++ // this in the future). + bool bDiacritic = false; + if (hb_ot_layout_has_glyph_classes(mpHbFace)) + { + // the font has GDEF table +- if (hb_ot_layout_get_glyph_class(mpHbFace, nGlyphIndex) == HB_OT_LAYOUT_GLYPH_CLASS_MARK) ++ bool bMark = hb_ot_layout_get_glyph_class(mpHbFace, nGlyphIndex) == HB_OT_LAYOUT_GLYPH_CLASS_MARK; ++ if (bMark && pHbPositions[i].x_advance == 0) + bDiacritic = true; + } + else + { + // the font lacks GDEF table +- // HACK: if the resolved glyph advance is zero assume it is a +- // combining mark. The whole IS_DIACRITIC concept is a hack to +- // fix the other hacks we use to second-guess glyph advances in +- // ApplyDXArray and the likes and it needs to die + if (pHbPositions[i].x_advance == 0) + bDiacritic = true; + } +diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx +index f395936..450ec232 100644 +--- a/vcl/source/gdi/sallayout.cxx ++++ b/vcl/source/gdi/sallayout.cxx +@@ -1018,6 +1018,27 @@ void GenericSalLayout::AdjustLayout( ImplLayoutArgs& rArgs ) + + // ----------------------------------------------------------------------- + ++// This DXArray thing is one of the stupidest ideas I have ever seen (I've been ++// told that it probably a one-to-one mapping of some Windows 3.1 API, which is ++// telling). To justify a text string, Writer calls OutputDevice::GetTextArray() ++// to get an array that maps input characters (not glyphs) to their absolute ++// position, GetTextArray() in turn calls SalLayout::FillDXArray() to get an ++// array of character widths that it converts to absolute positions. ++// ++// Writer would then apply justification adjustments to that array of absolute ++// character positions and return to OutputDevice, which eventually calls ++// ApplyDXArray(), which needs to extract the individual adjustments for each ++// character to apply it to corresponding glyphs, and since that information is ++// already lost it tries to do some heuristics to guess it again. Those ++// heuristics often fail, and have always been a source of all sorts of weird ++// text layout bugs, and instead of fixing the broken design a hack after hack ++// have been applied on top of it, making it a complete mess that nobody ++// understands. ++// ++// As you can see by now, this is utterly stupid, why Writer does not just send ++// us directly the advance width transformations it wants to apply to each ++// character instead of this whole mess? ++ + void GenericSalLayout::ApplyDXArray( ImplLayoutArgs& rArgs ) + { + if( m_GlyphItems.empty()) +-- +1.8.3.1 + diff --git a/SOURCES/0001-resolved-fdo-56209-reviving-FilterFormulaParser.patch b/SOURCES/0001-resolved-fdo-56209-reviving-FilterFormulaParser.patch new file mode 100644 index 0000000..9427f62 --- /dev/null +++ b/SOURCES/0001-resolved-fdo-56209-reviving-FilterFormulaParser.patch @@ -0,0 +1,405 @@ +From 4a7096b9c8c0e6451fa0ced06143cb8a65ec10fc Mon Sep 17 00:00:00 2001 +From: Eike Rathke +Date: Mon, 28 Oct 2013 22:46:01 +0100 +Subject: [PATCH] resolved fdo#56209 reviving FilterFormulaParser + +First it was moved from oox to sc without carrying over the component +factory bits, then subsequent commits removed the remaining bits in +steps as it appeared to be unused: + +8ada1cd2846e5e60ad63250c68ddea3a9356546f +887d7945addeb823e0d3f783609c4e79d92ad4a7 +effda59a12cedd3cf200d2e9f5186a623b0855bb +f2fd2a66ee827024b31a310d67804cb7cb18d2da + +(cherry picked from commit 20e0afa76087e20f95247406d265a122263a8c6f) + +Backported. + +Change-Id: I445b11c95daff6f30b3654936d0f22a113158f97 +Reviewed-on: https://gerrit.libreoffice.org/6469 +Reviewed-by: David Tardon +Tested-by: David Tardon +--- + sc/Library_scfilt.mk | 1 + + sc/source/filter/excel/xestream.cxx | 10 ++ + sc/source/filter/inc/ooxformulaparser.hxx | 110 +++++++++++++++++ + sc/source/filter/oox/ooxformulaparser.cxx | 196 ++++++++++++++++++++++++++++++ + sc/util/scfilt.component | 3 + + 5 files changed, 320 insertions(+) + create mode 100644 sc/source/filter/inc/ooxformulaparser.hxx + create mode 100644 sc/source/filter/oox/ooxformulaparser.cxx + +diff --git a/sc/Library_scfilt.mk b/sc/Library_scfilt.mk +index 5b383c4..3cc4b1a 100644 +--- a/sc/Library_scfilt.mk ++++ b/sc/Library_scfilt.mk +@@ -188,6 +188,7 @@ $(eval $(call gb_Library_add_exception_objects,scfilt,\ + sc/source/filter/oox/formulabuffer \ + sc/source/filter/oox/formulaparser \ + sc/source/filter/oox/numberformatsbuffer \ ++ sc/source/filter/oox/ooxformulaparser \ + sc/source/filter/oox/pagesettings \ + sc/source/filter/oox/pivotcachebuffer \ + sc/source/filter/oox/pivotcachefragment \ +diff --git a/sc/source/filter/excel/xestream.cxx b/sc/source/filter/excel/xestream.cxx +index bf9c1d8..8421006 100644 +--- a/sc/source/filter/excel/xestream.cxx ++++ b/sc/source/filter/excel/xestream.cxx +@@ -1179,6 +1179,11 @@ namespace oox { namespace xls { + Sequence< OUString > SAL_CALL ExcelFilter_getSupportedServiceNames() throw(); + Reference< XInterface > SAL_CALL ExcelFilter_createInstance( + const Reference< XComponentContext >& rxContext ) throw( Exception ); ++ ++ OUString SAL_CALL OOXMLFormulaParser_getImplementationName() throw(); ++ Sequence< OUString > SAL_CALL OOXMLFormulaParser_getSupportedServiceNames() throw(); ++ Reference< XInterface > SAL_CALL OOXMLFormulaParser_create( ++ const Reference< XComponentContext >& rxContext ) throw(); + } } + + #ifdef __cplusplus +@@ -1201,6 +1206,11 @@ extern "C" + oox::xls::ExcelFilter_getSupportedServiceNames, ::cppu::createSingleComponentFactory, + 0, 0 + }, ++ { ++ oox::xls::OOXMLFormulaParser_create, oox::xls::OOXMLFormulaParser_getImplementationName, ++ oox::xls::OOXMLFormulaParser_getSupportedServiceNames, ::cppu::createSingleComponentFactory, ++ 0, 0 ++ }, + { 0, 0, 0, 0, 0, 0 } + }; + +diff --git a/sc/source/filter/inc/ooxformulaparser.hxx b/sc/source/filter/inc/ooxformulaparser.hxx +new file mode 100644 +index 0000000..e6c5797 +--- /dev/null ++++ b/sc/source/filter/inc/ooxformulaparser.hxx +@@ -0,0 +1,110 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* ++ * This file is part of the LibreOffice project. ++ * ++ * This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * ++ * This file incorporates work covered by the following license notice: ++ * ++ * Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed ++ * with this work for additional information regarding copyright ++ * ownership. The ASF licenses this file to you under the Apache ++ * License, Version 2.0 (the "License"); you may not use this file ++ * except in compliance with the License. You may obtain a copy of ++ * the License at http://www.apache.org/licenses/LICENSE-2.0 . ++ */ ++ ++#ifndef OOX_XLS_OOXFORMULAPARSER_HXX ++#define OOX_XLS_OOXFORMULAPARSER_HXX ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++namespace oox { ++namespace xls { ++ ++class OOXMLFormulaParserImpl; ++ ++// ============================================================================ ++ ++typedef ::cppu::WeakImplHelper3< ++ ::com::sun::star::lang::XServiceInfo, ++ ::com::sun::star::lang::XInitialization, ++ ::com::sun::star::sheet::XFilterFormulaParser > OOXMLFormulaParser_BASE; ++ ++/** OOXML formula parser/compiler service for usage in ODF filters. */ ++class OOXMLFormulaParser : public OOXMLFormulaParser_BASE ++{ ++public: ++ explicit OOXMLFormulaParser(); ++ virtual ~OOXMLFormulaParser(); ++ ++ // com.sun.star.lang.XServiceInfo interface ------------------------------- ++ ++ virtual ::rtl::OUString SAL_CALL ++ getImplementationName() throw( ::com::sun::star::uno::RuntimeException ); ++ ++ virtual sal_Bool SAL_CALL ++ supportsService( const ::rtl::OUString& rService ) ++ throw( ::com::sun::star::uno::RuntimeException ); ++ ++ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL ++ getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException ); ++ ++ // com.sun.star.lang.XInitialization interface ---------------------------- ++ ++ virtual void SAL_CALL initialize( ++ const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rArgs ) ++ throw( ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException ); ++ ++ // com.sun.star.sheet.XFilterFormulaParser interface ---------------------- ++ ++ virtual ::rtl::OUString SAL_CALL ++ getSupportedNamespace() ++ throw( ::com::sun::star::uno::RuntimeException ); ++ ++ // com.sun.star.sheet.XFormulaParser interface ---------------------------- ++ ++ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::FormulaToken > SAL_CALL ++ parseFormula( ++ const ::rtl::OUString& rFormula, ++ const ::com::sun::star::table::CellAddress& rReferencePos ) ++ throw( ::com::sun::star::uno::RuntimeException ); ++ ++ virtual ::rtl::OUString SAL_CALL ++ printFormula( ++ const ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::FormulaToken >& rTokens, ++ const ::com::sun::star::table::CellAddress& rReferencePos ) ++ throw( ::com::sun::star::uno::RuntimeException ); ++ ++private: ++ typedef ::boost::shared_ptr< OOXMLFormulaParserImpl > ParserImplRef; ++ ++ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > ++ mxComponent; ++ ParserImplRef mxParserImpl; /// Implementation of import parser. ++}; ++ ++css::uno::Reference< css::uno::XInterface > SAL_CALL OOXMLFormulaParser_create( ++ css::uno::Reference< css::uno::XComponentContext > const & context); ++ ++OUString SAL_CALL OOXMLFormulaParser_getImplementationName(); ++ ++css::uno::Sequence< OUString > SAL_CALL OOXMLFormulaParser_getSupportedServiceNames(); ++ ++// ============================================================================ ++ ++} // namespace xls ++} // namespace oox ++ ++#endif ++ ++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ +diff --git a/sc/source/filter/oox/ooxformulaparser.cxx b/sc/source/filter/oox/ooxformulaparser.cxx +new file mode 100644 +index 0000000..9b91c79 +--- /dev/null ++++ b/sc/source/filter/oox/ooxformulaparser.cxx +@@ -0,0 +1,196 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* ++ * This file is part of the LibreOffice project. ++ * ++ * This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * ++ * This file incorporates work covered by the following license notice: ++ * ++ * Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed ++ * with this work for additional information regarding copyright ++ * ownership. The ASF licenses this file to you under the Apache ++ * License, Version 2.0 (the "License"); you may not use this file ++ * except in compliance with the License. You may obtain a copy of ++ * the License at http://www.apache.org/licenses/LICENSE-2.0 . ++ */ ++ ++#include "ooxformulaparser.hxx" ++ ++#include ++#include "formulaparser.hxx" ++ ++namespace oox { ++namespace xls { ++ ++// ============================================================================ ++ ++using namespace ::com::sun::star::lang; ++using namespace ::com::sun::star::sheet; ++using namespace ::com::sun::star::table; ++using namespace ::com::sun::star::uno; ++ ++using ::rtl::OUString; ++ ++// ============================================================================ ++ ++class OOXMLFormulaParserImpl : private FormulaFinalizer ++{ ++public: ++ explicit OOXMLFormulaParserImpl( const Reference< XMultiServiceFactory >& rxModelFactory ); ++ ++ Sequence< FormulaToken > parseFormula( const OUString& rFormula, const CellAddress& rReferencePos ); ++ ++protected: ++ virtual const FunctionInfo* resolveBadFuncName( const OUString& rTokenData ) const; ++ ++private: ++ ApiParserWrapper maApiParser; ++}; ++ ++// ---------------------------------------------------------------------------- ++ ++OOXMLFormulaParserImpl::OOXMLFormulaParserImpl( const Reference< XMultiServiceFactory >& rxModelFactory ) : ++ FormulaFinalizer( OpCodeProvider( rxModelFactory, FILTER_OOXML, BIFF_UNKNOWN, true ) ), ++ maApiParser( rxModelFactory, *this ) ++{ ++} ++ ++Sequence< FormulaToken > OOXMLFormulaParserImpl::parseFormula( const OUString& rFormula, const CellAddress& rReferencePos ) ++{ ++ return finalizeTokenArray( maApiParser.parseFormula( rFormula, rReferencePos ) ); ++} ++ ++const FunctionInfo* OOXMLFormulaParserImpl::resolveBadFuncName( const OUString& rTokenData ) const ++{ ++ /* Try to parse calls to library functions. The format of such a function ++ call is assumed to be ++ "'\Library\'!". */ ++ ++ // the string has to start with an apostroph (followed by the library URL) ++ if( (rTokenData.getLength() >= 6) && (rTokenData[ 0 ] == '\'') ) ++ { ++ // library URL and function name are separated by an exclamation mark ++ sal_Int32 nExclamPos = rTokenData.lastIndexOf( '!' ); ++ if( (1 < nExclamPos) && (nExclamPos + 1 < rTokenData.getLength()) && (rTokenData[ nExclamPos - 1 ] == '\'') ) ++ { ++ // find the last backslash that separates library path and name ++ sal_Int32 nFileSep = rTokenData.lastIndexOf( '\\', nExclamPos - 2 ); ++ if( nFileSep > 1 ) ++ { ++ // find preceding backslash that separates the last directory name ++ sal_Int32 nDirSep = rTokenData.lastIndexOf( '\\', nFileSep - 1 ); ++ // function library is located in a directory called 'library' ++ if( (nDirSep > 0) && rTokenData.matchIgnoreAsciiCaseAsciiL( RTL_CONSTASCII_STRINGPARAM( "\\LIBRARY\\" ), nDirSep ) ) ++ { ++ // try to find a function info for the function name ++ OUString aFuncName = rTokenData.copy( nExclamPos + 1 ).toAsciiUpperCase(); ++ const FunctionInfo* pFuncInfo = getFuncInfoFromOoxFuncName( aFuncName ); ++ if( pFuncInfo && (pFuncInfo->meFuncLibType != FUNCLIB_UNKNOWN) ) ++ { ++ // check that the name of the library matches ++ OUString aLibName = rTokenData.copy( nFileSep + 1, nExclamPos - nFileSep - 2 ); ++ if( pFuncInfo->meFuncLibType == getFuncLibTypeFromLibraryName( aLibName ) ) ++ return pFuncInfo; ++ } ++ } ++ } ++ } ++ } ++ return 0; ++} ++ ++// ============================================================================ ++ ++Sequence< OUString > OOXMLFormulaParser_getSupportedServiceNames() ++{ ++ Sequence< OUString > aServiceNames( 1 ); ++ aServiceNames[ 0 ] = "com.sun.star.sheet.FilterFormulaParser"; ++ return aServiceNames; ++} ++ ++OUString OOXMLFormulaParser_getImplementationName() ++{ ++ return OUString( "com.sun.star.comp.oox.xls.FormulaParser"); ++} ++ ++Reference< XInterface > OOXMLFormulaParser_create( const Reference< XComponentContext >& ) ++{ ++ return static_cast< ::cppu::OWeakObject* >( new OOXMLFormulaParser ); ++} ++ ++// ============================================================================ ++ ++OOXMLFormulaParser::OOXMLFormulaParser() ++{ ++} ++ ++OOXMLFormulaParser::~OOXMLFormulaParser() ++{ ++} ++ ++// com.sun.star.lang.XServiceInfo interface ----------------------------------- ++ ++OUString SAL_CALL OOXMLFormulaParser::getImplementationName() throw( RuntimeException ) ++{ ++ return OOXMLFormulaParser_getImplementationName(); ++} ++ ++sal_Bool SAL_CALL OOXMLFormulaParser::supportsService( const OUString& rService ) throw( RuntimeException ) ++{ ++ const Sequence< OUString > aServices( OOXMLFormulaParser_getSupportedServiceNames() ); ++ const OUString* pArray = aServices.getConstArray(); ++ const OUString* pArrayEnd = pArray + aServices.getLength(); ++ return ::std::find( pArray, pArrayEnd, rService ) != pArrayEnd; ++} ++ ++Sequence< OUString > SAL_CALL OOXMLFormulaParser::getSupportedServiceNames() throw( RuntimeException ) ++{ ++ return OOXMLFormulaParser_getSupportedServiceNames(); ++} ++ ++// com.sun.star.lang.XInitialization interface -------------------------------- ++ ++void SAL_CALL OOXMLFormulaParser::initialize( const Sequence< Any >& rArgs ) throw( Exception, RuntimeException ) ++{ ++ OSL_ENSURE( rArgs.hasElements(), "OOXMLFormulaParser::initialize - missing arguments" ); ++ if( !rArgs.hasElements() ) ++ throw RuntimeException(); ++ mxComponent.set( rArgs[ 0 ], UNO_QUERY_THROW ); ++} ++ ++// com.sun.star.sheet.XFilterFormulaParser interface -------------------------- ++ ++OUString SAL_CALL OOXMLFormulaParser::getSupportedNamespace() throw( RuntimeException ) ++{ ++ return OUString( "http://schemas.microsoft.com/office/excel/formula"); ++} ++ ++// com.sun.star.sheet.XFormulaParser interface -------------------------------- ++ ++Sequence< FormulaToken > SAL_CALL OOXMLFormulaParser::parseFormula( ++ const OUString& rFormula, const CellAddress& rReferencePos ) throw( RuntimeException ) ++{ ++ if( !mxParserImpl ) ++ { ++ Reference< XMultiServiceFactory > xModelFactory( mxComponent, UNO_QUERY_THROW ); ++ mxParserImpl.reset( new OOXMLFormulaParserImpl( xModelFactory ) ); ++ } ++ return mxParserImpl->parseFormula( rFormula, rReferencePos ); ++} ++ ++OUString SAL_CALL OOXMLFormulaParser::printFormula( ++ const Sequence< FormulaToken >& /*rTokens*/, const CellAddress& /*rReferencePos*/ ) throw( RuntimeException ) ++{ ++ // not implemented ++ throw RuntimeException(); ++} ++ ++// ============================================================================ ++ ++} // namespace xls ++} // namespace oox ++ ++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ +diff --git a/sc/util/scfilt.component b/sc/util/scfilt.component +index 13b884b..292fbd4 100644 +--- a/sc/util/scfilt.component ++++ b/sc/util/scfilt.component +@@ -26,4 +26,7 @@ + + + ++ ++ ++ + +-- +1.8.3.1 + diff --git a/SOURCES/0001-select-sheet-menu-as-a-right-click-popup-to-the-prev.patch b/SOURCES/0001-select-sheet-menu-as-a-right-click-popup-to-the-prev.patch new file mode 100644 index 0000000..fe5b49d --- /dev/null +++ b/SOURCES/0001-select-sheet-menu-as-a-right-click-popup-to-the-prev.patch @@ -0,0 +1,239 @@ +From f4bfce94abc10fbd2d8b37113e27b36c1e79fc61 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Fri, 13 Sep 2013 20:13:25 +0100 +Subject: [PATCH] select sheet menu as a right-click popup to the prev/next + sheet dingus + +Change-Id: Ifc9baeabedeab526d040220e9e45f171b5353bcf +--- + include/svtools/tabbar.hxx | 6 ++++ + sc/source/ui/inc/tabcont.hxx | 3 ++ + sc/source/ui/view/tabcont.cxx | 69 ++++++++++++++++++++++++++++++--------- + svtools/source/control/tabbar.cxx | 34 +++++++++++++++++-- + 4 files changed, 93 insertions(+), 19 deletions(-) + +diff --git a/include/svtools/tabbar.hxx b/include/svtools/tabbar.hxx +index 0bf3be6..44bcc48 100644 +--- a/include/svtools/tabbar.hxx ++++ b/include/svtools/tabbar.hxx +@@ -369,6 +369,7 @@ private: + sal_Bool mbSelTextColor; + bool mbMirrored; + bool mbHasInsertTab; // if true, the tab bar has an extra tab at the end. ++ bool mbScrollAlwaysEnabled; + Link maSelectHdl; + Link maDoubleClickHdl; + Link maSplitHdl; +@@ -377,6 +378,7 @@ private: + Link maStartRenamingHdl; + Link maAllowRenamingHdl; + Link maEndRenamingHdl; ++ Link maScrollAreaContextHdl; + size_t maCurrentItemList; + + using Window::ImplInit; +@@ -529,6 +531,8 @@ public: + void SetStyle( WinBits nStyle ); + WinBits GetStyle() const { return mnWinStyle; } + ++ void SetScrollAlwaysEnabled(bool bScrollAlwaysEnabled); ++ + Size CalcWindowSizePixel() const; + + void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; } +@@ -547,6 +551,8 @@ public: + const Link& GetAllowRenamingHdl() const { return maAllowRenamingHdl; } + void SetEndRenamingHdl( const Link& rLink ) { maEndRenamingHdl = rLink; } + const Link& GetEndRenamingHdl() const { return maEndRenamingHdl; } ++ void SetScrollAreaContextHdl( const Link& rLink ) { maScrollAreaContextHdl = rLink; } ++ const Link& GetScrollAreaContextHdl() const { return maScrollAreaContextHdl; } + + // accessibility + virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible(); +diff --git a/sc/source/ui/inc/tabcont.hxx b/sc/source/ui/inc/tabcont.hxx +index c0bde9e..2c87f89 100644 +--- a/sc/source/ui/inc/tabcont.hxx ++++ b/sc/source/ui/inc/tabcont.hxx +@@ -46,6 +46,9 @@ private: + sal_uInt16 GetMaxId() const; + SCTAB GetPrivatDropPos(const Point& rPos ); + ++ DECL_LINK(ShowPageList, const CommandEvent*); ++ ++ void SwitchToPageId(sal_uInt16 nId); + protected: + virtual void Select(); + virtual void Command( const CommandEvent& rCEvt ); +diff --git a/sc/source/ui/view/tabcont.cxx b/sc/source/ui/view/tabcont.cxx +index 4fce113..4056748 100644 +--- a/sc/source/ui/view/tabcont.cxx ++++ b/sc/source/ui/view/tabcont.cxx +@@ -81,6 +81,39 @@ ScTabControl::ScTabControl( Window* pParent, ScViewData* pData ) : + + EnableEditMode(); + UpdateInputContext(); ++ ++ SetScrollAlwaysEnabled(true); ++ ++ SetScrollAreaContextHdl( LINK( this, ScTabControl, ShowPageList ) ); ++} ++ ++IMPL_LINK(ScTabControl, ShowPageList, const CommandEvent *, pEvent) ++{ ++ PopupMenu aPopup; ++ ++ sal_uInt16 nCurPageId = GetCurPageId(); ++ ++ ScDocument* pDoc = pViewData->GetDocument(); ++ SCTAB nCount = pDoc->GetTableCount(); ++ for (SCTAB i=0; iIsVisible(i)) ++ { ++ OUString aString; ++ if (pDoc->GetName(i, aString)) ++ { ++ sal_uInt16 nId = static_cast(i)+1; ++ aPopup.InsertItem(nId, aString, MIB_CHECKABLE); ++ if (nId == nCurPageId) ++ aPopup.CheckItem(nId); ++ } ++ } ++ } ++ ++ sal_uInt16 nItemId = aPopup.Execute( this, pEvent->GetMousePosPixel() ); ++ SwitchToPageId(nItemId); ++ ++ return 0; + } + + ScTabControl::~ScTabControl() +@@ -368,6 +401,25 @@ void ScTabControl::SetSheetLayoutRTL( sal_Bool bSheetRTL ) + nSelPageIdByMouse = TabBar::PAGE_NOT_FOUND; + } + ++void ScTabControl::SwitchToPageId(sal_uInt16 nId) ++{ ++ if (nId) ++ { ++ sal_Bool bAlreadySelected = IsPageSelected( nId ); ++ //make the clicked page the current one ++ SetCurPageId( nId ); ++ //change the selection when the current one is not already ++ //selected or part of a multi selection ++ if(!bAlreadySelected) ++ { ++ sal_uInt16 nCount = GetMaxId(); ++ ++ for (sal_uInt16 i=1; i<=nCount; i++) ++ SelectPage( i, i==nId ); ++ Select(); ++ } ++ } ++} + + void ScTabControl::Command( const CommandEvent& rCEvt ) + { +@@ -387,22 +439,7 @@ void ScTabControl::Command( const CommandEvent& rCEvt ) + // if multiple tables are selected and the one under the cursor + // is not part of them then unselect them + sal_uInt16 nId = GetPageId( rCEvt.GetMousePosPixel() ); +- if (nId) +- { +- sal_Bool bAlreadySelected = IsPageSelected( nId ); +- //make the clicked page the current one +- SetCurPageId( nId ); +- //change the selection when the current one is not already +- //selected or part of a multi selection +- if(!bAlreadySelected) +- { +- sal_uInt16 nCount = GetMaxId(); +- +- for (sal_uInt16 i=1; i<=nCount; i++) +- SelectPage( i, i==nId ); +- Select(); +- } +- } ++ SwitchToPageId(nId); + + // #i52073# OLE inplace editing has to be stopped before showing the sheet tab context menu + pViewSh->DeactivateOle(); +diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx +index 4152f9d..c0b8059 100644 +--- a/svtools/source/control/tabbar.cxx ++++ b/svtools/source/control/tabbar.cxx +@@ -100,13 +100,33 @@ class ImplTabButton : public PushButton + { + public: + ImplTabButton( TabBar* pParent, WinBits nWinStyle = 0 ) : +- PushButton( pParent, nWinStyle | WB_RECTSTYLE | WB_SMALLSTYLE | WB_NOLIGHTBORDER | WB_NOPOINTERFOCUS ) {} ++ PushButton( pParent, nWinStyle | WB_RECTSTYLE | WB_SMALLSTYLE | WB_NOLIGHTBORDER | WB_NOPOINTERFOCUS ) {} + + TabBar* GetParent() const { return (TabBar*)Window::GetParent(); } + + virtual long PreNotify( NotifyEvent& rNEvt ); ++ ++ virtual void MouseButtonDown( const MouseEvent& rMEvt ); ++ ++ virtual void Command( const CommandEvent& rCEvt ); + }; + ++void ImplTabButton::MouseButtonDown( const MouseEvent& rMEvt ) ++{ ++ PushButton::MouseButtonDown(rMEvt); ++} ++ ++void ImplTabButton::Command( const CommandEvent& rCEvt ) ++{ ++ sal_uInt16 nCmd = rCEvt.GetCommand(); ++ if ( nCmd == COMMAND_CONTEXTMENU ) ++ { ++ TabBar *pParent = GetParent(); ++ pParent->maScrollAreaContextHdl.Call((void*)&rCEvt); ++ } ++ PushButton::Command(rCEvt); ++} ++ + // ======================================================================= + + long ImplTabButton::PreNotify( NotifyEvent& rNEvt ) +@@ -398,6 +418,8 @@ void TabBar::ImplInit( WinBits nWinStyle ) + mbSelColor = sal_False; + mbSelTextColor = sal_False; + mbMirrored = sal_False; ++ mbMirrored = sal_False; ++ mbScrollAlwaysEnabled = false; + + if ( nWinStyle & WB_3DTAB ) + mnOffY++; +@@ -752,19 +774,25 @@ void TabBar::ImplEnableControls() + return; + + // Buttons enablen/disblen +- sal_Bool bEnableBtn = mnFirstPos > 0; ++ sal_Bool bEnableBtn = mbScrollAlwaysEnabled || mnFirstPos > 0; + if ( mpFirstBtn ) + mpFirstBtn->Enable( bEnableBtn ); + if ( mpPrevBtn ) + mpPrevBtn->Enable( bEnableBtn ); + +- bEnableBtn = mnFirstPos < ImplGetLastFirstPos(); ++ bEnableBtn = mbScrollAlwaysEnabled || mnFirstPos < ImplGetLastFirstPos(); + if ( mpNextBtn ) + mpNextBtn->Enable( bEnableBtn ); + if ( mpLastBtn ) + mpLastBtn->Enable( bEnableBtn ); + } + ++void TabBar::SetScrollAlwaysEnabled(bool bScrollAlwaysEnabled) ++{ ++ mbScrollAlwaysEnabled = bScrollAlwaysEnabled; ++ ImplEnableControls(); ++} ++ + // ----------------------------------------------------------------------- + + void TabBar::ImplShowPage( sal_uInt16 nPos ) +-- +1.8.3.1 + diff --git a/SOURCES/0002-Related-rhbz-968892-discard-impossible-languages-for.patch b/SOURCES/0002-Related-rhbz-968892-discard-impossible-languages-for.patch new file mode 100644 index 0000000..36eadbe --- /dev/null +++ b/SOURCES/0002-Related-rhbz-968892-discard-impossible-languages-for.patch @@ -0,0 +1,56 @@ +From 0e89a49f67f58e0942ed4aea393ac37e22d9e12d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Wed, 5 Jun 2013 15:59:50 +0100 +Subject: [PATCH] Related: rhbz#968892 discard impossible languages for oriya + script fallback + +Change-Id: I2fa1a127fbd2f905a89f0c30898ad56099fa8df1 +--- + vcl/generic/fontmanager/fontconfig.cxx | 28 ++++++++++++++++++---------- + 1 file changed, 18 insertions(+), 10 deletions(-) + +diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx +index ff471fa..a305095 100644 +--- a/vcl/generic/fontmanager/fontconfig.cxx ++++ b/vcl/generic/fontmanager/fontconfig.cxx +@@ -860,19 +860,27 @@ namespace + OUString sLang = rLangTag.getLanguage(); + switch (eScript) + { ++ //http://en.wiktionary.org/wiki/Category:Oriya_script_languages ++ case USCRIPT_ORIYA: ++ bIsImpossible = ++ sLang != "or" && ++ sLang != "kxv"; ++ break; ++ //http://en.wiktionary.org/wiki/Category:Telugu_script_languages + case USCRIPT_TELUGU: +- bIsImpossible = sLang != "te"; ++ bIsImpossible = ++ sLang != "te" && ++ sLang != "gon" && ++ sLang != "kfc"; + break; ++ //http://en.wiktionary.org/wiki/Category:Bengali_script_languages + case USCRIPT_BENGALI: +- bIsImpossible = sLang != "bn" && +- sLang != "as" && sLang != "mkb" && +- sLang != "kfv" && sLang != "ccp" && +- sLang != "tnv" && sLang != "ctg" && +- sLang != "haj" && sLang != "ksy" && +- sLang != "rkt" && sLang != "rjs" && +- sLang != "rhg" && sLang != "syl" && +- sLang != "kyv" && sLang != "zrg" && +- sLang != "nhh"; ++ bIsImpossible = ++ sLang != "bn" && ++ sLang != "as" && ++ sLang != "bpy" && ++ sLang != "ctg" && ++ sLang != "sa"; + break; + default: + break; +-- +1.8.1.4 + diff --git a/SOURCES/libreoffice-installfix.patch b/SOURCES/libreoffice-installfix.patch new file mode 100644 index 0000000..cc5f03e --- /dev/null +++ b/SOURCES/libreoffice-installfix.patch @@ -0,0 +1,10 @@ +--- a/solenv/bin/modules/installer/worker.pm 2010-11-20 13:36:38.000000000 +0000 ++++ b/solenv/bin/modules/installer/worker.pm 2010-11-20 13:36:42.000000000 +0000 +@@ -204,7 +204,6 @@ + + $installdir = installer::systemactions::create_directories("install", $languageref); + installer::logger::print_message( "... creating installation set in $installdir ...\n" ); +- remove_old_installation_sets($installdir); + my $inprogressinstalldir = $installdir . "_inprogress"; + installer::systemactions::rename_directory($installdir, $inprogressinstalldir); + $installdir = $inprogressinstalldir; diff --git a/SOURCES/libreoffice-multiliblauncher.sh b/SOURCES/libreoffice-multiliblauncher.sh new file mode 100644 index 0000000..05c9d3f --- /dev/null +++ b/SOURCES/libreoffice-multiliblauncher.sh @@ -0,0 +1,16 @@ +#!/bin/sh +OOO_ARCH=$(uname -m) +case $OOO_ARCH in + x86_64 | s390x | sparc64 | aarch64) + OOO_LIB_DIR="/usr/lib64" + SECONDARY_LIB_DIR="/usr/lib" + ;; + * ) + OOO_LIB_DIR="/usr/lib" + SECONDARY_LIB_DIR="/usr/lib64" + ;; +esac +if [ ! -x $OOO_LIB_DIR/BRAND/program/LAUNCHER ]; then + OOO_LIB_DIR="$SECONDARY_LIB_DIR" +fi +exec $OOO_LIB_DIR/BRAND/program/LAUNCHER "$@" diff --git a/SOURCES/openoffice.org-2.0.2.rh188467.printingdefaults.patch b/SOURCES/openoffice.org-2.0.2.rh188467.printingdefaults.patch new file mode 100644 index 0000000..45c40aa --- /dev/null +++ b/SOURCES/openoffice.org-2.0.2.rh188467.printingdefaults.patch @@ -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 diff --git a/SOURCES/openoffice.org-2.4.0.ooo86080.unopkg.bodge.patch b/SOURCES/openoffice.org-2.4.0.ooo86080.unopkg.bodge.patch new file mode 100644 index 0000000..b5a7ff7 --- /dev/null +++ b/SOURCES/openoffice.org-2.4.0.ooo86080.unopkg.bodge.patch @@ -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 diff --git a/SOURCES/openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch b/SOURCES/openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch new file mode 100644 index 0000000..113cbe7 --- /dev/null +++ b/SOURCES/openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch @@ -0,0 +1,141 @@ +From 8208f795bb6882cf77adef940839f0c46b9befb2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +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 1b8d8f5..6dcbe2e 100644 +--- a/sc/source/ui/inc/output.hxx ++++ b/sc/source/ui/inc/output.hxx +@@ -296,6 +296,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 ac6365c..141ef00 100644 +--- a/sc/source/ui/view/output2.cxx ++++ b/sc/source/ui/view/output2.cxx +@@ -2905,13 +2905,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 || +- ( mpDoc->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; +@@ -2946,6 +2940,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 +@@ -3278,13 +3285,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 || +- ( mpDoc->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; +@@ -3650,13 +3652,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 || +- ( mpDoc->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; +@@ -4547,6 +4543,20 @@ void ScOutputData::DrawEditAsianVertical(DrawEditParam& rParam) + rParam.adjustForHyperlinkInPDF(aURLStart, mpDev); + } + ++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 || ++ ( mpDoc->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; +@@ -5258,11 +5268,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.8.0 + diff --git a/SOURCES/openoffice.org-3.1.0.ooo101274.opening-a-directory.patch b/SOURCES/openoffice.org-3.1.0.ooo101274.opening-a-directory.patch new file mode 100644 index 0000000..9bfc221 --- /dev/null +++ b/SOURCES/openoffice.org-3.1.0.ooo101274.opening-a-directory.patch @@ -0,0 +1,186 @@ +From 1be2e01e592466aec2e60fbf1af528cfab1572db Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Thu, 1 Dec 2011 14:02:07 +0100 +Subject: [PATCH] #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(+) + +diff --git a/comphelper/source/misc/stillreadwriteinteraction.cxx b/comphelper/source/misc/stillreadwriteinteraction.cxx +index b3dd6e8..d0f5738 100644 +--- a/comphelper/source/misc/stillreadwriteinteraction.cxx ++++ b/comphelper/source/misc/stillreadwriteinteraction.cxx +@@ -87,6 +87,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 95e589f..d7fc181 100644 +--- a/ucbhelper/source/client/content.cxx ++++ b/ucbhelper/source/client/content.cxx +@@ -27,6 +27,7 @@ + #include + + #include ++#include + #include + #include + #include +@@ -37,6 +38,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include +@@ -56,12 +59,18 @@ + #include + #include + #include ++#include ++ + #include + #include + #include + #include + #include + #include ++#include ++#include ++ ++#include + + using namespace com::sun::star::container; + using namespace com::sun::star::beans; +@@ -283,6 +292,54 @@ static Reference< XContent > getContent( + return Reference< XContent >(); + } + ++namespace ++{ ++ ++void ++lcl_displayMessage( ++ const Reference& rContext, ++ const Reference& rEnvironment, ++ const rtl::OUString& rUri) ++{ ++ // Create exception ++ const Reference xBroker(UniversalContentBroker::create(rContext)); ++ const PropertyValue aUriProperty( ++ rtl::OUString::createFromAscii("Uri"), ++ -1, ++ makeAny(getSystemPathFromFileURL(xBroker, rUri)), ++ PropertyState_DIRECT_VALUE) ++ ; ++ Sequence lArguments(1); ++ lArguments[0] <<= aUriProperty; ++ const InteractiveAugmentedIOException xError( ++ rtl::OUString(), ++ 0, ++ InteractionClassification_ERROR, ++ IOErrorCode_NO_FILE, ++ lArguments) ++ ; ++ ++ // Create interaction request ++ std::auto_ptr aRequest( ++ new ucbhelper::SimpleInteractionRequest(makeAny(xError), CONTINUATION_APPROVE)); ++ { ++ Reference xContinuation( ++ new ::ucbhelper::InteractionApprove(aRequest.get())); ++ Sequence > lContinuations(1); ++ lContinuations[0].set(xContinuation); ++ aRequest->setContinuations(lContinuations); ++ } ++ ++ Reference xInteraction(rEnvironment->getInteractionHandler()); ++ if (xInteraction.is()) ++ { ++ Reference xRequest(aRequest.release()); ++ xInteraction->handle(xRequest); ++ } ++} ++ ++} ++ + //========================================================================= + //========================================================================= + // +@@ -699,7 +756,10 @@ Reference< XInputStream > Content::openStream() + throw( CommandAbortedException, RuntimeException, Exception ) + { + if ( !isDocument() ) ++ { ++ lcl_displayMessage(m_xImpl->getComponentContext(), m_xImpl->getEnvironment(), getURL()); + return Reference< XInputStream >(); ++ } + + Reference< XActiveDataSink > xSink = new ActiveDataSink; + +@@ -724,7 +784,10 @@ Reference< XInputStream > Content::openStreamNoLock() + throw( CommandAbortedException, RuntimeException, Exception ) + { + if ( !isDocument() ) ++ { ++ lcl_displayMessage(m_xImpl->getComponentContext(), m_xImpl->getEnvironment(), getURL()); + return Reference< XInputStream >(); ++ } + + Reference< XActiveDataSink > xSink = new ActiveDataSink; + +@@ -749,7 +812,10 @@ Reference< XStream > Content::openWriteableStream() + throw( CommandAbortedException, RuntimeException, Exception ) + { + if ( !isDocument() ) ++ { ++ lcl_displayMessage(m_xImpl->getComponentContext(), m_xImpl->getEnvironment(), getURL()); + return Reference< XStream >(); ++ } + + Reference< XActiveDataStreamer > xStreamer = new ActiveDataStreamer; + +@@ -774,7 +840,10 @@ Reference< XStream > Content::openWriteableStreamNoLock() + throw( CommandAbortedException, RuntimeException, Exception ) + { + if ( !isDocument() ) ++ { ++ lcl_displayMessage(m_xImpl->getComponentContext(), m_xImpl->getEnvironment(), getURL()); + return Reference< XStream >(); ++ } + + Reference< XActiveDataStreamer > xStreamer = new ActiveDataStreamer; + +@@ -799,7 +868,10 @@ sal_Bool Content::openStream( const Reference< XActiveDataSink >& rSink ) + throw( CommandAbortedException, RuntimeException, Exception ) + { + if ( !isDocument() ) ++ { ++ lcl_displayMessage(m_xImpl->getComponentContext(), m_xImpl->getEnvironment(), getURL()); + return sal_False; ++ } + + OpenCommandArgument2 aArg; + aArg.Mode = OpenMode::DOCUMENT; +@@ -822,7 +894,10 @@ sal_Bool Content::openStream( const Reference< XOutputStream >& rStream ) + throw( CommandAbortedException, RuntimeException, Exception ) + { + if ( !isDocument() ) ++ { ++ lcl_displayMessage(m_xImpl->getComponentContext(), m_xImpl->getEnvironment(), getURL()); + return sal_False; ++ } + + OpenCommandArgument2 aArg; + aArg.Mode = OpenMode::DOCUMENT; +-- +1.8.0 + diff --git a/SOURCES/openoffice.org-3.1.0.oooXXXXX.solenv.allowmissing.patch b/SOURCES/openoffice.org-3.1.0.oooXXXXX.solenv.allowmissing.patch new file mode 100644 index 0000000..0641054 --- /dev/null +++ b/SOURCES/openoffice.org-3.1.0.oooXXXXX.solenv.allowmissing.patch @@ -0,0 +1,60 @@ +Index: bin/modules/installer/scriptitems.pm +=================================================================== +RCS file: /cvs/tools/solenv/bin/modules/installer/scriptitems.pm,v +retrieving revision 1.17 +diff -u -p -r1.17 scriptitems.pm +--- openoffice.org.orig/solenv/bin/modules/installer/scriptitems.pm 24 Feb 2005 16:21:15 -0000 1.17 ++++ openoffice.org/solenv/bin/modules/installer/scriptitems.pm 18 Mar 2005 22:39:42 -0000 +@@ -1356,11 +1356,10 @@ + + if ( ! $installer::globals::languagepack && !$installer::globals::helppack) + { +- $infoline = "ERROR: Removing file $filename from file list.\n"; ++ $infoline = "WARNING: Removing file $filename from file list.\n"; + push( @installer::globals::logfileinfo, $infoline); + +- push(@missingfiles, "ERROR: File not found: $filename\n"); +- $error_occurred = 1; ++ push(@missingfiles, "WARNING: File not found: $filename\n"); + + next; # removing this file from list, if sourcepath is empty + } +@@ -1368,11 +1367,10 @@ + { + if (( $onefile->{'ismultilingual'} ) || ( $styles =~ /\bFORCELANGUAGEPACK\b/ )) + { +- $infoline = "ERROR: Removing file $filename from file list.\n"; ++ $infoline = "WARNING: Removing file $filename from file list.\n"; + push( @installer::globals::logfileinfo, $infoline); + +- push(@missingfiles, "ERROR: File not found: $filename\n"); +- $error_occurred = 1; ++ push(@missingfiles, "WARNING: File not found: $filename\n"); + + next; # removing this file from list, if sourcepath is empty + } +@@ -1390,11 +1388,10 @@ + { + if (( $onefile->{'ismultilingual'} ) || ( $styles =~ /\bFORCEHELPPACK\b/ )) + { +- $infoline = "ERROR: Removing file $filename from file list.\n"; ++ $infoline = "WARNING: Removing file $filename from file list.\n"; + push( @installer::globals::logfileinfo, $infoline); + +- push(@missingfiles, "ERROR: File not found: $filename\n"); +- $error_occurred = 1; ++ push(@missingfiles, "WARNING: File not found: $filename\n"); + + next; # removing this file from list, if sourcepath is empty + } +--- openoffice.org.orig/solenv/bin/modules/installer/simplepackage.pm 2010-07-12 10:27:26.000000000 +0100 ++++ openoffice.org/solenv/bin/modules/installer/simplepackage.pm 2010-07-12 10:27:54.000000000 +0100 +@@ -53,7 +53,7 @@ + ( $installer::globals::packageformat eq "archive" )) + { + $installer::globals::is_simple_packager_project = 1; +- $installer::globals::patch_user_dir = 1; ++ $installer::globals::patch_user_dir = 1; + } + elsif( $installer::globals::packageformat eq "dmg" ) + { diff --git a/SPECS/libreoffice.spec b/SPECS/libreoffice.spec new file mode 100644 index 0000000..abb595a --- /dev/null +++ b/SPECS/libreoffice.spec @@ -0,0 +1,3124 @@ +# download path contains version without the last (fourth) digit +%define libo_version 4.1.3 +# Should contain .alphaX / .betaX, if this is pre-release (actually +# pre-RC) version. The pre-release string is part of tarball file names, +# so we need a way to define it easily at one place. +%define libo_prerelease %{nil} +# rhbz#715152 state vendor +%if 0%{?rhel} +%define vendoroption --with-vendor="Red Hat, Inc." +%define libo_python3 %{nil} +%define libo_python_sitearch %{python_sitearch} +%endif +%if 0%{?fedora} +%define libo_python3 1 +%define libo_python_sitearch %{python3_sitearch} +%define vendoroption --with-vendor="The Fedora Project" +%endif +# rhbz#465664 jar-repacking breaks help by reordering META-INF/MANIFEST.MF +%define __jar_repack %{nil} +# don't worry about whitespace for now +%define _default_patch_flags -s -l +# make it easier to download sources from pre-release site +# %%define source_url http://dev-builds.libreoffice.org/pre-releases/src +%define source_url http://download.documentfoundation.org/libreoffice/src/%{libo_version} +# URL for external projects' tarballs +%define external_url http://dev-www.libreoffice.org/src/ + +# get english only and no-langpacks for a faster smoketest build +# fedpkg compile/install/local/mockbuild does not handle --without ATM, +# so it is necessary to change this to bcond_with to achieve the same +# effect +%bcond_without langpacks + +%if %{with langpacks} +# generated by %%langpack definitions +%global langpack_langs %{nil} +%else +%global langpack_langs en-US +%endif + +Summary: Free Software Productivity Suite +Name: libreoffice +Epoch: 1 +Version: %{libo_version}.2 +Release: 3%{?libo_prerelease}%{?dist} +License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and Artistic and MPLv2.0 +Group: Applications/Productivity +URL: http://www.libreoffice.org/default/ + +Source0: %{source_url}/libreoffice-%{version}%{?libo_prerelease}.tar.xz +Source1: %{source_url}/libreoffice-help-%{version}%{?libo_prerelease}.tar.xz +Source2: %{source_url}/libreoffice-translations-%{version}%{?libo_prerelease}.tar.xz +Source3: http://dev-www.libreoffice.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll +Source4: libreoffice-multiliblauncher.sh +Source5: %{external_url}/0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz +Source6: %{external_url}/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip +Source7: %{external_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz +Source8: %{external_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip +Source9: %{external_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip +%if 0%{?fedora} || 0%{?rhel} >= 7 +#Unfortunately later versions of hsqldb changed the file format, so if we use a later version we loose +#backwards compatability. +Source10: %{external_url}/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip +%else +Source11: %{external_url}/08c85a6d6d793daee14e10e22eefdc4b-mdds_0.8.1.tar.bz2 +Source12: %{external_url}/46e92b68e31e858512b680b3b61dc4c1-mythes-1.2.3.tar.gz +Source13: %{external_url}/32f8e1417a64d3c6f2c727f9053f55ea-redland-1.0.16.tar.gz +Source14: %{external_url}/4ceb9316488b0ea01acf011023cf7fff-raptor2-2.0.9.tar.gz +Source15: %{external_url}/b12c5f9cfdb6b04efce5a4a186b8416b-rasqal-0.9.30.tar.gz +Source16: %{external_url}/dc3d21a3921931096d6e80f6701f6763-libexttextcat-3.4.0.tar.bz2 +Source17: %{external_url}/libcdr-0.0.14.tar.bz2 +Source18: %{external_url}/b85436266b2ac91d351ab5684b181151-libwpg-0.2.2.tar.bz2 +Source19: %{external_url}/a3dcac551fae5ebbec16e844810828c4-libwpd-0.9.9.tar.bz2 +Source20: %{external_url}/46eb0e7f213ad61bd5dee0c494132cb0-libwps-0.2.9.tar.bz2 +Source21: %{external_url}/b2371dc7cf4811c9d32146eec913d296-libcmis-0.3.0.tar.gz +Source22: %{external_url}/48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz +Source23: %{external_url}/libvisio-0.0.31.tar.bz2 +Source24: %{external_url}/861ef15fa0bc018f9ddc932c4ad8b6dd-lcms2-2.4.tar.gz +Source25: %{external_url}/libmspub-0.0.6.tar.bz2 +Source26: %{external_url}/ea2acaf140ae40a87a952caa75184f4d-liborcus-0.5.1.tar.bz2 +Source27: %{external_url}/36271d3fa0d9dec1632029b6d7aac925-liblangtag-0.5.1.tar.bz2 +Source28: %{external_url}/f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2 +Source29: %{external_url}/c48827713e93539dc7285f9e86ffbdc5-harfbuzz-0.9.17.tar.bz2 +Source30: %{external_url}/8473296c671b6e3dd8197f4145e0854b-libodfgen-0.0.2.tar.bz2 +Source31: %{external_url}/libmwaw-0.1.10.tar.bz2 +%endif + +# build tools +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: bc +BuildRequires: binutils +BuildRequires: bison +BuildRequires: desktop-file-utils +BuildRequires: doxygen +BuildRequires: findutils +BuildRequires: flex +BuildRequires: gcc-c++ +BuildRequires: gperf +BuildRequires: icu +BuildRequires: make +BuildRequires: perl(Archive::Zip) +BuildRequires: perl(Digest::MD5) +BuildRequires: zip + +# libs / headers +BuildRequires: GConf2-devel +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: bluez-libs-devel +%else +%ifnarch s390 s390x +BuildRequires: bluez-libs-devel +%endif +%endif +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: boost-devel +BuildRequires: clucene-core-devel +%endif +BuildRequires: cppunit-devel +BuildRequires: cups-devel +BuildRequires: dbus-glib-devel +BuildRequires: evolution-data-server-devel +BuildRequires: expat-devel +BuildRequires: fontpackages-devel +BuildRequires: freetype-devel +%if 0%{?rhel} && 0%{?rhel} < 7 +BuildRequires: gstreamer-devel +BuildRequires: gstreamer-plugins-base-devel +%else +BuildRequires: graphite2-devel +BuildRequires: gstreamer1-devel +BuildRequires: gstreamer1-plugins-base-devel +BuildRequires: harfbuzz-devel +%endif +BuildRequires: gtk2-devel +BuildRequires: hunspell-devel +BuildRequires: hyphen-devel +%if 0%{?fedora} +BuildRequires: kdelibs4-devel +%endif +BuildRequires: libICE-devel +BuildRequires: libXext-devel +BuildRequires: libXinerama-devel +BuildRequires: libXt-devel +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: libcdr-devel +BuildRequires: libcmis-devel >= 0.3.0 +%endif +BuildRequires: libcurl-devel +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: libexttextcat-devel +%endif +BuildRequires: libicu-devel +BuildRequires: libidn-devel +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: libjpeg-turbo-devel +BuildRequires: liblangtag-devel >= 0.4.0 +BuildRequires: libmspub-devel +BuildRequires: libmwaw-devel +BuildRequires: libodfgen-devel +BuildRequires: liborcus-devel >= 0.5.0 +BuildRequires: libvisio-devel +BuildRequires: libwpd-devel +BuildRequires: libwpg-devel +BuildRequires: libwps-devel +%else +BuildRequires: libjpeg-devel +%endif +BuildRequires: libxml2-devel +BuildRequires: libxslt-devel +BuildRequires: lpsolve-devel +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: mdds-devel >= 0.8.1 +%endif +BuildRequires: mesa-libGLU-devel +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: mythes-devel +%endif +BuildRequires: neon-devel +BuildRequires: nss-devel +BuildRequires: openldap-devel +BuildRequires: openssl-devel +BuildRequires: pam-devel +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: poppler-cpp-devel +%endif +BuildRequires: poppler-devel +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: postgresql-devel +%endif +%if 0%{libo_python3} +BuildRequires: python3-devel >= 3.3.0 +%else +BuildRequires: python-devel +%endif +BuildRequires: redland-devel +BuildRequires: sane-backends-devel +BuildRequires: unixODBC-devel +BuildRequires: vigra-devel +BuildRequires: zlib-devel + +# java stuff +BuildRequires: ant +BuildRequires: ant-apache-regexp +%if 0%{?rhel} && 0%{?rhel} < 7 +BuildRequires: jakarta-commons-codec +BuildRequires: jakarta-commons-lang +BuildRequires: apache-tomcat-apis +%else +BuildRequires: apache-commons-codec +BuildRequires: apache-commons-lang +BuildRequires: tomcat-servlet-3.0-api +%endif +BuildRequires: bsh +%if 0%{?rhel} && 0%{?rhel} < 7 +BuildRequires: hsqldb +%endif +BuildRequires: java-devel +BuildRequires: jakarta-commons-httpclient +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: junit +%endif +BuildRequires: pentaho-reporting-flow-engine + +# fonts needed for unit tests +BuildRequires: liberation-mono-fonts >= 1.0 +BuildRequires: liberation-sans-fonts >= 1.0 +BuildRequires: liberation-serif-fonts >= 1.0 + +Requires: %{name}-writer = %{epoch}:%{version}-%{release} +Requires: %{name}-calc = %{epoch}:%{version}-%{release} +Requires: %{name}-impress = %{epoch}:%{version}-%{release} +Requires: %{name}-draw = %{epoch}:%{version}-%{release} +Requires: %{name}-math = %{epoch}:%{version}-%{release} +Requires: %{name}-base = %{epoch}:%{version}-%{release} +Requires: %{name}-emailmerge = %{epoch}:%{version}-%{release} + +Patch1: openoffice.org-2.0.2.rh188467.printingdefaults.patch +Patch2: openoffice.org-2.4.0.ooo86080.unopkg.bodge.patch +Patch3: openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch +Patch4: openoffice.org-3.1.0.oooXXXXX.solenv.allowmissing.patch +Patch5: openoffice.org-3.1.0.ooo101274.opening-a-directory.patch +Patch6: libreoffice-installfix.patch +%if 0%{?rhel} && 0%{?rhel} < 7 +Patch7: libreoffice-rhel6gcj.patch +Patch8: libreoffice-rhel6poppler.patch +Patch9: libreoffice-rhel6langs.patch +Patch10: libreoffice-rhel6limits.patch +Patch11: libreoffice-rhel6glib.patch +%endif +Patch12: 0001-do-not-build-LibreOffice_Test.patch +Patch13: 0001-Resolves-rhbz-968892-force-render-full-grapheme-with.patch +Patch14: 0001-Related-rhbz-968892-discard-impossible-languages-for.patch +Patch15: 0002-Related-rhbz-968892-discard-impossible-languages-for.patch +Patch16: 0001-Resolves-fdo-48835-application-menu-for-LibreOffice.patch +Patch17: 0001-Make-charmap.cxx-compile-with-icu-4.4.patch +Patch18: 0001-select-sheet-menu-as-a-right-click-popup-to-the-prev.patch +Patch19: 0001-Resolves-rhbz-1013480-crash-in-EditLineList-operator.patch +Patch20: 0001-Resolves-rhbz-1015281-crash-on-clicking-custom-anima.patch +Patch21: 0001-Resolves-rhbz-996162-apparent-NULL-bullet-font.patch +Patch22: 0001-fdo-70201-sw-eliminate-no-extent-RSID-only-AUTOFMT-h.patch +Patch23: 0001-WaE-Wstrict-overflow-assuming-signed-overflow-does-n.patch +Patch24: 0001-Related-rhbz-1020712-wrong-default-font-shown-in-edi.patch +Patch25: 0001-Related-rhbz-919070-display-1-means-span-all-display.patch +Patch26: 0001-fdo-67725-unoidl-AggregatingCursor-must-wrap-modules.patch +Patch27: 0001-Resolves-rhbz-1021915-force-menubar-menus-to-be-up-d.patch +Patch28: 0001-fdo-70968-Incorrect-rendering-of-Devanagari-short-i-.patch +Patch29: 0001-resolved-fdo-56209-reviving-FilterFormulaParser.patch + +%define instdir %{_libdir} +%define baseinstdir %{instdir}/libreoffice +%define ureinstdir %{baseinstdir}/ure +%define sdkinstdir %{baseinstdir}/sdk +%define fontname opensymbol + +%description +LibreOffice is an Open Source, community-developed, office productivity suite. +It includes the key desktop applications, such as a word processor, +spreadsheet, presentation manager, formula editor and drawing program, with a +user interface and feature set similar to other office suites. Sophisticated +and flexible, LibreOffice also works transparently with a variety of file +formats, including Microsoft Office File Formats. + +%package core +Summary: Core modules for LibreOffice +Group: Applications/Productivity +Requires: %{name}-%{fontname}-fonts = %{epoch}:%{version}-%{release} +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: liberation-sans-fonts >= 1.0, liberation-serif-fonts >= 1.0, liberation-mono-fonts >= 1.0 +Requires: dejavu-sans-fonts, dejavu-serif-fonts, dejavu-sans-mono-fonts +%if 0%{?fedora} || 0%{?rhel} >= 7 +Requires: google-crosextra-caladea-fonts, google-crosextra-carlito-fonts +%endif +Requires: hyphen-en, hyphen >= 2.4, autocorr-en +%if 0%{?rhel} && 0%{?rhel} < 7 +Requires: hunspell-en +%else +# rhbz#949106 libreoffice-core drags in both openjdk 1.7.0 and 1.8.0 +Requires: java >= 1:1.6 +Requires: hunspell-en-US +%endif +Requires(pre): gtk2 >= 2.9.4 +Requires(post): gtk2 >= 2.9.4 +Requires(preun): gtk2 >= 2.9.4 +Requires(postun): gtk2 >= 2.9.4 +Obsoletes: libreoffice-binfilter < 1:4.0.0.0 +Obsoletes: libreoffice-javafilter < 1:4.1.0.0 +Obsoletes: libreoffice-testtools < 1:3.4.99.1 +Obsoletes: autocorr-eu < 1:4.0.1.2 +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-core%{?_isa} = 1:3.3.0 +Provides: openoffice.org-brand%{?_isa} = 1:3.3.0, broffice.org-brand%{?_isa} = 1:3.3.0 +%endif + +%description core +The shared core libraries and support files for LibreOffice. + +%package pyuno +Summary: Python support for LibreOffice +Group: Development/Libraries +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-writer = %{epoch}:%{version}-%{release} +%if 0%{libo_python3} +Requires: python3 +%else +Requires: python +%endif +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-pyuno%{?_isa} = 1:3.3.0 +%endif + +%description pyuno +Python bindings for the LibreOffice UNO component model. Allows scripts both +external to LibreOffice and within the internal LibreOffice scripting framework +to be written in python. + +%package base +Summary: Database front-end for LibreOffice +Group: Applications/Productivity +Requires: pentaho-reporting-flow-engine +Requires: postgresql-jdbc +%if 0%{?rhel} && 0%{?rhel} < 7 +Requires: hsqldb +%endif +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-calc = %{epoch}:%{version}-%{release} +Obsoletes: %{name}-report-builder < 1:4.1.0.0 +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-base-core%{?_isa} = 1:3.3.0 +Provides: openoffice.org-base%{?_isa} = 1:3.3.0, broffice.org-base%{?_isa} = 1:3.3.0 +Provides: openoffice.org-report-builder%{?_isa} = 1:3.3.0 +%endif + +%description base +GUI database front-end for LibreOffice. Allows creation and management of +databases through a GUI. + +%package bsh +Summary: BeanShell support for LibreOffice +Group: Development/Libraries +Requires: bsh +Requires: %{name}-core = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-bsh%{?_isa} = 1:3.3.0 +%endif + +%description bsh +Support BeanShell scripts in LibreOffice. + +%package rhino +Summary: JavaScript support for LibreOffice +Group: Development/Libraries +Requires: %{name}-core = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-rhino%{?_isa} = 1:3.3.0 +%endif + +%description rhino +Support JavaScript scripts in LibreOffice. + +%package wiki-publisher +Summary: Create Wiki articles on MediaWiki servers with LibreOffice +Group: Applications/Productivity +%if 0%{?rhel} && 0%{?rhel} < 7 +Requires: jakarta-commons-codec, jakarta-commons-httpclient +Requires: jakarta-commons-lang, jakarta-commons-logging +%else +Requires: apache-commons-codec, jakarta-commons-httpclient +Requires: apache-commons-lang, apache-commons-logging +%endif +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-writer = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-wiki-publisher%{?_isa} = 1:3.3.0 +%endif + +%description wiki-publisher +The Wiki Publisher enables you to create Wiki articles on MediaWiki servers +without having to know the syntax of the MediaWiki markup language. Publish +your new and existing documents transparently with writer to a wiki page. + +%package nlpsolver +Summary: Non-linear solver engine for LibreOffice Calc +Group: Applications/Productivity +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-calc = %{epoch}:%{version}-%{release} + +%description nlpsolver +A non-linear solver engine for Calc as an alternative to the default linear +programming model when more complex, nonlinear programming is required. + +%package ogltrans +Summary: 3D OpenGL slide transitions for LibreOffice +Group: Applications/Productivity +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-impress = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-ogltrans%{?_isa} = 1:3.3.0 +%endif + +%description ogltrans +OpenGL Transitions enable 3D slide transitions to be used in LibreOffice. +Requires good quality 3D support for your graphics card for best experience. + +%package presentation-minimizer +Summary: Shrink LibreOffice presentations +Group: Applications/Productivity +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-impress = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-presentation-minimizer%{?_isa} = 1:3.3.0 +%endif + +%description presentation-minimizer +The Presentation Minimizer is used to reduce the file size of the current +presentation. Images will be compressed, and data that is no longer needed will +be removed. + +%package pdfimport +Summary: PDF Importer for LibreOffice Draw +Group: Applications/Productivity +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-draw = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-pdfimport%{?_isa} = 1:3.3.0 +%endif + +%description pdfimport +The PDF Importer imports PDF into drawing documents to preserve layout +and enable basic editing of PDF documents. + +%package %{fontname}-fonts +Summary: LibreOffice dingbats font +Group: User Interface/X +Requires: fontpackages-filesystem +BuildArch: noarch +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-fonts = 1:3.3.0 +Provides: openoffice.org-opensymbol-fonts = 1:3.3.0 +%endif + +%description %{fontname}-fonts +A dingbats font, OpenSymbol, suitable for use by LibreOffice for bullets and +mathematical symbols. + +%package writer +Summary: LibreOffice Word Processor Application +Group: Applications/Productivity +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-writer-core%{?_isa} = 1:3.3.0 +Provides: openoffice.org-writer%{?_isa} = 1:3.3.0, broffice.org-writer%{?_isa} = 1:3.3.0 +%endif + +%description writer +The LibreOffice Word Processor application. + +%package emailmerge +Summary: Email mail-merge component for LibreOffice +Group: Applications/Productivity +Requires: %{name}-writer = %{epoch}:%{version}-%{release} +Requires: %{name}-pyuno = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-emailmerge%{?_isa} = 1:3.3.0 +%endif + +%description emailmerge +Enables the LibreOffice writer module to mail-merge to email. + +%package calc +Summary: LibreOffice Spreadsheet Application +Group: Applications/Productivity +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-calc-core%{?_isa} = 1:3.3.0 +Provides: openoffice.org-calc%{?_isa} = 1:3.3.0, broffice.org-calc%{?_isa} = 1:3.3.0 +%endif + +%description calc +The LibreOffice Spreadsheet application. + +%package draw +Summary: LibreOffice Drawing Application +Group: Applications/Productivity +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-pdfimport = %{epoch}:%{version}-%{release} +Requires: %{name}-graphicfilter = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-draw-core%{?_isa} = 1:3.3.0 +Provides: openoffice.org-draw%{?_isa} = 1:3.3.0, broffice.org-draw%{?_isa} = 1:3.3.0 +%endif + +%description draw +The LibreOffice Drawing Application. + +%package impress +Summary: LibreOffice Presentation Application +Group: Applications/Productivity +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Obsoletes: %{name}-presenter-screen < 2:4.0.0.0-1.beta1 +Provides: %{name}-presenter-screen%{?_isa} = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-impress-core%{?_isa} = 1:3.3.0 +Provides: openoffice.org-impress%{?_isa} = 1:3.3.0, broffice.org-impress%{?_isa} = 1:3.3.0 +Provides: openoffice.org-presenter-screen%{?_isa} = 1:3.3.0 +%endif + +%description impress +The LibreOffice Presentation Application. + +%package math +Summary: LibreOffice Equation Editor Application +Group: Applications/Productivity +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-math-core%{?_isa} = 1:3.3.0 +Provides: openoffice.org-math%{?_isa} = 1:3.3.0, broffice.org-math%{?_isa} = 1:3.3.0 +%endif + +%description math +The LibreOffice Equation Editor Application. + +%package graphicfilter +Summary: LibreOffice Extra Graphic filters +Group: Applications/Productivity +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-graphicfilter%{?_isa} = 1:3.3.0 +%endif + +%description graphicfilter +The graphicfilter module for LibreOffice provides graphic filters, e.g. svg and +flash filters. + +%package xsltfilter +Summary: Optional xsltfilter module for LibreOffice +Group: Applications/Productivity +Requires: %{name}-core = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-xsltfilter%{?_isa} = 1:3.3.0 +%endif + +%description xsltfilter +The xsltfilter module for LibreOffice, provides additional docbook and +xhtml export transforms. Install this to enable docbook export. + +%if 0%{?fedora} || 0%{?rhel} >= 7 +%package postgresql +Summary: PostgreSQL connector for LibreOffice +Group: Applications/Productivity +Requires: %{name}-base = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: postgresql-libs + +%description postgresql +A PostgreSQL connector for the database front-end for LibreOffice. Allows +creation and management of PostgreSQL databases through a GUI. +%endif + +%package ure +Summary: UNO Runtime Environment +Group: Development/Libraries +Requires: unzip, jre >= 1.5.0 +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-ure%{?_isa} = 1:3.3.0 +%endif + +%description ure +UNO is the component model of LibreOffice. UNO offers interoperability between +programming languages, other components models and hardware architectures, +either in process or over process boundaries, in the Intranet as well as in the +Internet. UNO components may be implemented in and accessed from any +programming language for which a UNO implementation (AKA language binding) and +an appropriate bridge or adapter exists + +%package sdk +Summary: Software Development Kit for LibreOffice +Group: Development/Libraries +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: unzip, java-devel +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-sdk%{?_isa} = 1:3.3.0, openoffice.org-devel%{?_isa} = 1:3.3.0 +%endif + +%description sdk +The LibreOffice SDK is an add-on for the LibreOffice office suite. It provides +the necessary tools for programming using the LibreOffice APIs and for creating +extensions (UNO components) for LibreOffice. To set the build environment for +building against the sdk use %{sdkinstdir}/setsdkenv_unix.sh. + +%package sdk-doc +Summary: Software Development Kit documentation for LibreOffice +Group: Documentation +Requires: %{name}-sdk = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-sdk-doc%{?_isa} = 1:3.3.0 +%endif + +%description sdk-doc +This provides documentation for programming using the LibreOffice APIs +and examples of creating extensions (UNO components) for LibreOffice. + +%package headless +Summary: LibreOffice Headless plug-in +Group: Development/Libraries +Requires: %{name}-ure = %{epoch}:%{version}-%{release} +Requires: %{name}-core = %{epoch}:%{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} < 7 +Provides: openoffice.org-headless%{?_isa} = 1:3.3.0 +%endif + +%description headless +A plug-in for LibreOffice that enables it to function without an X server. +It implements the -headless command line option and allows LibreOffice to be +used as a backend server for e.g. document conversion. + +%package glade +Summary: Support for creating LibreOffice dialogs in glade +Group: Development/Libraries +Requires: %{name}-core = %{epoch}:%{version}-%{release} +Requires: glade3-libgladeui + +%description glade +%{name}-glade contains a catalog of LibreOffice-specific widgets for +glade and ui-previewer tool to check the visual appearance of dialogs. + +%if 0%{?fedora} +%package kde +Summary: LibreOffice KDE integration plug-in +Group: Applications/Productivity +Requires: %{name}-core = %{epoch}:%{version}-%{release} + +%description kde +A plug-in for LibreOffice that enables integration into the KDE desktop environment. +%endif + +%if 0%{?_enable_debug_packages} + +%define debug_package %{nil} +%global __debug_package 1 + +%package debuginfo +Summary: Debug information for package %{name} +Group: Development/Debug +AutoReqProv: 0 +Requires: libreoffice-core = %{epoch}:%{version}-%{release} +Requires: libreoffice-gdb-debug-support = %{epoch}:%{version}-%{release} + +%description debuginfo +This package provides debug information for package %{name}. +Debug information is useful when developing applications that use this +package or when debugging this package. + +%files debuginfo -f debugfiles.list + +%package gdb-debug-support +Summary: Additional support for debugging with gdb +Group: Development/Debug +Requires: gdb +AutoReqProv: 0 + +%description gdb-debug-support +This package provides gdb pretty printers for package %{name}. + +%files gdb-debug-support +%{_datadir}/gdb/auto-load%{baseinstdir} +%{_datadir}/libreoffice/gdb + +%endif + +%define _langpack_common() \ +%{baseinstdir}/program/resource/*%{1}.res \ +%{baseinstdir}/share/config/soffice.cfg/modules/*/ui/res/%{1} \ +%{baseinstdir}/share/config/soffice.cfg/*/ui/res/%{1} \ +%{baseinstdir}/share/template/%{1} \ +%{baseinstdir}/share/registry/Langpack-%{1}.xcd \ +%{baseinstdir}/share/registry/res/registry_%{1}.xcd \ +%{baseinstdir}/share/registry/res/fcfg_langpack_%{1}.xcd \ +%{nil} + +# Defines a language pack subpackage. +# +# It's necessary to define language code (-l) and language name (-n). +# Additionally, it's possible +# * to require autocorr, hunspell, hyphen or mythes package or font for +# given language, +# * to obsolete openoffice.org-langpack package, +# * to provide libreoffice-langpack-loc package, where loc is glibc +# locale--this is necessary for yum to pick it automatically, +# * to require other, unrelated, packages, +# * to specify file serving as file list. +# For these, lower case character argument takes an argument specifying +# language, upper case character argument uses language from -l. +# +# All remaining arguments are considered to be files and added to the file +# list. +# +# Aa: autocorr dependency +# c: additional config file (just the name stem) +# E the package does not contain any files (i.e., has empty filelist) +# Ff: font language dependency +# Hh: hunspell dependency +# i: additional language added to this package +# L: internal (LibreOffice) language code, used in file names +# l: language code, e.g., cs +# Mm: mythes dependency +# n: language name, e.g., Czech +# Oo: Obsoletes: of openoffice.org-langpack +# Vv: Very archaic Obsoletes: of openoffice.org-langpack +# Ww: Archaic Obsoletes: of openoffice.org2-langpack +# p: Provides: of libreoffice-langpack +# r: comma-separated list of additional requires +# S:s: script classification (cjk, ctl). -S is only a marker, as it does +# not add any .xcd into the package (the file does not exist for at +# least one CTL-using locale, si) +# T has help files +# Xx: has autotext definitions +# Yy: hyphen dependency +# +# Example: +# libreoffice-langpack-cs: langpack for Czech lang. requiring hyphen-cs, +# autocorr-cs, mythes-cs-CZ and suitable font, obsoleting +# openoffice.org-langpack-cs_CZ: +# %%langpack -l cs -n Czech -H -A -m cs-CZ +# b de g jk q tu z BCD G IJK N PQR U Z0123456789 +%define langpack(Aa:c:EFf:Hh:i:L:l:Mm:n:p:Oo:r:S:s:TVv:Ww:Xx:Yy:) \ +%define project LibreOffice \ +%define lang %{-l:%{-l*}}%{!-l:%{error:Language code not defined}} \ +%define _langpack_lang %{-L:%{-L*}}%{!-L:%{lang}} \ +%define pkgname langpack-%{lang} \ +%define langname %{-n:%{-n*}}%{!-n:%{error:Language name not defined}} \ +\ +%global langpack_langs %{langpack_langs} %{_langpack_lang} %{-i:%{-i*}} \ +\ +%package %{pkgname} \ +Summary: %{langname} language pack for %{project} \ +Group: Applications/Productivity \ +Requires: %{name}-core = %{epoch}:%{version}-%{release} \ +%{-a:Requires: autocorr-%{-a*}}%{!-a:%{-A:Requires: autocorr-%{lang}}} \ +%{-f:Requires: font(:lang=%{-f*})}%{!-f:%{-F:Requires: font(:lang=%{lang})}} \ +%{-h:Requires: hunspell-%{-h*}}%{!-h:%{-H:Requires: hunspell-%{lang}}} \ +%{-m:Requires: mythes-%{-m*}}%{!-m:%{-M:Requires: mythes-%{lang}}} \ +%{-y:Requires: hyphen-%{-y*}}%{!-y:%{-Y:Requires: hyphen-%{lang}}} \ +%{-r:Requires: %{-r*}} \ +%define obs openoffice.org-langpack \ +%define obsv 1:3.3.1 \ +%define aobs openoffice.org2-langpack \ +%define aobsv 1:3.0.0 \ +%define vaobs openoffice.org-langpack \ +%define vaobsv 1:2.0.3 \ +%{-o:Obsoletes: %{obs}-%{-o*} < %{obsv}}%{!-o:%{-O:Obsoletes: %{obs}-%{lang} < %{obsv}}} \ +%{-w:Obsoletes: %{aobs}-%{-x*} < %{aobsv}}%{!-x:%{-W:Obsoletes: %{aobs}-%{lang} < %{aobsv}}} \ +%{-v:Obsoletes: %{vaobs}-%{-v*} < %{vaobsv}}%{!-v:%{-V:Obsoletes: %{vaobs}-%{lang} < %{vaobsv}}} \ +%{-p:Provides: %{name}-langpack-%{-p*}} \ +\ +%description %{pkgname} \ +Provides additional %{langname} translations and resources for %{project}. \ +\ +%files %{pkgname} \ +%{!-E: \ +%define autotextdir %{baseinstdir}/share/autotext \ +%{expand:%%_langpack_common %{_langpack_lang}} \ +%{-x:%{autotextdir}/%{-x*}}%{!-x:%{-X:%{autotextdir}/%{_langpack_lang}}} \ +%{-c:%{baseinstdir}/share/registry/%{-c*}.xcd} \ +%{-s:%{baseinstdir}/share/registry/%{-s*}_%{_langpack_lang}.xcd} \ +%{-T: \ +%docdir %{baseinstdir}/help/%{_langpack_lang} \ +%{baseinstdir}/help/%{_langpack_lang} \ +} \ +%{-i:%{expand:%%_langpack_common %{-i*}}} \ +} \ +%{nil} + +# Defines an auto-correction subpackage. +# +# i: add autocorrections from additional language +# l: language code +# n: language name +# L the filename does not contain country code +# +# All remaining arguments are considered to be files and added to the file +# list. +%define autocorr(i:Ll:n:) \ +%define lang %{-l:%{-l*}}%{!-l:%{error:Language code not defined}} \ +%define pkgname autocorr-%{lang} \ +%define langname %{-n:%{-n*}}%{!-n:%{error:Language name not defined}} \ +\ +%package -n %{pkgname} \ +Summary: %{langname} auto-correction rules \ +Group: Applications/Text \ +BuildArch: noarch \ +\ +%description -n %{pkgname} \ +Rules for auto-correcting common %{langname} typing errors. \ +\ +%files -n %{pkgname} \ +%doc solver/unxlng*/bin/ure/LICENSE \ +%dir %{_datadir}/autocorr \ +%{-L:%{_datadir}/autocorr/acor_%{lang}.dat} \ +%{!-L:%{_datadir}/autocorr/acor_%{lang}-*.dat} \ +%{-i:%{_datadir}/autocorr/acor_%{-i*}-*.dat} \ +%{nil} + +%if %{with langpacks} + +%langpack -l af -n Afrikaans -F -H -Y -A -o af_ZA -V -w af_ZA +%langpack -l ar -n Arabic -F -H -s ctl -O -W +%langpack -l as -n Assamese -F -H -Y -o as_IN -w as_IN +%langpack -l bg -n Bulgarian -F -H -Y -M -A -T -X -o bg_BG -V -w bg_BG +%langpack -l bn -n Bengali -F -H -Y -T -O -v bn_IN -W +%if 0%{?fedora} || 0%{?rhel} >= 7 +%langpack -l br -n Breton -F -H +%endif +%langpack -l ca -n Catalan -F -H -Y -M -A -T -o ca_ES -V -w ca_ES +%langpack -l cs -n Czech -F -H -Y -M -A -T -X -o cs_CZ -V -w cs_CZ +%langpack -l cy -n Welsh -F -H -Y -o cy_GB -V -w cy_GB +%langpack -l da -n Danish -F -H -Y -M -A -T -X -o da_DK -V -w da_DK +%langpack -l de -n German -F -H -Y -M -A -T -X -O -W +%langpack -l dz -n Dzongkha -F -s ctl -T -O +%langpack -l el -n Greek -F -H -Y -M -T -o el_GR -V -w el_GR +%langpack -l en -n English -F -H -Y -M -A -E -L en-US -O +%langpack -l es -n Spanish -F -H -Y -M -A -T -X -O -W +%langpack -l et -n Estonian -F -H -Y -T -o et_EE -V -w et_EE +%langpack -l eu -n Basque -F -H -Y -T -o eu_ES -V -w eu_ES +%if 0%{?fedora} || 0%{?rhel} >= 7 +%langpack -l fa -n Farsi -A -H -Y -s ctl +%endif +%if 0%{?rhel} && 0%{?rhel} < 7 +%langpack -l fi -n Finnish -F -A -T -o fi_FI -V -w fi_FI +%else +%langpack -l fi -n Finnish -F -r libreoffice-voikko -A -T -o fi_FI -V -w fi_FI +%endif +%langpack -l fr -n French -F -H -Y -M -A -T -X -O -W +%langpack -l ga -n Irish -F -H -Y -M -A -o ga_IE -w ga_IE +%langpack -l gl -n Galician -F -H -Y -T -o gl_ES -V -w gl_ES +%langpack -l gu -n Gujarati -F -H -Y -s ctl -o gu_IN -w gu_IN +%langpack -l he -n Hebrew -F -H -s ctl -o he_IL -V -w he_IL +%langpack -l hi -n Hindi -F -H -Y -s ctl -T -o hi_IN -v hi-IN -w hi_IN +%langpack -l hr -n Croatian -F -H -Y -A -o hr_HR -V -w hr_HR +%langpack -l hu -n Hungarian -F -H -Y -M -A -T -X -o hu_HU -V -w hu_HU +%langpack -l it -n Italian -F -H -Y -M -A -T -X -O -W +%langpack -l ja -n Japanese -F -A -s cjk -T -X -o ja_JP -V -w ja_JP +%if 0%{?fedora} || 0%{?rhel} >= 7 +%langpack -l kk -n Kazakh -F -H +%endif +%langpack -l kn -n Kannada -F -H -Y -o kn_IN -w ka_IN +%langpack -l ko -n Korean -F -H -A -s cjk -T -c korea -X -o ko_KR -V -w ko_KR +%langpack -l lt -n Lithuanian -F -H -Y -A -o lt_LT -V -w lt_LT +%if 0%{?fedora} || 0%{?rhel} >= 7 +%langpack -l lv -n Latvian -F -H -Y -M +%endif +%langpack -l mai -n Maithili -F -o mai_IN +%if 0%{?rhel} && 0%{?rhel} < 7 +%langpack -l ms -n Malay -F -H +%endif +%langpack -l ml -n Malayalam -F -H -Y -o ml_IN -w ml_IN +%langpack -l mr -n Marathi -F -H -Y -o mr_IN -w mr_IN +%langpack -l nb -n Bokmal -F -H -Y -M -T -o nb_NO -V -w nb_NO +%langpack -l nl -n Dutch -F -H -Y -M -A -T -X -O -W +%langpack -l nn -n Nynorsk -F -H -Y -M -T -o nn_NO -V -w nn_NO +%define langpack_lang Southern Ndebele +%langpack -l nr -n %{langpack_lang} -F -H -o nr_ZA +%define langpack_lang Northern Sotho +%langpack -l nso -n %{langpack_lang} -F -H -o nso_ZA -w nso_ZA +%langpack -l or -n Oriya -F -H -Y -s ctl -o or_IN -w or_IN +%langpack -l pa -n Punjabi -F -H -Y -s ctl -L pa-IN -O -v pa_IN -w pa_IN +%langpack -l pl -n Polish -F -H -Y -M -A -T -X -o pl_PL -V -w pl_PL +%define langpack_lang Brazilian Portuguese +%langpack -l pt-BR -n %{langpack_lang} -f pt -h pt -y pt -m pt -a pt -p pt_BR -T -X -o pt_BR -V -w pt_BR +%langpack -l pt-PT -n Portuguese -f pt -h pt -y pt -m pt -a pt -p pt_PT -T -L pt -x pt -o pt_PT -v pt -W +%langpack -l ro -n Romanian -A -F -H -Y -M -O +%langpack -l ru -n Russian -F -H -Y -M -A -T -X -O -W +%if 0%{?fedora} || 0%{?rhel} >= 7 +%langpack -l si -n Sinhalese -F -H -S ctl -T -O +%endif +%langpack -l sk -n Slovak -F -H -Y -M -A -T -X -o sk_SK -V -w sk_SK +%langpack -l sl -n Slovenian -F -H -Y -M -A -T -X -o sl_SI -V -w sl_SI +%{baseinstdir}/share/wordbook/sl.dic + +#rhbz#452379 clump serbian translations together +%langpack -l sr -n Serbian -F -H -Y -A -i sh -O -v sr_CS -w sr_CS +%langpack -l ss -n Swati -F -H -o ss_ZA +%define langpack_lang Southern Sotho +%langpack -l st -n %{langpack_lang} -F -H -o st_ZA +%langpack -l sv -n Swedish -F -H -Y -M -A -T -X -O -W +%langpack -l ta -n Tamil -F -H -Y -s ctl -o ta_IN -w ta_IN +%langpack -l te -n Telugu -F -H -Y -o te_IN -w te_IN +%langpack -l th -n Thai -F -H -s ctl -c ctlseqcheck_th -o th_TH -V -w th_TH +%langpack -l tn -n Tswana -F -H -o tn_ZA -V -w tn_ZA +%langpack -l tr -n Turkish -F -A -T -X -o tr_TR -V -W +%langpack -l ts -n Tsonga -F -H -o ts_ZA -V -w ts_ZA +%langpack -l uk -n Ukrainian -F -H -Y -M -T -O +%if 0%{?rhel} && 0%{?rhel} < 7 +%langpack -l ur -n Urdu -F -H -O -W +%endif +%langpack -l ve -n Venda -F -H -o ve_ZA +%langpack -l xh -n Xhosa -F -H -o xh_ZA +%define langpack_lang Simplified Chinese +%langpack -l zh-Hans -n %{langpack_lang} -f zh-cn -a zh -p zh_CN -s cjk -T -L zh-CN -x zh-CN -o zh_CN -v zh-CN -w zh_CN +%define langpack_lang Traditional Chinese +%langpack -l zh-Hant -n %{langpack_lang} -f zh-tw -a zh -p zh_TW -s cjk -T -L zh-TW -x zh-TW -o zh_TW -v zh-TW -w zh_TW +%langpack -l zu -n Zulu -F -H -Y -o zu_ZA -V -w zu_ZA +%undefine langpack_lang + +%endif + +%autocorr -l en -n English + +%if %{with langpacks} + +%autocorr -l af -n Afrikaans +%autocorr -l bg -n Bulgarian +%autocorr -l ca -n Catalan -L +%autocorr -l cs -n Czech +%autocorr -l da -n Danish +%autocorr -l de -n German +%autocorr -l es -n Spanish +%autocorr -l fa -n Farsi +%autocorr -l fi -n Finnish +%autocorr -l fr -n French +%autocorr -l ga -n Irish +%autocorr -l hr -n Croatian +%autocorr -l hu -n Hungarian +%autocorr -l is -n Icelandic +%autocorr -l it -n Italian +%autocorr -l ja -n Japanese +%autocorr -l ko -n Korean +%autocorr -l lb -n Luxembourgish +%autocorr -l lt -n Lithuanian +%autocorr -l mn -n Mongolian +%autocorr -l nl -n Dutch +%autocorr -l pl -n Polish +%autocorr -l pt -n Portuguese +%autocorr -l ro -n Romanian +%autocorr -l ru -n Russian +%autocorr -l sk -n Slovak +%autocorr -l sl -n Slovenian +#rhbz#452379 clump serbian autocorrections together +%autocorr -l sr -n Serbian -i sh +%autocorr -l sv -n Swedish +%autocorr -l tr -n Turkish +%autocorr -l vi -n Vietnamese +%autocorr -l zh -n Chinese + +%endif + +%define make_autocorr_aliases(l:) \ +%{?-l: \ +for lang in %{*}; do \ + ln -sf acor_%{-l*}.dat acor_$lang.dat \ +done \ +} \ +%{!?-l:%{error:-l must be present}} + +%prep +%setup -q -n %{name}-%{version}%{?libo_prerelease} -b 1 -b 2 +rm -rf git-hooks */git-hooks +#Customize Palette to remove Sun colours and add Red Hat colours +(head -n -1 extras/source/palettes/standard.soc && \ + echo -e ' + + + + ' && \ + tail -n 1 extras/source/palettes/standard.soc) > redhat.soc +mv -f redhat.soc extras/source/palettes/standard.soc +%patch1 -p1 +%patch2 -p1 -b .ooo86080.unopkg.bodge.patch +%patch3 -p1 -b .ooo88341.sc.verticalboxes.patch +%patch4 -p1 -b .oooXXXXX.solenv.allowmissing.patch +%patch5 -p1 -b .ooo101274.opening-a-directory.patch +%patch6 -p1 -b .libreoffice-installfix.patch +%if 0%{?rhel} && 0%{?rhel} < 7 +%patch7 -p1 -b .rhel6gcj.patch +%patch8 -p1 -b .rhel6poppler.patch +%patch9 -p1 -b .rhel6langs.patch +%patch10 -p1 -b .rhel6limits.patch +%patch11 -p1 -b .rhel6glib.patch +%endif +%patch12 -p1 -b .do-not-build-LibreOffice_Test.patch +%patch13 -p1 -b .rhbz-968892-force-render-full-grapheme-with.patch +%patch14 -p1 -b .rhbz-968892-discard-impossible-languages-for.patch +%patch15 -p1 -b .rhbz-968892-discard-impossible-languages-for.patch +%patch16 -p1 -b .fdo-48835-application-menu-for-LibreOffice.patch +%patch17 -p1 -b .Make-charmap.cxx-compile-with-icu-4.4.patch +%patch18 -p1 -b .select-sheet-menu-as-a-right-click-popup-to-the-prev.patch +%patch19 -p1 -b .rhbz-1013480-crash-in-EditLineList-operator.patch +%patch20 -p1 -b .rhbz-1015281-crash-on-clicking-custom-anima.patch +%patch21 -p1 -b .rhbz-996162-apparent-NULL-bullet-font.patch +%patch22 -p1 -b .fdo-70201-sw-eliminate-no-extent-RSID-only-AUTOFMT-h.patch +%patch23 -p1 -b .WaE-Wstrict-overflow-assuming-signed-overflow-does-n.patch +%patch24 -p1 -b .rhbz-1020712-wrong-default-font-shown-in-edi.patch +%patch25 -p1 -b .rhbz-919070-display-1-means-span-all-display.patch +%patch26 -p1 -b .fdo-67725-unoidl-AggregatingCursor-must-wrap-modules.patch +%patch27 -p1 -b .rhbz-1021915-force-menubar-menus-to-be-up-d.patch +%patch28 -p1 -b .fdo-70968-Incorrect-rendering-of-Devanagari-short-i-.patch +%patch29 -p1 -b .resolved-fdo-56209-reviving-FilterFormulaParser.patch + +# TODO: check this +# these are horribly incomplete--empty translations and copied english +# strings with spattering of translated strings +rm -rf translations/source/{gu,he,hr}/helpcontent2 + +%if 0%{?rhel} && 0%{?rhel} < 7 +cp -r translations/source/en-GB translations/source/ms +cp -r translations/source/en-GB translations/source/ur +%endif + +%build +echo build start time is `date`, diskspace: `df -h . | tail -n 1` +echo building localizations: %{langpack_langs} +#don't build localized helps which aren't translated +POORHELPS=`ls -d translations/source/*/helpcontent2 translations/source/*|cut -f 3 -d /|sort|uniq -u|xargs` +#don't build localized helps which are poorly translated +POORHELPS="$POORHELPS `grep 'msgstr .Working with Documents' translations/source/*/helpcontent2/source/text/swriter/guide.po| cut -f 3 -d / | xargs`" +# path to external tarballs +EXTSRCDIR=`dirname %{SOURCE0}` + +%if 0%{?fedora} +# KDE bits +export QT4DIR=%{_qt4_prefix} +export KDE4DIR=%{_kde4_prefix} +export PATH=$QT4DIR/bin:$PATH +%endif + +#use the RPM_OPT_FLAGS but remove the OOo overridden ones +for i in $RPM_OPT_FLAGS; do + case "$i" in + -pipe|-Wall|-g|-fexceptions) continue;; + esac + ARCH_FLAGS="$ARCH_FLAGS $i" +done +export ARCH_FLAGS +export CFLAGS=$ARCH_FLAGS +export CXXFLAGS=$ARCH_FLAGS + +%if 0%{?rhel} +%if 0%{?rhel} < 7 +%define distrooptions --disable-graphite --without-system-mythes --without-system-mdds --without-junit --without-system-redland --without-system-libexttextcat --without-system-libcdr --without-system-libwps --without-system-libwpd --without-system-libwpg --without-system-libcmis --without-system-clucene --without-system-libvisio --without-system-lcms2 --without-system-libmspub --without-system-orcus --without-system-liblangtag --without-system-boost --without-system-libodfgen --without-system-libmwaw --without-system-harfbuzz --enable-gstreamer-0-10 --disable-gstreamer --disable-postgresql-sdbc --with-servlet-api-jar=/usr/share/java/apache-tomcat-apis/tomcat-servlet2.5-api.jar --enable-python=system --with-system-hsqldb +%ifarch s390 s390x +%define archoptions --disable-sdremote-bluetooth +%endif +%else +%define distrooptions --without-system-hsqldb --disable-gstreamer-0-10 --enable-gstreamer --with-system-mythes --enable-python=system --with-servlet-api-jar=/usr/share/java/tomcat-servlet-api.jar +%endif +%else +%define distrooptions --without-system-hsqldb --enable-kde4 --disable-gstreamer-0-10 --enable-gstreamer --with-system-mythes --with-servlet-api-jar=/usr/share/java/tomcat-servlet-api.jar %{?_smp_mflags:--with-parallelism=%{_smp_mflags}} +%endif + +%if %{with langpacks} +%define with_lang --with-lang='%{langpack_langs}' +%endif + +%if ! 0%{libo_python3} +export PYTHON=%{_bindir}/python +%if 0%{?fedora} || 0%{?rhel} >= 7 +export PYTHON_CFLAGS=`pkg-config --cflags python` +export PYTHON_LIBS=`pkg-config --libs python` +%else +export PYTHON_CFLAGS=`python-config --cflags python` +export PYTHON_LIBS=`python-config --libs python` +%endif +%endif + +# TODO: do we still need this? Perhaps some old patch touches +# configure.ac? +aclocal -I m4 +autoconf +# avoid running autogen.sh on make +touch autogen.lastrun +%configure \ + %vendoroption \ + %{?with_lang} \ + --disable-ccache \ + --disable-fetch-external \ + --disable-gnome-vfs \ + --enable-dbus \ + --enable-evolution2 \ + --enable-ext-nlpsolver \ + --enable-ext-presenter-minimizer \ + --enable-ext-wiki-publisher \ + --enable-lockdown \ + --enable-release-build \ + --enable-scripting-beanshell \ + --enable-scripting-javascript \ + --enable-symbols \ + --enable-vba \ + --with-build-version="%{version}-%{release}" \ + --with-external-dict-dir=/usr/share/myspell \ + --with-external-tar="$EXTSRCDIR" \ + --with-help \ + --with-system-dicts \ + --with-system-libs \ + --without-afms \ + --without-fonts \ + --without-ppds \ + --without-system-npapi-headers \ + %{distrooptions} \ + %{archoptions} + +make VERBOSE=true + +#generate the icons and mime type stuff +export DESTDIR=../output +export KDEMAINDIR=/usr +export GNOMEDIR=/usr +export GNOME_MIME_THEME=hicolor +# TODO use empty variables? Should make the renaming hacks in %%install +# unnecessary. +. ./bin/get_config_variables PRODUCTVERSIONSHORT PRODUCTVERSION WORKDIR +cd $WORKDIR/CustomTarget/sysui/share/libreoffice +./create_tree.sh + +echo build end time is `date`, diskspace: `df -h . | tail -n 1` + + +%install +# TODO investigate use of make distro-pack-install +#figure out the icon version +. ./bin/get_config_variables PRODUCTVERSIONSHORT PRODUCTVERSION SRCDIR WORKDIR +export PRODUCTVERSIONSHORT PRODUCTVERSION + +# installation + +mkdir -p $RPM_BUILD_ROOT/%{instdir} +if ! make instsetoo_native PKGFORMAT=installed EPM=not-used-but-must-be-set; then + echo - ---dump log start--- + cat $ WORKDIR/installation/LibreOffice/installed/logging/en-US/log_*_en-US.log + echo - ---dump log end--- + echo - ---dump log start -- SDK--- + cat $ WORKDIR/installation/LibreOffice_SDK/installed/logging/en-US/log_*_en-US.log + echo - ---dump log end -- SDK--- + echo - ---dump log start -- languagepacks--- + cat $ WORKDIR/installation/LibreOffice_languagepack/installed/logging/en-US/log_*_en-US.log + echo - ---dump log end -- languagepacks--- + exit 1 +fi +mkdir -p $RPM_BUILD_ROOT/%{baseinstdir} +mv $WORKDIR/installation/LibreOffice/installed/install/en-US/* $RPM_BUILD_ROOT/%{baseinstdir} +%if %{with langpacks} +for langpack in $WORKDIR/installation/LibreOffice_languagepack/installed/install/*; do + [ `basename $langpack` = log ] && continue + cp -rp $langpack/* $RPM_BUILD_ROOT/%{baseinstdir} + rm -rf $langpack +done +%endif +mv $WORKDIR/installation/LibreOffice_SDK/installed/install/en-US/sdk $RPM_BUILD_ROOT/%{sdkinstdir} +chmod -R +w $RPM_BUILD_ROOT/%{baseinstdir} +rm -f $RPM_BUILD_ROOT/%{baseinstdir}/program/classes/smoketest.jar + +# postprocessing and tweaks + +# The installer currently sets UserInstallation to +# $ORIGIN/../libreoffice/4, which is of course total nonsense. Because I +# have no inclination to crawl through mountains of perl code to figure out +# where it comes from, I am just going to replace it by a sensible +# value here. +sed -i -e '/UserInstallation/s@\$ORIGIN/..@$SYSUSERCONFIG@' $RPM_BUILD_ROOT/%{baseinstdir}/program/bootstraprc + +#configure sdk +pushd $RPM_BUILD_ROOT/%{sdkinstdir} + sed -e "s,@OO_SDK_NAME@,sdk," \ + -e "s,@OO_SDK_HOME@,%{sdkinstdir}," \ + -e "s,@OFFICE_HOME@,%{baseinstdir}," \ + -e "s,@OO_SDK_URE_HOME@,%{ureinstdir}," \ + -e "s,@OO_SDK_MAKE_HOME@,/usr/bin," \ + -e "s,@OO_SDK_ZIP_HOME@,/usr/bin," \ + -e "s,@OO_SDK_CPP_HOME@,/usr/bin," \ + -e "s,@OO_SDK_CC_55_OR_HIGHER@,," \ + -e "s,@OO_SDK_JAVA_HOME@,$JAVA_HOME," \ + -e "s,@OO_SDK_OUTPUT_DIR@,\$HOME," \ + -e "s,@SDK_AUTO_DEPLOYMENT@,NO," \ + setsdkenv_unix.sh.in > setsdkenv_unix.sh + chmod 755 setsdkenv_unix.sh + # we don't want to install the input file + rm -f setsdkenv_unix.sh.in +# TODO: is this still necessary? +#fix permissions + find examples -type f -exec chmod -x {} \; +popd + +#ensure a template dir for each lang +pushd $RPM_BUILD_ROOT/%{baseinstdir}/share/template +for I in %{langpack_langs}; do + mkdir -p $I +done +popd + +#Set some aliases to canonical autocorrect language files for locales with matching languages +pushd $RPM_BUILD_ROOT/%{baseinstdir}/share/autocorr + +%make_autocorr_aliases -l en-GB en-AG en-AU en-BS en-BW en-BZ en-CA en-DK en-GH en-HK en-IE en-IN en-JM en-NG en-NZ en-SG en-TT +%make_autocorr_aliases -l en-US en-PH +#en-ZA exists and has a good autocorrect file with two or three extras that make sense for +#neighbouring english speaking territories +%make_autocorr_aliases -l en-ZA en-NA en-ZW +%if %{with langpacks} +%make_autocorr_aliases -l af-ZA af-NA +%make_autocorr_aliases -l de-DE de-AT de-BE de-CH de-LI de-LU +%make_autocorr_aliases -l es-ES es-AR es-BO es-CL es-CO es-CR es-CU es-DO es-EC es-GT es-HN es-MX es-NI es-PA es-PE es-PR es-PY es-SV es-US es-UY es-VE +%make_autocorr_aliases -l fr-FR fr-BE fr-CA fr-CH fr-LU fr-MC +%make_autocorr_aliases -l it-IT it-CH +%make_autocorr_aliases -l nl-NL nl-AW +%make_autocorr_aliases -l sv-SE sv-FI +%else +rm -f acor_[a-df-z]*.dat acor_e[su]*.dat +%endif +popd +#rhbz#484055 make these shared across multiple applications +mkdir -p $RPM_BUILD_ROOT/%{_datadir} +mv -f $RPM_BUILD_ROOT/%{baseinstdir}/share/autocorr $RPM_BUILD_ROOT/%{_datadir}/autocorr +chmod 755 $RPM_BUILD_ROOT/%{_datadir}/autocorr + +#remove it in case we didn't build with gcj +rm -f $RPM_BUILD_ROOT/%{baseinstdir}/program/classes/sandbox.jar + +#remove dummy .dat files +rm -f $RPM_BUILD_ROOT/%{baseinstdir}/program/root?.dat + +#set standard permissions for rpmlint +find $RPM_BUILD_ROOT/%{baseinstdir} -exec chmod +w {} \; +find $RPM_BUILD_ROOT/%{baseinstdir} -type d -exec chmod 0755 {} \; + +# move python bits into site-packages +mkdir -p $RPM_BUILD_ROOT/%{libo_python_sitearch} +pushd $RPM_BUILD_ROOT/%{libo_python_sitearch} +echo "import sys, os" > uno.py +echo "sys.path.append('%{baseinstdir}/program')" >> uno.py +echo "os.putenv('URE_BOOTSTRAP', 'vnd.sun.star.pathname:%{baseinstdir}/program/fundamentalrc')" >> uno.py +cat $RPM_BUILD_ROOT/%{baseinstdir}/program/uno.py >> uno.py +rm -f $RPM_BUILD_ROOT/%{baseinstdir}/program/uno.py* +mv -f $RPM_BUILD_ROOT/%{baseinstdir}/program/unohelper.py* . +popd + +# rhbz#477435 package opensymbol separately +pushd $RPM_BUILD_ROOT/%{baseinstdir}/share/fonts/truetype +install -d -m 0755 %{buildroot}%{_fontdir} +install -p -m 0644 *.ttf %{buildroot}%{_fontdir} +popd +rm -rf $RPM_BUILD_ROOT/%{baseinstdir}/share/fonts + +#ensure that no sneaky un-prelinkable, un-fpic or non executable shared libs +#have snuck through +pic=0 +executable=0 +for foo in `find $RPM_BUILD_ROOT/%{instdir} -name "*" -exec file {} \;| grep ": ELF" | cut -d: -f 1` ; do + chmod +wx $foo + ls -asl $foo + result=`readelf -d $foo | grep TEXTREL` || true + if [ "$result" != "" ]; then + echo "TEXTREL Warning: $foo is b0rked (-fpic missing)" + pic=1 + fi + result=`readelf -l $foo | grep GNU_STACK | grep RWE` || true + if [ "$result" != "" ]; then + echo "GNU_STACK Warning: $foo is b0rked (-noexecstack missing)" + executable=1 + fi +done +if [ $pic == 1 ]; then false; fi +if [ $executable == 1 ]; then false; fi + +#make up some /usr/bin scripts +mkdir -p $RPM_BUILD_ROOT/%{_bindir} + +echo \#\!/bin/sh > $RPM_BUILD_ROOT/%{_bindir}/ooffice +echo exec libreoffice \"\$@\" >> $RPM_BUILD_ROOT/%{_bindir}/ooffice +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/ooffice + +echo \#\!/bin/sh > $RPM_BUILD_ROOT/%{_bindir}/ooviewdoc +echo exec libreoffice --view \"\$@\" >> $RPM_BUILD_ROOT/%{_bindir}/ooviewdoc +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/ooviewdoc + +echo \#\!/bin/sh > $RPM_BUILD_ROOT/%{_bindir}/oowriter +echo exec libreoffice --writer \"\$@\" >> $RPM_BUILD_ROOT/%{_bindir}/oowriter +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/oowriter + +echo \#\!/bin/sh > $RPM_BUILD_ROOT/%{_bindir}/oocalc +echo exec libreoffice --calc \"\$@\" >> $RPM_BUILD_ROOT/%{_bindir}/oocalc +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/oocalc + +echo \#\!/bin/sh > $RPM_BUILD_ROOT/%{_bindir}/ooimpress +echo exec libreoffice --impress \"\$@\" >> $RPM_BUILD_ROOT/%{_bindir}/ooimpress +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/ooimpress + +echo \#\!/bin/sh > $RPM_BUILD_ROOT/%{_bindir}/oodraw +echo exec libreoffice --draw \"\$@\" >> $RPM_BUILD_ROOT/%{_bindir}/oodraw +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/oodraw + +echo \#\!/bin/sh > $RPM_BUILD_ROOT/%{_bindir}/oomath +echo exec libreoffice --math \"\$@\" >> $RPM_BUILD_ROOT/%{_bindir}/oomath +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/oomath + +echo \#\!/bin/sh > $RPM_BUILD_ROOT/%{_bindir}/oobase +echo exec libreoffice --base \"\$@\" >> $RPM_BUILD_ROOT/%{_bindir}/oobase +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/oobase + +cp -f %{SOURCE4} $RPM_BUILD_ROOT/%{_bindir}/unopkg +sed -i -e "s/LAUNCHER/unopkg/g" $RPM_BUILD_ROOT/%{_bindir}/unopkg +sed -i -e "s/BRAND/libreoffice/g" $RPM_BUILD_ROOT/%{_bindir}/unopkg +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/unopkg + +cp -f %{SOURCE4} $RPM_BUILD_ROOT/%{_bindir}/libreoffice +sed -i -e "s/LAUNCHER/soffice/g" $RPM_BUILD_ROOT/%{_bindir}/libreoffice +sed -i -e "s/BRAND/libreoffice/g" $RPM_BUILD_ROOT/%{_bindir}/libreoffice +chmod a+x $RPM_BUILD_ROOT/%{_bindir}/libreoffice + +pushd $RPM_BUILD_ROOT/%{_bindir} +# rhbz#499474 provide a /usr/bin/soffice for .recently-used.xbel +ln -s %{baseinstdir}/program/soffice soffice +# rhbz#499474 provide a /usr/bin/openoffice.org for backwards compat +ln -s libreoffice openoffice.org +%if 0%{?rhel} && 0%{?rhel} < 7 +# rhbz#833512 provide a /usr/bin/openoffice.org-1.9, etc. for backwards compat +ln -s libreoffice openoffice.org-2.0 +ln -s libreoffice openoffice.org-1.9 +%endif +popd + +# TO-DO, remember to remove the "echo" lines +# and removal of printeradmin.desktop +# for LibreOffice 4.1 where this is upstreamed +pushd $RPM_BUILD_ROOT/%{baseinstdir}/share/xdg/ +chmod u+w *.desktop +rm -rf printeradmin.desktop +ICONVERSION=`echo $PRODUCTVERSION | sed -e 's/\.//'` +for file in *.desktop; do + # rhbz#156677 remove the version from Name= + # rhbz#156067 don't version the icons + sed -i -e "s/ *$PRODUCTVERSION//g" \ + -e "s/$ICONVERSION//g" \ + -e "s/$PRODUCTVERSIONSHORT//g" \ + $file +done +for app in base calc draw impress math writer; do + echo "TryExec=oo$app" >> $app.desktop +done +# relocate the .desktop and icon files +mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications +for app in base calc draw impress math startcenter writer xsltfilter; do + desktop-file-validate $app.desktop + cp -p $app.desktop $RPM_BUILD_ROOT/%{_datadir}/applications/libreoffice-$app.desktop +done +popd + +pushd $WORKDIR/CustomTarget/sysui/share/output/usr/share +#get rid of the gnome icons and other unneeded files +rm -rf icons/gnome applications application-registry + +#relocate the rest of them +# rhbz#901346 512x512 icons are not used by anything +for icon in `find icons -path '*/512x512' -prune -o -type f -print`; do + mkdir -p $RPM_BUILD_ROOT/%{_datadir}/`dirname $icon` + cp -p $icon $RPM_BUILD_ROOT/%{_datadir}/`echo $icon | sed -e s@libreoffice$ICONVERSION-@libreoffice-@ | sed -e s@libreoffice$PRODUCTVERSION-@libreoffice-@` +done +mkdir -p $RPM_BUILD_ROOT/%{_datadir}/mime-info +cp -p mime-info/libreoffice$PRODUCTVERSION.keys $RPM_BUILD_ROOT/%{_datadir}/mime-info/libreoffice.keys +cp -p mime-info/libreoffice$PRODUCTVERSION.mime $RPM_BUILD_ROOT/%{_datadir}/mime-info/libreoffice.mime +#add our mime-types, e.g. for .oxt extensions +mkdir -p $RPM_BUILD_ROOT/%{_datadir}/mime/packages +cp -p mime/packages/libreoffice$PRODUCTVERSION.xml $RPM_BUILD_ROOT/%{_datadir}/mime/packages/libreoffice.xml +popd + +rm -rf $RPM_BUILD_ROOT/%{baseinstdir}/readmes +rm -rf $RPM_BUILD_ROOT/%{baseinstdir}/licenses + +mkdir -p $RPM_BUILD_ROOT/%{baseinstdir}/share/psprint/driver +cp -p psprint_config/configuration/ppds/SGENPRT.PS $RPM_BUILD_ROOT/%{baseinstdir}/share/psprint/driver/SGENPRT.PS + +# rhbz#452385 to auto have postgres in classpath if subsequently installed +sed -i -e "s#URE_MORE_JAVA_CLASSPATH_URLS.*#& file:///usr/share/java/postgresql-jdbc.jar#" $RPM_BUILD_ROOT/%{baseinstdir}/program/fundamentalrc + +# move glade catalog to system glade dir +mkdir -p $RPM_BUILD_ROOT/%{_datadir}/glade3/catalogs +mv $RPM_BUILD_ROOT/%{baseinstdir}/share/glade/libreoffice-catalog.xml $RPM_BUILD_ROOT/%{_datadir}/glade3/catalogs + +export DESTDIR=$RPM_BUILD_ROOT +make cmd cmd="install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c -i %{baseinstdir} -p %{_datadir}/libreoffice/gdb" + + +#%check +#unset WITH_LANG +## work around flawed accessibility check +#export JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY="1" +#%if 0%{?rhel} && 0%{?rhel} < 7 +#timeout 2h make smoketest.subsequentcheck +#%else +#timeout -k 2m 2h make smoketest.subsequentcheck +#%endif + +%files + +%files core +%dir %{baseinstdir} +%dir %{baseinstdir}/help +%docdir %{baseinstdir}/help/en-US +%dir %{baseinstdir}/help/en-US +%{baseinstdir}/help/en-US/default.css +%{baseinstdir}/help/en-US/err.html +%{baseinstdir}/help/en-US/highcontrast1.css +%{baseinstdir}/help/en-US/highcontrast2.css +%{baseinstdir}/help/en-US/highcontrastblack.css +%{baseinstdir}/help/en-US/highcontrastwhite.css +%{baseinstdir}/help/en-US/sbasic.* +%{baseinstdir}/help/en-US/schart.* +%{baseinstdir}/help/en-US/shared.* +%{baseinstdir}/help/idxcaption.xsl +%{baseinstdir}/help/idxcontent.xsl +%{baseinstdir}/help/main_transform.xsl +%{baseinstdir}/presets +%dir %{baseinstdir}/program +%{baseinstdir}/program/libbasprovlo.so +%{baseinstdir}/program/libcairocanvaslo.so +%{baseinstdir}/program/libcanvasfactorylo.so +%{baseinstdir}/program/cde-open-url +%dir %{baseinstdir}/program/classes +%{baseinstdir}/program/classes/commonwizards.jar +%{baseinstdir}/program/classes/form.jar +%{baseinstdir}/program/classes/query.jar +%{baseinstdir}/program/classes/officebean.jar +%{baseinstdir}/program/classes/report.jar +%{baseinstdir}/program/classes/ScriptFramework.jar +%{baseinstdir}/program/classes/ScriptProviderForJava.jar +%{baseinstdir}/program/classes/table.jar +%{baseinstdir}/program/classes/unoil.jar +%{baseinstdir}/program/classes/XMergeBridge.jar +%{baseinstdir}/program/classes/xmerge.jar +%{baseinstdir}/program/libcmdmaillo.so +%{baseinstdir}/program/libdeployment.so +%{baseinstdir}/program/libdeploymentgui.so +%{baseinstdir}/program/libdlgprovlo.so +%{baseinstdir}/program/libexpwraplo.so +%{baseinstdir}/program/libfastsaxlo.so +%{baseinstdir}/program/flat_logo.svg +%{baseinstdir}/program/libfpickerlo.so +%{baseinstdir}/program/libfps_officelo.so +%{baseinstdir}/program/gdbtrace +%{baseinstdir}/program/gengal +%{baseinstdir}/program/gengal.bin +%{baseinstdir}/program/gnome-open-url +%{baseinstdir}/program/gnome-open-url.bin +%{baseinstdir}/program/libhatchwindowfactorylo.so +%{baseinstdir}/program/kde-open-url +%{baseinstdir}/program/libi18nsearchlo.so +%{baseinstdir}/program/libldapbe2lo.so +%{baseinstdir}/program/libacclo.so +%{baseinstdir}/program/libavmedia*.so +%{baseinstdir}/program/libbasctllo.so +%{baseinstdir}/program/libbiblo.so +%{baseinstdir}/program/libcached1.so +%{baseinstdir}/program/libcanvastoolslo.so +%{baseinstdir}/program/libchart*lo.so +%{baseinstdir}/program/libcollator_data.so +%{baseinstdir}/program/libcppcanvaslo.so +%{baseinstdir}/program/libctllo.so +%{baseinstdir}/program/libcuilo.so +%{baseinstdir}/program/libdbalo.so +%{baseinstdir}/program/libdbaselo.so +%{baseinstdir}/program/libdbaxmllo.so +%{baseinstdir}/program/libdbmmlo.so +%{baseinstdir}/program/libdbpool2.so +%{baseinstdir}/program/libdbtoolslo.so +%{baseinstdir}/program/libdbulo.so +%{baseinstdir}/program/libdeploymentmisclo.so +%{baseinstdir}/program/libdesktop_detectorlo.so +%{baseinstdir}/program/libdict_ja.so +%{baseinstdir}/program/libdict_zh.so +%{baseinstdir}/program/libdrawinglayerlo.so +%{baseinstdir}/program/libeditenglo.so +%{baseinstdir}/program/libembobj.so +%{baseinstdir}/program/libemboleobj.so +%{baseinstdir}/program/libevoab*.so +%{baseinstdir}/program/libevtattlo.so +%{baseinstdir}/program/libegilo.so +%{baseinstdir}/program/libemelo.so +%{baseinstdir}/program/libepblo.so +%{baseinstdir}/program/libepglo.so +%{baseinstdir}/program/libepplo.so +%{baseinstdir}/program/libepslo.so +%{baseinstdir}/program/libeptlo.so +%{baseinstdir}/program/liberalo.so +%{baseinstdir}/program/libetilo.so +%{baseinstdir}/program/libexplo.so +%{baseinstdir}/program/libicdlo.so +%{baseinstdir}/program/libicglo.so +%{baseinstdir}/program/libidxlo.so +%{baseinstdir}/program/libimelo.so +%{baseinstdir}/program/libindex_data.so +%{baseinstdir}/program/libipblo.so +%{baseinstdir}/program/libipdlo.so +%{baseinstdir}/program/libipslo.so +%{baseinstdir}/program/libiptlo.so +%{baseinstdir}/program/libipxlo.so +%{baseinstdir}/program/libiralo.so +%{baseinstdir}/program/libitglo.so +%{baseinstdir}/program/libitilo.so +%{baseinstdir}/program/libofficebean.so +%{baseinstdir}/program/libfilelo.so +%{baseinstdir}/program/libfilterconfiglo.so +%{baseinstdir}/program/libflatlo.so +%{baseinstdir}/program/libfrmlo.so +%{baseinstdir}/program/libguesslanglo.so +%{baseinstdir}/program/libhelplinkerlo.so +%{baseinstdir}/program/libhyphenlo.so +%{baseinstdir}/program/libjdbclo.so +%{baseinstdir}/program/liblnglo.so +%{baseinstdir}/program/libloglo.so +%{baseinstdir}/program/liblocaledata_en.so +%{baseinstdir}/program/liblocaledata_es.so +%{baseinstdir}/program/liblocaledata_euro.so +%{baseinstdir}/program/liblocaledata_others.so +%{baseinstdir}/program/libmcnttype.so +%{baseinstdir}/program/libmorklo.so +%{baseinstdir}/program/libmozbootstrap.so +%{baseinstdir}/program/libmsfilterlo.so +%{baseinstdir}/program/libmtfrendererlo.so +%{baseinstdir}/program/libmysqllo.so +%{baseinstdir}/program/libodbclo.so +%{baseinstdir}/program/libodbcbaselo.so +%{baseinstdir}/program/liboffacclo.so +%{baseinstdir}/program/libooxlo.so +%{baseinstdir}/program/libpcrlo.so +%{baseinstdir}/program/libpdffilterlo.so +%{baseinstdir}/program/libpllo.so +%{baseinstdir}/program/libprotocolhandlerlo.so +%{baseinstdir}/program/libqstart_gtklo.so +%{baseinstdir}/program/librecentfile.so +%{baseinstdir}/program/libreslo.so +%{baseinstdir}/program/libsaxlo.so +%{baseinstdir}/program/libscnlo.so +%{baseinstdir}/program/libscriptframe.so +%{baseinstdir}/program/libsdlo.so +%{baseinstdir}/program/libsdfiltlo.so +%{baseinstdir}/program/libsdbc2.so +%{baseinstdir}/program/libsdbtlo.so +%{baseinstdir}/program/libsddlo.so +%{baseinstdir}/program/libsduilo.so +%{baseinstdir}/program/libspalo.so +%{baseinstdir}/program/libspelllo.so +%{baseinstdir}/program/libsrtrs1.so +%{baseinstdir}/program/libsvgiolo.so +%{baseinstdir}/program/libsvxlo.so +%{baseinstdir}/program/libsvxcorelo.so +%{baseinstdir}/program/libswdlo.so +%{baseinstdir}/program/libswlo.so +%{baseinstdir}/program/libtextconv_dict.so +%{baseinstdir}/program/libtextconversiondlgslo.so +%{baseinstdir}/program/libtextfdlo.so +%{baseinstdir}/program/libtvhlp1.so +%{baseinstdir}/program/libodfflatxmllo.so +# TODO: shouldn't it have lo suffix? +%{baseinstdir}/program/libucbhelper.so +%{baseinstdir}/program/libucpchelp1.so +%{baseinstdir}/program/libucpdav1.so +%{baseinstdir}/program/libucpftp1.so +%{baseinstdir}/program/libucphier1.so +%{baseinstdir}/program/libucppkg1.so +%{baseinstdir}/program/libunordflo.so +%{baseinstdir}/program/libunopkgapp.so +%{baseinstdir}/program/libunoxmllo.so +%{baseinstdir}/program/libuuilo.so +%{baseinstdir}/program/libvbahelperlo.so +%{baseinstdir}/program/libvclplug_genlo.so +%{baseinstdir}/program/libvclplug_gtklo.so +%{baseinstdir}/program/libxmlfalo.so +%{baseinstdir}/program/libxmlfdlo.so +%{baseinstdir}/program/libxoflo.so +%{baseinstdir}/program/libxsec_fw.so +%{baseinstdir}/program/libxsec_xmlsec.so +%{baseinstdir}/program/libxsltdlglo.so +%{baseinstdir}/program/libxsltfilterlo.so +%{baseinstdir}/program/libxstor.so +%if 0%{?fedora} || 0%{?rhel} >= 7 +# TODO how useful this is in Fedora? +%{baseinstdir}/program/liblosessioninstalllo.so +%endif +%{baseinstdir}/program/libmigrationoo2lo.so +%{baseinstdir}/program/libmigrationoo3lo.so +%{baseinstdir}/program/libmsformslo.so +%{baseinstdir}/program/nsplugin +%{baseinstdir}/program/open-url +%{baseinstdir}/program/types/offapi.rdb +%{baseinstdir}/program/libpasswordcontainerlo.so +%{baseinstdir}/program/pagein-common +%{baseinstdir}/program/pluginapp.bin +%dir %{baseinstdir}/program/resource +%{baseinstdir}/program/resource/avmediaen-US.res +%{baseinstdir}/program/resource/accen-US.res +%{baseinstdir}/program/resource/basctlen-US.res +%{baseinstdir}/program/resource/biben-US.res +%{baseinstdir}/program/resource/chartcontrolleren-US.res +%{baseinstdir}/program/resource/cuien-US.res +%{baseinstdir}/program/resource/dbaen-US.res +%{baseinstdir}/program/resource/dbmmen-US.res +%{baseinstdir}/program/resource/dbuen-US.res +%{baseinstdir}/program/resource/dbwen-US.res +%{baseinstdir}/program/resource/deploymenten-US.res +%{baseinstdir}/program/resource/deploymentguien-US.res +%{baseinstdir}/program/resource/dkten-US.res +%{baseinstdir}/program/resource/editengen-US.res +%{baseinstdir}/program/resource/epsen-US.res +%{baseinstdir}/program/resource/euren-US.res +%{baseinstdir}/program/resource/fps_officeen-US.res +%{baseinstdir}/program/resource/frmen-US.res +%{baseinstdir}/program/resource/fween-US.res +%{baseinstdir}/program/resource/galen-US.res +%{baseinstdir}/program/resource/impen-US.res +%{baseinstdir}/program/resource/ofaen-US.res +%{baseinstdir}/program/resource/pcren-US.res +%{baseinstdir}/program/resource/pdffilteren-US.res +%{baseinstdir}/program/resource/sben-US.res +%{baseinstdir}/program/resource/scnen-US.res +%{baseinstdir}/program/resource/sden-US.res +%{baseinstdir}/program/resource/sfxen-US.res +%{baseinstdir}/program/resource/spaen-US.res +%{baseinstdir}/program/resource/sdbten-US.res +%{baseinstdir}/program/resource/svlen-US.res +%{baseinstdir}/program/resource/svten-US.res +%{baseinstdir}/program/resource/svxen-US.res +%{baseinstdir}/program/resource/swen-US.res +%{baseinstdir}/program/resource/textconversiondlgsen-US.res +%{baseinstdir}/program/resource/tken-US.res +%{baseinstdir}/program/resource/tplen-US.res +%{baseinstdir}/program/resource/uuien-US.res +%{baseinstdir}/program/resource/upden-US.res +%{baseinstdir}/program/resource/vclen-US.res +%{baseinstdir}/program/resource/wzien-US.res +%{baseinstdir}/program/resource/xmlsecen-US.res +%{baseinstdir}/program/resource/xsltdlgen-US.res +%{baseinstdir}/program/senddoc +%dir %{baseinstdir}/program/services +%{baseinstdir}/program/services/services.rdb +%{baseinstdir}/program/libsimplecanvaslo.so +%{baseinstdir}/program/libslideshowlo.so +%{baseinstdir}/program/libsofficeapp.so +%{baseinstdir}/program/spadmin.bin +%{baseinstdir}/program/libstringresourcelo.so +%{baseinstdir}/program/libsysshlo.so +%{baseinstdir}/program/tde-open-url +%{baseinstdir}/program/libucpcmis1lo.so +%{baseinstdir}/program/libucpexpand1lo.so +%{baseinstdir}/program/libucpextlo.so +%{baseinstdir}/program/libucptdoc1lo.so +%{baseinstdir}/program/unorc +%{baseinstdir}/program/libupdatefeedlo.so +%{baseinstdir}/ure-link +%{baseinstdir}/program/uri-encode +%{baseinstdir}/program/libvbaeventslo.so +%{baseinstdir}/program/libvclcanvaslo.so +%{baseinstdir}/program/versionrc +%{baseinstdir}/program/xid-fullscreen-on-all-monitors +%dir %{baseinstdir}/share +%dir %{baseinstdir}/share/Scripts +%{baseinstdir}/share/Scripts/java +%dir %{baseinstdir}/share/autotext +%{baseinstdir}/share/autotext/en-US +%{baseinstdir}/share/basic +%dir %{baseinstdir}/share/config +%{baseinstdir}/share/config/images.zip +%{baseinstdir}/share/config/images_crystal.zip +%{baseinstdir}/share/config/images_hicontrast.zip +%{baseinstdir}/share/config/images_oxygen.zip +%{baseinstdir}/share/config/images_tango.zip +%{baseinstdir}/share/config/psetup.xpm +%{baseinstdir}/share/config/psetupl.xpm +%dir %{baseinstdir}/share/config/soffice.cfg +%{baseinstdir}/share/config/soffice.cfg/modules +%if %{with langpacks} +# UI translations go into langpacks +%exclude %{baseinstdir}/share/config/soffice.cfg/modules/*/ui/res +%endif +%{baseinstdir}/share/config/soffice.cfg/*/ui +%if %{with langpacks} +# UI translations go into langpacks +%exclude %{baseinstdir}/share/config/soffice.cfg/*/ui/res +%endif +%{baseinstdir}/share/config/webcast +%{baseinstdir}/share/config/wizard +%dir %{baseinstdir}/share/dtd +%{baseinstdir}/share/dtd/officedocument +%{baseinstdir}/share/gallery +%dir %{baseinstdir}/share/labels +%{baseinstdir}/share/labels/labels.xml +%if 0%{?rhel} && 0%{?rhel} < 7 +%{baseinstdir}/share/liblangtag +%endif +%dir %{baseinstdir}/share/psprint +%config %{baseinstdir}/share/psprint/psprint.conf +%{baseinstdir}/share/psprint/driver +%dir %{baseinstdir}/share/registry +%if 0%{?fedora} || 0%{?rhel} >= 7 +%{baseinstdir}/share/registry/gnome.xcd +%endif +%{baseinstdir}/share/registry/lingucomponent.xcd +%{baseinstdir}/share/registry/main.xcd +%{baseinstdir}/share/registry/oo-ad-ldap.xcd.sample +%{baseinstdir}/share/registry/oo-ldap.xcd.sample +%{baseinstdir}/share/registry/Langpack-en-US.xcd +%dir %{baseinstdir}/share/registry/res +%{baseinstdir}/share/registry/res/fcfg_langpack_en-US.xcd +%dir %{baseinstdir}/share/template +%{baseinstdir}/share/template/en-US +%dir %{baseinstdir}/share/template/common +%{baseinstdir}/share/template/common/internal +%{baseinstdir}/share/template/common/layout +%{baseinstdir}/share/template/common/wizard +%{baseinstdir}/share/template/wizard +%dir %{baseinstdir}/share/wordbook +%{baseinstdir}/share/wordbook/en-GB.dic +%{baseinstdir}/share/wordbook/en-US.dic +%{baseinstdir}/share/wordbook/technical.dic +%dir %{baseinstdir}/share/xslt +%{baseinstdir}/share/xslt/common +%dir %{baseinstdir}/share/xslt/export +%{baseinstdir}/share/xslt/export/common +%{baseinstdir}/share/xslt/export/spreadsheetml +%{baseinstdir}/share/xslt/export/wordml +%dir %{baseinstdir}/share/xslt/import +%{baseinstdir}/share/xslt/import/common +%{baseinstdir}/share/xslt/import/spreadsheetml +%{baseinstdir}/share/xslt/import/wordml +%{baseinstdir}/program/liblnthlo.so +%{_bindir}/unopkg +#icons and mime +%{_datadir}/icons/*/*/*/libreoffice* +%{_datadir}/mime-info/libreoffice.* +%{baseinstdir}/program/libxmlsecurity.so +%{_datadir}/mime/packages/libreoffice.xml +%{baseinstdir}/program/libconfigmgrlo.so +%{baseinstdir}/program/libdesktopbe1lo.so +%{baseinstdir}/program/libfsstoragelo.so +%{baseinstdir}/program/libgconfbe1lo.so +%{baseinstdir}/program/libi18npoollo.so +%{baseinstdir}/program/libbasegfxlo.so +# TODO: shouldn't it have lo suffix? +%{baseinstdir}/program/libcomphelper.so +%{baseinstdir}/program/libfileacc.so +%{baseinstdir}/program/libfwelo.so +%{baseinstdir}/program/libfwilo.so +%{baseinstdir}/program/libfwklo.so +%{baseinstdir}/program/libfwllo.so +%{baseinstdir}/program/libfwmlo.so +%{baseinstdir}/program/libi18nlangtag.so +# TODO: shouldn't it have lo suffix? +%{baseinstdir}/program/libi18nutil.so +%{baseinstdir}/program/libpackage2.so +%{baseinstdir}/program/libsblo.so +%{baseinstdir}/program/libsfxlo.so +%{baseinstdir}/program/libsotlo.so +%{baseinstdir}/program/libspllo.so +%{baseinstdir}/program/libspl_unxlo.so +%{baseinstdir}/program/libsvllo.so +%{baseinstdir}/program/libsvtlo.so +%{baseinstdir}/program/libtklo.so +%{baseinstdir}/program/libtllo.so +%{baseinstdir}/program/libucb1.so +%{baseinstdir}/program/libucpfile1.so +%{baseinstdir}/program/libutllo.so +%{baseinstdir}/program/libvcllo.so +%{baseinstdir}/program/libxmlscriptlo.so +%{baseinstdir}/program/libxolo.so +%{baseinstdir}/program/liblocalebe1lo.so +%if 0%{?fedora} || 0%{?rhel} >= 7 +%{baseinstdir}/program/libucpgio1lo.so +%endif +%{baseinstdir}/program/types/oovbaapi.rdb +#share unopkg +%dir %{baseinstdir}/share/extensions +%{baseinstdir}/share/extensions/package.txt +%{baseinstdir}/program/unopkg +%{baseinstdir}/program/unopkg.bin +%{baseinstdir}/program/bootstraprc +%{baseinstdir}/program/fundamentalrc +%{baseinstdir}/program/setuprc +%doc %{baseinstdir}/CREDITS.odt +%doc %{baseinstdir}/LICENSE +%doc %{baseinstdir}/LICENSE.html +%doc %{baseinstdir}/LICENSE.odt +%doc %{baseinstdir}/NOTICE +%{baseinstdir}/program/intro.* +%{baseinstdir}/program/soffice +%{baseinstdir}/program/soffice.bin +%{baseinstdir}/program/sofficerc +%{baseinstdir}/program/spadmin +%{baseinstdir}/program/unoinfo +%{baseinstdir}/program/libnpsoplugin.so +%{baseinstdir}/program/oosplash +%{baseinstdir}/program/shell/ +%{baseinstdir}/share/xdg/ +%{baseinstdir}/program/redirectrc +%{_datadir}/applications/libreoffice-startcenter.desktop +#launchers +%{_bindir}/libreoffice +%{_bindir}/openoffice.org +%if 0%{?rhel} && 0%{?rhel} < 7 +%{_bindir}/openoffice.org-1.9 +%{_bindir}/openoffice.org-2.0 +%endif +%{_bindir}/soffice +%{_bindir}/ooffice +%{_bindir}/ooviewdoc +%if 0%{?rhel} && 0%{?rhel} < 7 +%{baseinstdir}/program/libraptor2-lo.so.0 +%{baseinstdir}/program/librasqal-lo.so.3 +%{baseinstdir}/program/librdf-lo.so.0 +%{baseinstdir}/program/libclucene.so +%{baseinstdir}/program/liblcms2.so.2 +%{baseinstdir}/share/fingerprint +%endif + +%post core +update-mime-database %{_datadir}/mime &> /dev/null || : +update-desktop-database %{_datadir}/applications &> /dev/null || : +for theme in hicolor locolor; do + touch --no-create %{_datadir}/icons/$theme &>/dev/null || : +done + +%postun core +update-mime-database %{_datadir}/mime &> /dev/null || : +update-desktop-database %{_datadir}/applications &> /dev/null || : +if [ $1 -eq 0 ] ; then + for theme in hicolor locolor; do + touch --no-create %{_datadir}/icons/$theme &>/dev/null || : + gtk-update-icon-cache -q %{_datadir}/icons/$theme &>/dev/null || : + done +fi + +%posttrans core +for theme in hicolor locolor; do + gtk-update-icon-cache -q %{_datadir}/icons/$theme &>/dev/null || : +done + + +%files base +%{baseinstdir}/help/en-US/sdatabase.* +%if 0%{?fedora} || 0%{?rhel} >= 7 +%{baseinstdir}/program/classes/hsqldb.jar +%endif +%{baseinstdir}/program/classes/reportbuilder.jar +%{baseinstdir}/program/classes/reportbuilderwizard.jar +%{baseinstdir}/program/classes/sdbc_hsqldb.jar +%{baseinstdir}/program/libabplo.so +%{baseinstdir}/program/libdbplo.so +%{baseinstdir}/program/libhsqldb.so +%{baseinstdir}/program/librptlo.so +%{baseinstdir}/program/librptuilo.so +%{baseinstdir}/program/librptxmllo.so +%{baseinstdir}/program/resource/abpen-US.res +%{baseinstdir}/program/resource/cnren-US.res +%{baseinstdir}/program/resource/dbpen-US.res +%{baseinstdir}/program/resource/rpten-US.res +%{baseinstdir}/program/resource/rptuien-US.res +%{baseinstdir}/program/resource/sdbclen-US.res +%{baseinstdir}/program/resource/sdberren-US.res +%{baseinstdir}/share/registry/base.xcd +%{baseinstdir}/share/registry/reportbuilder.xcd +%{baseinstdir}/program/sbase +%{_datadir}/applications/libreoffice-base.desktop +%{_bindir}/oobase + +%post base +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%postun base +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%files bsh +%{baseinstdir}/program/classes/ScriptProviderForBeanShell.jar +%{baseinstdir}/program/services/scriptproviderforbeanshell.rdb +%{baseinstdir}/share/Scripts/beanshell + +%files rhino +%{baseinstdir}/program/classes/js.jar +%{baseinstdir}/program/classes/ScriptProviderForJavaScript.jar +%{baseinstdir}/program/services/scriptproviderforjavascript.rdb +%{baseinstdir}/share/Scripts/javascript + +%files wiki-publisher +%docdir %{baseinstdir}/share/extensions/wiki-publisher/license +%{baseinstdir}/share/extensions/wiki-publisher + +%files nlpsolver +%docdir %{baseinstdir}/share/extensions/nlpsolver/help +%{baseinstdir}/share/extensions/nlpsolver + +%files ogltrans +%{baseinstdir}/program/libOGLTranslo.so +%{baseinstdir}/share/config/soffice.cfg/simpress/transitions-ogl.xml +%{baseinstdir}/share/registry/ogltrans.xcd + +%files presentation-minimizer +%docdir %{baseinstdir}/share/extensions/presentation-minimizer/help +%{baseinstdir}/share/extensions/presentation-minimizer + +%files pdfimport +%{baseinstdir}/program/libpdfimportlo.so +%{baseinstdir}/program/xpdfimport +%{baseinstdir}/share/registry/pdfimport.xcd +%dir %{baseinstdir}/share/xpdfimport +%{baseinstdir}/share/xpdfimport/xpdfimport_err.pdf + +%_font_pkg -n %{fontname} opens___.ttf +%doc solver/unxlng*/bin/ure/LICENSE + +%files calc +%{baseinstdir}/help/en-US/scalc.* +%{baseinstdir}/program/libanalysislo.so +%{baseinstdir}/program/libcalclo.so +%{baseinstdir}/program/libdatelo.so +%{baseinstdir}/program/libforlo.so +%{baseinstdir}/program/libforuilo.so +%{baseinstdir}/program/libpricinglo.so +%{baseinstdir}/program/libsclo.so +%{baseinstdir}/program/libscdlo.so +%{baseinstdir}/program/libscfiltlo.so +%{baseinstdir}/program/libscuilo.so +%{baseinstdir}/program/libsolverlo.so +%{baseinstdir}/program/resource/analysisen-US.res +%{baseinstdir}/program/resource/dateen-US.res +%{baseinstdir}/program/resource/foren-US.res +%{baseinstdir}/program/resource/foruien-US.res +%{baseinstdir}/program/resource/pricingen-US.res +%{baseinstdir}/program/resource/scen-US.res +%{baseinstdir}/program/resource/solveren-US.res +%{baseinstdir}/program/libvbaobjlo.so +%{baseinstdir}/share/registry/calc.xcd +%{baseinstdir}/program/pagein-calc +%{baseinstdir}/program/scalc +%{_datadir}/applications/libreoffice-calc.desktop +%{_bindir}/oocalc + +%post calc +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%postun calc +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%files draw +%{baseinstdir}/help/en-US/sdraw.* +%{baseinstdir}/share/registry/draw.xcd +%{baseinstdir}/program/pagein-draw +%{baseinstdir}/program/sdraw +%{_datadir}/applications/libreoffice-draw.desktop +%{_bindir}/oodraw + +%post draw +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%postun draw +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%files emailmerge +%{baseinstdir}/program/mailmerge.py* +%{baseinstdir}/program/msgbox.py* +%{baseinstdir}/program/officehelper.py* + +%files writer +%{baseinstdir}/help/en-US/swriter.* +%{baseinstdir}/program/libhwplo.so +%{baseinstdir}/program/liblwpftlo.so +%{baseinstdir}/program/libmswordlo.so +%{baseinstdir}/program/libswuilo.so +%{baseinstdir}/program/libt602filterlo.so +%{baseinstdir}/program/libwpftwriterlo.so +%{baseinstdir}/program/libwriterfilterlo.so +%{baseinstdir}/program/libvbaswobjlo.so +%{baseinstdir}/program/resource/t602filteren-US.res +%{baseinstdir}/share/registry/writer.xcd +%{baseinstdir}/program/pagein-writer +%{baseinstdir}/program/swriter +%{_datadir}/applications/libreoffice-writer.desktop +%{_bindir}/oowriter + +%post writer +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%postun writer +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%files impress +%{baseinstdir}/help/en-US/simpress.* +%{baseinstdir}/program/libanimcorelo.so +%{baseinstdir}/program/libplacewarelo.so +%{baseinstdir}/program/libPresenterScreenlo.so +%dir %{baseinstdir}/share/config/soffice.cfg/simpress +%{baseinstdir}/share/config/soffice.cfg/simpress/effects.xml +%{baseinstdir}/share/config/soffice.cfg/simpress/transitions.xml +%{baseinstdir}/share/registry/impress.xcd +%{baseinstdir}/program/pagein-impress +%{baseinstdir}/program/simpress +%{_datadir}/applications/libreoffice-impress.desktop +%{_bindir}/ooimpress + +%post impress +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%postun impress +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%files math +%{baseinstdir}/help/en-US/smath.* +%{baseinstdir}/program/libsmlo.so +%{baseinstdir}/program/libsmdlo.so +%{baseinstdir}/program/resource/smen-US.res +%{baseinstdir}/share/registry/math.xcd +%{baseinstdir}/program/smath +%{_datadir}/applications/libreoffice-math.desktop +%{_bindir}/oomath + +%post math +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%postun math +update-desktop-database %{_datadir}/applications &> /dev/null || : + +%files graphicfilter +%{baseinstdir}/program/libflashlo.so +%{baseinstdir}/program/libgraphicfilterlo.so +%{baseinstdir}/program/libsvgfilterlo.so +%{baseinstdir}/program/libwpftdrawlo.so +%{baseinstdir}/program/resource/flashen-US.res +%{baseinstdir}/share/registry/graphicfilter.xcd + +%files xsltfilter +%{baseinstdir}/share/xslt/docbook +%{baseinstdir}/share/xslt/export/uof +%{baseinstdir}/share/xslt/export/xhtml +%{baseinstdir}/share/xslt/import/uof +%{baseinstdir}/share/registry/xsltfilter.xcd +%{_datadir}/applications/libreoffice-xsltfilter.desktop + +%if 0%{?fedora} || 0%{?rhel} >= 7 +%files postgresql +%{baseinstdir}/program/libpostgresql-sdbclo.so +%{baseinstdir}/program/libpostgresql-sdbc-impllo.so +%{baseinstdir}/program/postgresql-sdbc.ini +%{baseinstdir}/program/services/postgresql-sdbc.rdb +%{baseinstdir}/share/registry/postgresqlsdbc.xcd +%endif + +%files ure +%doc solver/unxlng*/bin/ure/LICENSE +%{ureinstdir} + +%files sdk +%{sdkinstdir}/ +%exclude %{sdkinstdir}/docs/ +%exclude %{sdkinstdir}/examples/ + +%files sdk-doc +%docdir %{sdkinstdir}/docs +%{sdkinstdir}/docs/ +%{sdkinstdir}/examples/ + +%files headless +%{baseinstdir}/program/libbasebmplo.so +%{baseinstdir}/program/libvclplug_svplo.so + +%files pyuno +%{baseinstdir}/program/libpyuno.so +%{baseinstdir}/program/pythonloader.py* +%{baseinstdir}/program/libpythonloaderlo.so +%{baseinstdir}/program/pythonloader.unorc +%{baseinstdir}/program/pythonscript.py* +%{baseinstdir}/program/pyuno.so +%{baseinstdir}/program/services/scriptproviderforpython.rdb +%{baseinstdir}/program/wizards +%{baseinstdir}/share/Scripts/python +%{libo_python_sitearch}/uno.py* +%{libo_python_sitearch}/unohelper.py* +%if 0%{libo_python3} +%{libo_python_sitearch}/__pycache__/uno.cpython-* +%{libo_python_sitearch}/__pycache__/unohelper.cpython-* +%endif +%{baseinstdir}/share/registry/librelogo.xcd +%{baseinstdir}/share/registry/pyuno.xcd + +%files glade +%{baseinstdir}/program/ui-previewer +%{_datadir}/glade3/catalogs/libreoffice-catalog.xml + +%if 0%{?fedora} +%files kde +%{baseinstdir}/program/libkde4be1lo.so +%{baseinstdir}/program/libvclplug_kde4lo.so +%endif + +%changelog +* Fri Nov 01 2013 David Tardon - 1:4.1.3.2-3 +- Resolves: rhbz#1019277 rebase libreoffice to 4.1.3 + +* Mon Sep 16 2013 David Tardon - 1:4.1.0.4-6 +- rebuild for ICU ABI break + +* Tue Jul 30 2013 Stephan Bergmann - 1:4.1.0.4-5 +- Resolves: rhbz#989246 Honor user's JavaDriverClass override in mysql driver +- Resolves: fdo#67045 fix several nasty screen selection issues + +* Tue Jul 30 2013 Caolán McNamara - 1:4.1.0.4-4 +- Resolves: rhbz#989686 Fix crash with stripping whitespace from toc entries + +* Mon Jul 29 2013 David Tardon - 1:4.1.0.4-3 +- make libwpd-based filters work correctly with newest libwpd + +* Sun Jul 28 2013 Petr Machata - 1:4.1.0.4-2 +- Rebuild for boost 1.54.0 + +* Wed Jul 24 2013 David Tardon - 1:4.1.0.4-1 +- 4.1.0 rc4 + +* Mon Jul 22 2013 Eike Rathke - 1:4.1.0.3-2 +- force rebuild with icu-50.1.2-7 + +* Thu Jul 18 2013 David Tardon - 1:4.1.0.3-1 +- 4.1.0 rc3 +- Resolves: fdo#48835 GNOME3 app menu + +* Thu Jul 18 2013 Caolán McNamara - 1:4.1.0.2-5 +- silence scary gcc warning +- fdo#66924 switching to master view is broken + +* Tue Jul 16 2013 David Tardon - 1:4.1.0.2-4 +- bump release + +* Fri Jul 12 2013 David Tardon - 1:4.1.0.2-3 +- Resolves: rhbz#983809 libreoffice-base misses deps on needed java packages + +* Thu Jul 11 2013 David Tardon - 1:4.1.0.2-2 +- Resolves: rhbz#980387 Exporting a odg to jpg or tiff generates error + +* Thu Jul 04 2013 David Tardon - 1:4.1.0.2-1 +- 4.1.0 rc2 + +* Mon Jul 01 2013 Caolán McNamara - 1:4.1.0.1-8 +- Resolves: rhbz#979758 crash on Diagrammen in LibreOffice help page + +* Thu Jun 27 2013 David Tardon - 1:4.1.0.1-7 +- bump revision + +* Mon Jun 24 2013 Marek Kasik - 1:4.1.0.1-6 +- Rebuild (poppler-0.22.5) + +* Mon Jun 24 2013 David Tardon - 1:4.1.0.1-5 +- fix build on big endian archs + +* Mon Jun 24 2013 David Tardon - 1:4.1.0.1-4 +- put glade catalog into an extra packgae + +* Sun Jun 23 2013 Caolán McNamara - 1:4.1.0.1-3 +- Resolves: rhbz#976304 gallery elements may not insert + +* Wed Jun 19 2013 Dennis Gilmore - 1:4.1.0.1-2 +- fix _smp_mflags macro useage + +* Wed Jun 19 2013 David Tardon - 1:4.1.0.1-1 +- 4.1.0 rc1 +- Related: rhbz#971321 failing tests on ppc and s390 + +* Sun Jun 16 2013 David Tardon - 1:4.1.0.0-9.beta2 +- Resolves: rhbz#971321 failing tests on ppc and s390 +- Resolves: rhbz#974062 incorrect rendering of text in outline blocks in + Impress + +* Fri Jun 07 2013 David Tardon - 1:4.1.0.0-8.beta2 +- Related: rhbz#971795 go back to BR: harfbuzz-devel + +* Fri Jun 07 2013 David Tardon - 1:4.1.0.0-7.beta2 +- Resolves: rhbz#971230 Use BR: harfbuzz-icu-devel + +* Wed Jun 05 2013 David Tardon - 1:4.1.0.0-7.beta1 +- 4.1.0 beta2 + +* Wed Jun 05 2013 Caolán McNamara - 1:4.1.0.0-6.beta1 +- Related: rhbz#968892 discard impossible languages for Oriya script + +* Tue Jun 04 2013 Caolán McNamara - 1:4.1.0.0-5.beta1 +- Resolves: rhbz#968892 block entire grapheme together for glyph fallback +- Related: rhbz#968892 discard impossible languages for glyph fallback + +* Fri May 31 2013 Caolán McNamara - 1:4.1.0.0-4.beta1 +- Resolves: rhbz#968976 fix dropdown list autosizing + +* Thu May 30 2013 David Tardon - 1:4.1.0.0-3.beta1 +- build fix for s390 + +* Fri May 24 2013 David Tardon - 1:4.1.0.0-2.beta1 +- 4.1.0 beta1 + +* Fri May 24 2013 Stephan Bergmann - 1:4.0.3.3-3 +- Resolves: rhbz#961460 can't save WebDAV (davs) files + +* Thu May 16 2013 Caolán McNamara - 1:4.0.3.3-2 +- Resolves: rhbz#963276 font options cache crash + +* Fri May 03 2013 David Tardon - 1:4.0.3.3-1 +- 4.0.3 rc3 + +* Tue Apr 30 2013 David Tardon - 1:4.0.3.2-1 +- 4.0.3 rc2 + +* Mon Apr 22 2013 Stephan Bergmann - 1:4.0.3.1-2 +- Resolves: rhbz#954991 Avoid static data (causing trouble at exit) + +* Thu Apr 18 2013 David Tardon - 1:4.0.3.1-1 +- 4.0.3 rc1 +- Resolves: rhbz#867808 do not throw UNO exceptions by pointer in C++ + +* Tue Apr 16 2013 Caolán McNamara - 1:4.0.2.2-4 +- Resolves: rhbz#927223 syntax highlighting crash + +* Mon Apr 08 2013 Caolán McNamara - 1:4.0.2.2-3 +- Resolves: rhbz#949238 div by zero on pagedown in 0 width panel + +* Fri Apr 05 2013 Kalev Lember - 1:4.0.2.2-2 +- Resolves: rhbz#949106 libreoffice drags in both openjdk 1.7.0 and 1.8.0 + +* Thu Mar 28 2013 David Tardon - 1:4.0.2.2-1 +- 4.0.2 rc2 +- Resolves: rhbz#876742 manipulation with larger tables in impress is + very slow + +* Fri Mar 15 2013 Caolán McNamara - 1:4.0.2.1-2 +- Resolves: rhbz#906137 slide show inverts outputs + +* Fri Mar 15 2013 David Tardon - 1:4.0.2.1-1 +- 4.0.2 rc1 +- Resolves: rhbz#921716 Build Breton language pack + +* Wed Mar 13 2013 Stephan Bergmann - 1:4.0.1.2-4 +- Resolves: rhbz#895690 failure saving to gvfs mounts + +* Tue Mar 12 2013 Caolán McNamara - 1:4.0.1.2-3 +- Resolves: rhbz#920697 presentation not always full-screen + +* Thu Mar 07 2013 Caolán McNamara - 1:4.0.1.2-2 +- Related: rhbz#902884 check for NULL GetSelectedMasterPage +- Resolves: fdo#61241 force area page to size itself +- Resolves: fdo#61656 use order and orientation combobox +- Resolves: fdo#56031 RSID attr changes drop content changes + +* Thu Feb 28 2013 David Tardon - 1:4.0.1.2-1 +- 4.0.1 rc2 + +* Tue Feb 26 2013 Eike Rathke - 1:4.0.0.3-8 +- do not access vector elements beyond size, rhbz#847519 related +- Resolves: rhbz#742780 let make OPT_FLAGS=... override SDK flags +- Resolves: rhbz#907933 crash on removing second last para + +* Tue Feb 19 2013 Caolán McNamara - 1:4.0.0.3-7 +- Resolves: rhbz#895196 sc filter float a11y parent of itself + +* Tue Feb 19 2013 David Tardon - 1:4.0.0.3-6 +- Resolves: rhbz#911896 add Kazakh localization + +* Fri Feb 15 2013 Caolán McNamara - 1:4.0.0.3-5 +- make evolution 3.6 work with address book +- Resolves: rhbz#910176 cannot select directory with gtk folder picker +- fixes for building against Boost 1.53.0 + +* Fri Feb 15 2013 Stephan Bergmann - 1:4.0.0.3-4 +- Resolves: fdo#60491 missing libemboleobj.so +- Resolves: rhbz#908674 crash on start + +* Sat Feb 09 2013 Denis Arnaud - 1:4.0.0.3-3 +- Rebuild for Boost-1.53.0 + +* Wed Feb 06 2013 David Tardon - 1:4.0.0.3-2 +- fix parsing errors in translated help + +* Fri Feb 01 2013 David Tardon - 1:4.0.0.3-1 +- 4.0.0 rc3 + +* Wed Jan 23 2013 David Tardon - 1:4.0.0.2-1 +- 4.0.0 rc2 +- use ucpp again + +* Tue Jan 22 2013 David Tardon - 1:4.0.0.1-3 +- Resolves: rhbz#760765 Impress doesn't copy custom styles from one file + to another + +* Mon Jan 21 2013 David Tardon - 1:4.0.0.1-2 +- Resolves: rhbz#901346 do not install 512x512 icons + +* Tue Jan 15 2013 David Tardon - 1:4.0.0.1-1 +- 4.0.0 rc1 + +* Sat Dec 22 2012 David Tardon - 1:4.0.0.0-4.beta2 +- use system cpp instead of ucpp + +* Wed Dec 19 2012 David Tardon - 1:4.0.0.0-3.beta2 +- 4.0.0 beta2 + +* Thu Dec 06 2012 David Tardon - 1:4.0.0.0-2.beta1 +- 4.0.0 beta1 + +* Thu Nov 29 2012 David Tardon - 1:3.6.4.3-1 +- 3.6.4 rc3 + +* Wed Nov 28 2012 Caolán McNamara - 1:3.6.4.1-2 +- fix docx import on big endian + +* Sun Nov 18 2012 David Tardon - 1:3.6.4.1-1 +- 3.6.4 rc1 + +* Wed Nov 14 2012 Caolán McNamara - 1:3.6.3.2-8 +- Resolves: rhbz#872815 ogltrans effects still suboptimal + +* Tue Nov 13 2012 Caolán McNamara - 1:3.6.3.2-7 +- big endian test failure + +* Thu Nov 08 2012 Caolán McNamara - 1:3.6.3.2-6 +- Resolves: fdo#56198/rhbz#868002 honour gtk-scrollbar-warp-preference + +* Tue Nov 06 2012 Caolán McNamara - 1:3.6.3.2-5 +- bump for libexttextcat + +* Fri Nov 02 2012 David Tardon - 1:3.6.3.2-4 +- Resolves: rhbz#871929 add keywords to desktop files +- fix debuginfo + +* Wed Oct 31 2012 Eike Rathke - 1:3.6.3.2-3 +- Resolves: rhbz#865058 increase number of user-defined format codes + +* Fri Oct 26 2012 David Tardon - 1:3.6.3.2-2 +- Resolves: rhbz#824035 do not bundle saxon + +* Wed Oct 24 2012 David Tardon - 1:3.6.3.2-1 +- 3.6.3 rc2 +- drop integrated 0001-Resolves-rhbz-868479-fdo-56281-doubled-in-German-ok-.patch + +* Mon Oct 22 2012 Caolán McNamara - 1:3.6.3.1-3 +- Resolves: rhbz#868479 guard against duplicated ~ in OK/Cancel + +* Thu Oct 11 2012 David Tardon - 1:3.6.3.1-2 +- Resolves: rhbz#858641 backport gstreamer 1.0 support to F-18 + +* Thu Oct 11 2012 Caolán McNamara - 1:3.6.3.1-1 +- 3.6.3 rc1 +- drop integrated 0001-Resolves-rhbz-855972-crash-on-switching-to-outline-v.patch +- drop integrated 0001-fdo-52022-Simple-LargeControlPoints-actually-can-hav.patch +- drop integrated 0001-fdo-46071-Do-not-hide-windows-based-on-nil-Visible-p.patch + +* Fri Oct 05 2012 Stephan Bergmann - 1:3.6.2.2-3 +- Resolves: fdo#46071 Do not hide windows based on nil Visible property + +* Fri Oct 05 2012 Stephan Bergmann - 1:3.6.2.2-2 +- Resolves: fdo#52022 Part of data in userdir is lost on upgrade + +* Wed Sep 26 2012 David Tardon - 1:3.6.2.2-1 +- 3.6.2 rc2 + +* Wed Sep 12 2012 Caolán McNamara - 1:3.6.2.1-2 +- Resolves: rhbz#855541 XIOError handler multithread woes + +* Wed Sep 12 2012 David Tardon - 1:3.6.2.1-1 +- 3.6.2 rc1 + +* Tue Sep 11 2012 Caolán McNamara - 1:3.6.1.2-4 +- Resolves: rhbz#855507 large ole2 compound files fail to load + +* Mon Sep 10 2012 Caolán McNamara - 1:3.6.1.2-3 +- Resolves: rhbz#855972 crash on switching to outline view + +* Wed Aug 29 2012 Caolán McNamara - 1:3.6.1.2-2 +- Related: rhbz#850709 hunspell en-US available standalone so + make English langpack require hunspell-en and core just + bare bones hunspell-en-US + +* Sun Aug 26 2012 David Tardon - 1:3.6.1.2-1 +- 3.6.1 rc2 + +* Wed Aug 22 2012 Caolán McNamara - 1:3.6.1.1-2 +- Resolves: rhbz#846775 Clipboard must be disposed before selection +- Resolves: rhbz#842292 crash in scrolling multiselection in draw + +* Wed Aug 15 2012 David Tardon - 1:3.6.1.1-1 +- 3.6.1 rc1 + +* Sun Aug 12 2012 Kevin Fenzi - 1:3.6.0.4-3 +- Rebuild for new boost + +* Sat Jul 28 2012 David Tardon - 1:3.6.0.4-2 +- rebuilt for boost 1.50 + +* Fri Jul 27 2012 David Tardon - 1:3.6.0.4-1 +- 3.6.0 rc4 + +* Thu Jul 26 2012 David Tardon - 1:3.6.0.3-2 +- Resolves: rhbz#842552 crash in pptx import + +* Wed Jul 25 2012 David Tardon - 1:3.6.0.3-1 +- 3.6.0 rc3 + +* Tue Jul 17 2012 David Tardon - 1:3.6.0.2-1 +- 3.6.0 rc2 + +* Mon Jul 16 2012 Caolán McNamara - 1:3.6.0.1-3 +- Resolves: rhbz#836937 insanely slow with Zemberek + +* Mon Jul 16 2012 David Tardon - 1:3.6.0.1-2 +- rebuild for new libexttextcat + +* Thu Jul 12 2012 David Tardon - 3.6.0.1-1 +- 3.6.0 rc1 + +* Mon Jul 09 2012 Caolán McNamara - 3.6.0.0-4 +- Resolves: rhbz#838368 --view ignored while -view accepted + +* Thu Jul 05 2012 David Tardon - 3.6.0.0-3 +- 3.6.0 beta3 + +* Mon Jul 2 2012 Marek Kasik - 3.6.0.0-2 +- Rebuild (poppler-0.20.1) + +* Wed Jun 27 2012 David Tardon - 3.6.0.0-1 +- 3.6.0 beta2 +- drop integrated 0001-move-binfilter-mime-types-into-extra-.desktop-file.patch +- drop integrated 0001-Resolves-rhbz-788042-skip-splashscreen-with-quicksta.patch +- drop integrated libreoffice-ensure-non-broken-xml-tree.patch +- drop integrated 0001-preserve-timestamps-for-.py-files.patch +- drop integrated 0001-Resolves-rhbz-788045-swriter-help-etc-doesn-t-show-h.patch +- drop integrated 0001-Resolves-rhbz-799525-put-flat-odf-mimetypes-in-xsltf.patch +- drop integrated 0001-Resolves-rhbz-800272-complain-about-unknown-command-.patch +- drop integrated 0001-Resolves-rhbz-806663-SlideshowImpl-can-outlive-SdMod.patch +- drop integrated 0001-desktop-do-not-complain-about-soffice-command-line-o.patch +- drop integrated 0001-Resolves-fdo-48096-torn-off-popups-trigger-keyboard-.patch +- drop integrated 0001-fdo-38088-better-CSV-import-default-separators.patch +- drop integrated 0001-save-register-arguments-first.patch +- drop integrated 0001-do-not-let-gcc-use-registers-we-are-setting-ourselve.patch +- drop integrated 0001-wrong-types-used-here-breaks-64bit-bigendian.patch +- drop integrated 0001-Resolves-rhbz-805743-a11y-call-doShow-after-we-have-.patch +- drop integrated 0001-Resolves-fdo-49849-implement-Unicode-6.1-hebrew-line.patch +- drop integrated 0001-use-ure-instead-of-ure-link.patch +- drop broken 0001-fix-setting-of-paper-tray-from-print-dialog-fdo-4393.patch + +* Mon Jun 18 2012 Caolán McNamara - 3.5.5.1-2 +- Resolves: rhbz#830810 missing dependency on lucene-contrib + +* Thu Jun 14 2012 David Tardon - 3.5.5.1-1 +- 3.5.5 rc1 +- drop integrated 0001-make-hsqldb-build-with-java-1.7.patch +- drop integrated 0001-Related-rhbz-799628-crash-with-chewing-IM-with-g3g.patch +- drop integrated 0001-silence-SolarMutex-not-locked-spew.patch +- drop integrated 0001-gcc-trunk-fix-unable-to-find-string-literal-operator.patch +- drop integrated 0001-ppc-yyinput-returns-a-int-truncating-to-unsigned-cha.patch +- drop integrated 0001-Resolves-rhbz-826609-rhbz-820554-fix-smoketest-on-pp.patch + +* Mon Jun 11 2012 David Tardon - 3.5.4.2-3 +- make gdb pretty printers for URE libs usable again + +* Fri Jun 08 2012 Caolán McNamara - 3.5.4.2-2 +- Resolves: rhbz#826609, rhbz#820554 fix smoketest on ppc[64] and s390[x] + +* Wed May 23 2012 David Tardon - 3.5.4.2-1 +- 3.5.4 rc2 + +* Thu May 17 2012 Caolán McNamara - 3.5.4.1-2 +- Resolves: rhbz#811226 ARM FTBFS + +* Wed May 16 2012 David Tardon - 3.5.4.1-1 +- 3.5.4 rc1 +- drop integrated 0001-do-not-prepend-n-twice-it-confuses-KFileDialog-rhbz-.patch +- drop integrated 0001-incrementing-index-twice-in-one-run-seems-wrong.patch +- drop integrated 0001-fdo-49365-correctly-map-monitor-index-back-to-screen.patch +- drop integrated 0001-rhbz-809019-count-mirrored-monitors-as-one.patch + +* Sun May 13 2012 Caolán McNamara - 3.5.3.2-5 +- Resolves: fdo#49849 line breaking fixes for Hebrew + +* Fri May 11 2012 David Tardon - 3.5.3.2-4 +- Resolves: rhbz#820439 KDE export dialog broken for most formats +- Resolves: fdo#49365 Libreoffice fails to start on second screen with + gtk vcl plugin +- Resolves: rhbz#809019 Impress thinks a machine with 2 monitors in + clone mode is multihead + +* Wed May 09 2012 Caolán McNamara - 3.5.3.2-3 +- Resolves: rhbz#805743 a11y crash in impress/draw +- Resolves: rhbz#813202 opengl slide transitions still a bit + problematic in Fedora 17 + +* Thu May 03 2012 David Tardon - 3.5.3.2-2 +- rebuild for changed dependencies + +* Wed Apr 25 2012 David Tardon - 3.5.3.2-1 +- 3.5.3 rc2 +- fix broken test on 64bit big endian + +* Mon Apr 23 2012 David Tardon - 3.5.3.1-2 +- rebuild for icu +- fix UNO bridges for ppc and ppc64 + +* Thu Apr 19 2012 David Tardon - 3.5.3.1-1 +- 3.5.3 rc1 +- drop integrated 0001-Introduced-SystemShellExecuteFlags-URIS_ONLY.patch +- drop integrated 0001-Simplify-code-and-use-proper-register-names-for-linu.patch +- drop integrated 0001-resolved-rhbz-813280-the-current-document-is-not-alw.patch + +* Wed Apr 18 2012 Eike Rathke - 3.5.2.1-7 +- Resolves: rhbz#813280 sheets cannot be moved in Calc + +* Wed Apr 11 2012 Eike Rathke - 3.5.2.1-6 +- Resolves: fdo#38088 rhbz#810267 better CSV import default separators + +* Tue Apr 10 2012 Caolán McNamara - 3.5.2.1-5 +- Resolves: rhbz#811226 FTBFS ARM + +* Thu Apr 05 2012 Stephan Bergmann - 3.5.2.1-4 +- Fix URIS_ONLY flag issue +- rebuild for db4 + +* Mon Apr 02 2012 Caolán McNamara - 3.5.2.1-3 +- Resolves: rhbz#708041 focus problems with tearable menus + +* Mon Mar 26 2012 Caolán McNamara - 3.5.2.1-2 +- Resolves: rhbz#806663 SlideshowImpl can outlive SdModule + +* Sun Mar 25 2012 David Tardon - 3.5.2.1-1 +- 3.5.2 rc1 +-drop integrated 0001-yet-another-clash-with-macro-name.patch + +* Wed Mar 14 2012 David Tardon - 3.5.1.2-2 +- Resolves: rhbz#770209 can't change paper tray setting while printing + +* Thu Mar 08 2012 David Tardon - 3.5.1.2-1 +- 3.5.1 rc2 + +* Tue Mar 06 2012 Caolán McNamara - 3.5.1.1-3 +- Resolves: rhbz#799628 crash with chewing IM with g3g +- Resolves: rhbz#799525 put flat odf mimetypes into xsltfilter.desktop +- Resolves: rhbz#800272 complain about unknown commandline options + +* Wed Feb 29 2012 Caolán McNamara - 3.5.1.1-2 +- Resolves: rhbz#788045 swriter --help doesn't show help +- Resolves: rhbz#798667 missing .desktop icons + +* Sun Feb 26 2012 David Tardon - 3.5.1.1-1 +- 3.5.1 rc1 +- drop 0001-Resolves-fdo-43644-survive-registered-but-unavailabl.patch +- drop 0001-Resolves-rhbz-789622-Adapt-SDK-to-changed-paths-in-L.patch +- drop 0001-Fix-fdo-45177-avoid-linked-undo-for-the-while.patch +- drop 0001-Fix-some-apparent-misuses-of-RTL_CONSTASCII_USTRINGP.patch +- drop binfilter-Fix-some-apparent-misuses-of-RTL_CONSTASCII_USTRINGP.patch +- Resolves: fdo#45177 avoid linked undo crash +- Fix some apparent misuses of RTL_CONSTASCII_USTRINGPARAM (cherry-picked from + upstream libreoffice-3-5 branch) + +* Tue Feb 14 2012 Stephan Bergmann - 3.5.0.3-5 +- Resolves rhbz#789622: Adapt SDK to changed paths in LO installation + +* Mon Feb 13 2012 Caolán McNamara - 3.5.0.3-4 +- ensure gdb .py files have the same timstamps so that multilib + .pyc's and .pyo's have the same content (timestamp in binary cache) + +* Sat Feb 11 2012 Caolán McNamara - 3.5.0.3-3 +- make sure .tree files don't get busted again + +* Tue Feb 07 2012 Stephan Bergmann - 3.5.0.3-2 +- junit4 -> junit +- Resolves: rhbz#788042 skip splashscreen with quickstarter +- with split binfilter we need fix for fdo#43644 + +* Thu Feb 02 2012 David Tardon - 3.5.0.3-1 +- 3.5.0 rc3 +- Resolves: rhbz#786328 add nlpsolver subpackage +- split legacy binary filters into subpackage + +* Thu Jan 26 2012 Stephan Bergmann - 3.5.0.2-2 +- add libreoffice-postgresql subpackage + +* Wed Jan 25 2012 David Tardon - 3.5.0.2-1 +- 3.5.0 rc2 + +* Thu Jan 19 2012 David Tardon - 3.5.0.1-1 +- 3.5.0 rc1 +- drop integrated 0001-workaround-internal-compiler-error-with-gcc-4.7.patch +- drop integrated 0001-fix-for-gcc-4.7-C-11-these-are-not-string-literal-op.patch +- drop integrated 0001-fix-for-gcc-4.7-C-11-this-is-not-string-literal-oper.patch +- drop integrated 0001-Revert-fast_merge-fix-mis-merge-of-first-module-s-st.patch +- drop integrated 0001-fix-writing-of-strings-from-the-first-module.patch +- drop integrated 0001-refactor-slightly-to-avoid-link-problems-with-gcc-4..patch + +* Fri Jan 13 2012 David Tardon - 3.4.99.3-1 +- 3.5.0 beta3 +- drop integrated 0001-fix-syntactic-error.patch +- drop integrated 0001-gcc-trunk-fix-error-unable-to-find-string-literal-op.patch +- drop integrated 0001-gcc-trunk-avoid-confusion.patch +- drop integrated 0001-workaround-for-LO-namespace-pollution-breaking-KDE4-.patch +- drop integrated 0001-smath-does-not-handle-accents-in-MathML.patch +- Resolves: rhbz#533318 smath does not handle accents in MathML +- Resolves: rhbz#771108 English menu in writer despite installation of + libreoffice-langpack-de + +* Fri Jan 06 2012 David Tardon - 3.4.99.2-2 +- rebuild with gcc 4.7 + +* Wed Dec 21 2011 David Tardon - 3.4.99.2-1 +- 3.5.0 beta2 +- drop integrated 0001-Resolves-rhbz-761009-IFSD_Equal-is-asymmetrical.patch +- drop integrated 0001-Resolves-rhbz-767708-avoid-SIGBUS-writing-to-overcom.patch +- drop integrated 0001-force-gbuild-stage-for-CustomTargets.patch +- drop integrated 0001-these-translations-do-already-exist-in-translations-.patch +- drop integrated 0001-Fix-typo-and-clean-up.patch +- use system mysql-connector-c++ + +* Sun Dec 18 2011 David Tardon - 3.4.99.1-1 +- 3.5.0 beta1 +- drop integrated 0001-Related-fdo-37195-migrationoo3-not-registered.patch +- drop integrated 0001-Related-i58612-don-t-crash-anyway.patch +- drop integrated 0001-Related-rhbz-652604-better-survive-exceptions-thrown.patch +- drop integrated 0001-Related-rhbz-702833-addEventListener-without-removeE.patch +- drop integrated 0001-Related-rhbz-711087-band-aid.patch +- drop integrated 0001-Related-rhbz-718976-crash-in-SwTxtSizeInfo-GetMultiC.patch +- drop integrated 0001-Related-rhbz-730225-avoid-segv-in-ld-this-was-set-to.patch +- drop integrated 0001-Related-rhbz-753201-fedora-ant-java-1.5.0-gcj-won-t-.patch +- drop integrated 0001-Resolves-fdo-32665-handle-that-FreeSerif-lacks-some-.patch +- drop integrated 0001-Resolves-rhbz-693265-fix-crash-from-unhandled-except.patch +- drop integrated 0001-Resolves-rhbz-695509-crash-in-RefreshDocumentLB.patch +- drop integrated 0001-Resolves-rhbz-713154-pdf-export-dialog-too-tall-to-f.patch +- drop integrated 0001-Resolves-rhbz-715549-use-fontconfig-s-detected-forma.patch +- drop integrated 0001-Resolves-rhbz-738255-avoid-crash-on-NULL-pointer.patch +- drop integrated 0001-Resolves-rhbz-751290-KDE-black-on-dark-tooltips.patch +- drop integrated 0001-add-Oracle-Java-1.7.0-recognition.patch +- drop integrated 0001-avoid-using-com.sun.org-apis.patch +- drop integrated 0001-bubble-down-configure-test-findings-on-visibility.patch +- drop integrated 0001-fix-horizontal-scrollbars-with-KDE-oxygen-style-bnc-.patch +- drop integrated 0001-gtk3-fix-cairo-canvas-crash-for-non-X-or-svp-backend.patch +- drop integrated 0001-helgrind-Related-rhbz-655686-get-order-of-shutdown-c.patch +- drop integrated 0001-rhbz-667082-do-not-crash-importing-section-containin.patch +- drop integrated 0001-rhbz-702635-set-correct-page-number-when-exporting-s.patch +- drop integrated Backport-reading-AES-encrypted-ODF-1.2-documents.patch +- drop integrated gdb-pretty-printers.patch +- drop integrated kde4configure.patch +- drop integrated libreoffice-ppc64.patch +- drop integrated openoffice.org-3.3.0.ooo108637.sfx2.uisavedir.patch +- drop integrated openoffice.org-3.3.0.ooo113273.desktop.resolvelinks.patch +- drop integrated vbahelper.visibility.patch +- drop libreoffice-testtools subpackage, because testtool has been + removed by upstream + +* Thu Dec 15 2011 Caolán McNamara - 3.4.4.2-6 +- Resolves: rhbz#761009 IFSD_Equal is asymmetrical +- Resolves: rhbz#767708 write to mmap'ed file w/o disk space: SIGBUS + +* Tue Nov 29 2011 Caolán McNamara - 3.4.4.2-5 +- Resolves: rhbz#757653 fix headless crash with cairo canvas + +* Tue Nov 22 2011 Lukas Tinkl - 3.4.4.2-4 +- Resolves: rhbz#751290 - [kde] LibreOffice has black on dark-grey tooltip-texts + +* Fri Nov 11 2011 Caolán McNamara - 3.4.4.2-3 +- Related: fdo#42534 0001-Related-i58612-don-t-crash-anyway.patch +- Resolves: fdo#42749 KDE oxygen theme and scrollbars + +* Thu Nov 10 2011 Stephan Bergmann - 3.4.4.2-2 +- Patch to backport reading AES-encrypted ODF 1.2 documents + +* Thu Nov 03 2011 David Tardon - 3.4.4.2-1 +- 3.4.4 rc2 + +* Fri Oct 28 2011 Rex Dieter - 1:3.4.4.1-4 +- rebuild(poppler) + +* Thu Oct 27 2011 Caolán McNamara - 3.4.4.1-3 +- Resolves: rhbz#665800 missing glyph symbol shown when toggling bold/italic + for Sinhala text + +* Thu Oct 27 2011 Caolán McNamara - 3.4.4.1-2 +- possible fix for java 1.7.0 detection + + +* Wed Oct 26 2011 David Tardon - 3.4.4.1-1 +- 3.4.4 rc1 + +* Tue Oct 25 2011 Caolán McNamara - 3.4.3.2-16 +- allow building with gcj + +* Fri Oct 21 2011 Caolán McNamara - 3.4.3.2-15 +- Resolves: rhbz#747356 let Qt call XInitThreads +- fix .sdw import + +* Wed Oct 19 2011 Caolán McNamara - 3.4.3.2-14 +- Related: rhbz#743750 addXineramaScreenUnique issue + +* Fri Oct 07 2011 Stephan Bergmann - 3.4.3.2-13 +- Patches to build with GCC 6.4.1 + +* Fri Sep 30 2011 Marek Kasik - 3.4.3.2-12 +- Rebuild (poppler-0.18.0) + +* Tue Sep 20 2011 Caolán McNamara - 3.4.3.2-11 +- Resolves: rhbz#738133 fix bn discard string +- Resolves: fdo#35513 avoid crash while processing incorrect print range + +* Mon Sep 19 2011 Marek Kasik - 3.4.3.2-10 +- Rebuild (poppler-0.17.3) + +* Thu Sep 15 2011 Caolán McNamara - 3.4.3.2-9 +- Resolves: rhbz#738255 avoid crash on sc inputhdl + +* Tue Sep 13 2011 Caolán McNamara - 3.4.3.2-8 +- Resolves: rhbz#274631 remove NoDisplay from -math.desktop + +* Thu Sep 08 2011 David Tardon - 3.4.3.2-7 +- rebuild for new icu + +* Tue Sep 06 2011 David Tardon - 3.4.3.2-6 +- Resolves: rhbz#734976 libreoffice-langpack-*-* not pulled in by + yum install libreoffice + +* Fri Sep 02 2011 Caolán McNamara - 3.4.3.2-5 +- Resolves: rhbz#735182 be able to rebuild against poppler 0.17.3 + +* Tue Aug 30 2011 David Tardon - 3.4.3.2-4 +- Resolves: rhbz#734432 openoffice.org symlink broken + +* Mon Aug 29 2011 David Tardon - 3.4.3.2-3 +- add Latvian langpack + +* Fri Aug 26 2011 Caolán McNamara - 3.4.3.2-2 +- Resolves: rhbz#733564 graphite2 now packaged into fedora +- Related: fdo#37195 migrationoo3 not registered + +* Thu Aug 25 2011 David Tardon - 3.4.3.2-1 +- 3.4.3 rc2 + +* Mon Aug 22 2011 David Tardon - 3.4.3.1-2 +- add gdb pretty printers + +* Tue Aug 16 2011 David Tardon - 3.4.3.1-1 +- 3.4.3 rc1 +- drop integrated 0001-Resolves-rhbz-725144-wrong-csh-syntax.patch + +* Fri Aug 12 2011 Caolán McNamara - 3.4.2.3-3 +- Related: rhbz#730225 avoid segv in ld + +* Tue Aug 02 2011 Caolán McNamara - 3.4.2.3-2 +- Resolves: rhbz#693265 fix crash from unhandled exception + +* Fri Jul 29 2011 David Tardon - 3.4.2.3-1 +- 3.4.2 rc3 + +* Mon Jul 25 2011 Caolán McNamara - 3.4.2.2-2 +- Resolves: rhbz#725144 wrong csh syntax + +* Wed Jul 20 2011 David Tardon - 3.4.2.2-1 +- 3.4.2 rc2 +- fix breakage in KDE4 plugin + +* Tue Jul 19 2011 Caolán McNamara - 3.4.2.1-3 +- Resolves: rhbz#715549 use fontconfig's detected format + +* Mon Jul 18 2011 Caolán McNamara - 3.4.2.1-2 +- Rebuild (poppler-0.17.0), add libreoffice-poppler-0.17.0.patch + seeing as the API changed for some reason or other + +* Wed Jul 13 2011 David Tardon - 3.4.2.1-1 +- 3.4.2 rc1 +- drop 0001-bad-merge-fix-to-enable-extensions-to-build-again.patch +- drop 0001-fix-regression-in-SvGlobalName-operator.patch + +* Tue Jul 12 2011 Caolán McNamara - 3.4.1.3-3 +- fix regression in SvGlobalName operator + +* Tue Jul 05 2011 Caolán McNamara - 3.4.1.3-2 +- Related: rhbz#718976 crash in SwTxtSizeInfo::GetMultiCreator + +* Fri Jul 01 2011 David Tardon - 3.4.1.3-1 +- 3.4.1 rc3 + +* Thu Jun 23 2011 Caolán McNamara - 3.4.1.2-1 +- 3.4.1 rc2 +- drop integrated 0001-correctly-build-GTK-systray-icon.patch + +* Tue Jun 21 2011 David Tardon - 3.4.1.1-5 +- Resolves: rhbz#714781 add Persian langpack +- Resolves: rhbz#667082 do not crash importing section containing just + an empty paragraph + +* Mon Jun 20 2011 Caolán McNamara - 3.4.1.1-4 +- Related: rhbz#711087 band aid for crash in sc undo +- Resolves: rhbz#714338 add a metapackage to install standard bits + +* Fri Jun 17 2011 Caolán McNamara - 3.4.1.1-3 +- Related: rhbz#702833 addEventListener without removeEventListener + +* Thu Jun 16 2011 Caolán McNamara - 3.4.1.1-2 +- Resolves: rhbz#713154 pdf export dialog too tall to fit + +* Wed Jun 15 2011 David Tardon - 3.4.1.1-1 +- 3.4.1 RC1 +- drop integrated 0001-Resolves-rhbz-707317-avoid-crash-in-getRowSpan.patch +- drop integrated 0001-Resolves-rhbz-710004-band-aid-for-immediate-crash-in.patch +- drop integrated 0001-Resolves-rhbz-710556-don-t-crash-on-missing-graphics.patch +- drop integrated 0001-Resolves-rhbz-699909-crash-in-export-of-.doc-in-lcl_.patch +- drop integrated 0001-fdo-37584-Make-a-real-copy-of-the-text-where-to-coun.patch +- drop integrated 0001-Resolves-fdo-37668-bitwise-operations-on-signed-numb.patch + +* Thu Jun 09 2011 Caolán McNamara - 3.4.0.2-5 +- Resolves: rhbz#699909 crash in export of .doc in lcl_getField +- Resolves: fdo#37584 Make a real copy of the text +- Resolves: rhbz#709503/fdo#37668 bitwise operations on signed values + +* Tue Jun 07 2011 Caolán McNamara - 3.4.0.2-4 +- Resolves: rhbz#710556 't crash on missing graphics .pptx export +- Resolves: rhbz#652604 better survive exceptions in autorecovery + +* Thu Jun 02 2011 Caolán McNamara - 3.4.0.2-3 +- Resolves: rhbz#710004 band aid for crash + +* Mon May 30 2011 Caolán McNamara - 3.4.0.2-2 +- Resolves: rhbz#707317 avoid crash in getRowSpan + +* Fri May 27 2011 David Tardon - 3.4.0.2-1 +- 3.4.0 RC2 +- drop integrated 0001-fix-build-with-system-bsh.patch + +* Wed May 25 2011 Caolán McNamara - 3.4.0.1-3 +- rebuild for new hunspell + +* Tue May 24 2011 David Tardon - 3.4.0.1-2 +- Resolves: rhbz#706110 oosplash.bin segfault on every login + +* Fri May 20 2011 David Tardon - 3.4.0.1-1 +- 3.4 RC1 +- Resolves: rhbz#702635 set correct page number when exporting selected + pages + +* Sat May 07 2011 Christopher Aillon - 3.3.99.4-2 +- Update icon cache scriptlet + +* Sat May 07 2011 David Tardon 3.3.99.4-1 +- 3.4 beta4 +- drop integrated 0001-Removed-duplicate-code-block-mis-merge-prolly.patch +- drop integrated 7de0b88ce2dd932915894385b54be1897d5ee053.zip + +* Mon Apr 18 2011 Caolán McNamara 3.3.99.1-2 +- Resolves: rhbz#695509 crash in RefreshDocumentLB +- bubble down configure test findings on visibility + +* Mon Apr 11 2011 Caolán McNamara 3.3.99.1-1 +- 3.4 beta1 +- drop openoffice.org-1.9.123.ooo53397.prelinkoptimize.desktop.patch + in favour of ooosplash +- drop openoffice.org-2.2.0.gccXXXXX.solenv.javaregistration.patch + because components are passively registered now +- drop integrated openoffice.org-3.1.0.ooo102061.sc.cellanchoring.patch +- drop integrated turn-script-providers-into-extensions.patch +- drop integrated 0001-tidy-this-up-and-don-t-bail-out-on-mislength-records.patch +- drop integrated 0001-free-ctxt-after-taking-lastError-details.patch +- drop integrated 0001-Removed-suspect-hack.-Cursor-on-post-it-now-scrolls-.patch +- drop integrated libreoffice-gcc4.6.0.patch +- drop integrated 0001-fexceptions-fexceptions.patch +- drop integrated 0001-Related-rhbz-672872-cancel-gtk-file-dialog-on-deskto.patch +- drop vbahelper.visibility.patch +- drop integrated 0001-Resolves-fdo-33509-i62414-out-by-one-breaks-CTL-spel.patch +- drop integrated 0001-Resolves-rhbz-670020-crash-in-slidesorting.patch +- drop integrated 0001-Resolves-rhbz-676539-handle-missing-pWindows-from-xW.patch +- drop integrated 0001-Resolves-fdo-33750-i94623-use-optimal-border-width-w.patch +- drop integrated 0001-rhbz-649310-don-t-crash-deregistering-diff.-platform.patch +- drop integrated 0001-Resolves-rhbz-674330-dereference-of-NULL-mpBase.patch +- drop integrated 0001-rhbz-678284-Get-correct-current-position-when-shift-page-up-and-.patch +- drop integrated 0001-Resolves-rhbz-681159-bandaid-for-crash.patch +- drop integrated 0001-Resolves-rhbz-672818-bandaid-for-crash-in-SwTxtNode-.patch +- drop integrated 0001-install-high-resolution-icons.patch +- drop integrated 0001-Resolves-rhbz-682716-pa-IN-isn-t-handled-by-fontconf.patch +- drop integrated 0001-Related-rhbz-684477-make-sure-this-is-thread-safe.patch +- drop integrated 0001-Resolves-rhbz-682621-better-resizing-of-overtall-gly.patch +- drop integrated 0001-Resolves-rhbz-684620-crash-with-NULL-pTableBox.patch +- drop integrated libreoffice-fdo33947.sd.print.crash.patch +- drop integrated 0001-add-cairo_ft_font_face_create_for_pattern-wrapper.patch +- drop integrated 0001-Related-rhbz-680460-reorganize-this-to-make-it-inher.patch +- drop integrated 0001-Related-rhbz-680460-don-t-bother-with-an-interim-Fon.patch +- drop integrated 0001-Resolves-rhbz-680460-honour-lcdfilter-subpixeling-et.patch +- drop integrated 0001-Cut-Gordian-Knot-of-who-owns-the-font-options.patch +- drop integrated 0001-beware-of-invalidated-iterator.patch +- drop integrated rhbz680766.fix-mdds-crash.patch +- drop integrated 0001-Resolves-rhbz-684580-X-and-strike-through-escapes-ra.patch +- drop integrated 0001-set-mime-types-on-flat-xml-filters.patch +- drop integrated 0001-add-flat-xml-types-to-.desktop-files-etc.patch +- drop integrated libreoffice-fdo31271.icu.patch + +* Tue Apr 05 2011 Caolán McNamara 3.3.2.2-6 +- Resolves: rhbz#655686 get order of shutdown correct + +* Wed Mar 30 2011 Caolán McNamara 3.3.2.2-5 +- Add application/vnd.oasis.opendocument.text-flat-xml, etc. to + .desktop files for mcepl + +* Tue Mar 29 2011 Caolán McNamara 3.3.2.2-4 +- Resolves: rhbz#684580 improve X and / strike-through + +* Thu Mar 24 2011 David Tardon 3.3.2.2-3 +- Resolves: rhbz#680766 crash in mdds + +* Wed Mar 23 2011 David Tardon 3.3.2.2-2 +- Related: rhbz#689268 versioned deps need to contain epoch + +* Tue Mar 22 2011 Caolán McNamara 3.3.2.2-1 +- latest version +- drop integrated 0001-Resolves-fdo-33701-ensure-node-outlives-path.patch +- drop integrated 0001-valgrind-don-t-leave-an-evil-thread-running-after-ma.patch + +* Tue Mar 22 2011 Caolán McNamara 3.3.1.2-12 +- Fix fontoptions cache +- avoid crash in calc on changing size of rows (dtardon) + +* Mon Mar 21 2011 Caolán McNamara 3.3.1.2-11 +- Resolves: rhbz#689268 autocorrs from OOo F14 not upgraded + +* Wed Mar 16 2011 Caolán McNamara 3.3.1.2-10 +- Resolves: rhbz#680460 honour lcdfilter and subpixeling + +* Tue Mar 15 2011 Caolán McNamara 3.3.1.2-9 +- Resolves: fdo#33947 sd print crash + +* Mon Mar 14 2011 Caolán McNamara 3.3.1.2-8 +- Related: rhbz#684477 make sure this is thread safe +- Resolves: rhbz#684620 crash with NULL pTableBox + +* Sun Mar 13 2011 Marek Kasik 3.3.1.2-7 +- Rebuild (poppler-0.16.3) + +* Wed Mar 09 2011 Caolán McNamara 3.3.1.2-6 +- Resolves: rhbz#682621 better resizing of overtall glyphsubs + +* Tue Mar 08 2011 Caolán McNamara 3.3.1.2-5 +- Resolves: rhbz#682716 pa-IN isn't handled well by fontconfig + +* Tue Mar 08 2011 David Tardon 3.3.1.2-4 +- install 128x128 px icons + +* Wed Mar 02 2011 Caolán McNamara 3.3.1.2-3 +- Resolves: rhbz#681159 crash in writer +- Resolves: rhbz#672818 crash in writer +- Resolves: fdo#33701 ensure node outlives path +- Resolves: rhbz#681738 crash on writing config post-main + +* Thu Feb 17 2011 Caolán McNamara 3.3.1.2-2 +- Resolves: rhbz#678284 Calc crashes during cell select with keys + (dtardon) + +* Thu Feb 17 2011 Caolán McNamara 3.3.1.2-1 +- RC2 + +* Wed Feb 16 2011 Caolán McNamara 3.3.1.1-2 +- Resolves: rhbz#674330 dereference of NULL mpBase + +* Fri Feb 11 2011 Caolán McNamara 3.3.1.1-1 +- 3.3.1 rc1 +- drop integrated 0001-don-t-pushback-and-process-a-corrupt-extension.patch +- drop integrated libreoffice-fdo32561.comphelper.patch +- drop integrated 0001-Related-rhbz-610103-more-woes-on-rpm-upgrade-vs-rpm-.patch +- drop integrated 0001-Resolves-rhbz-673819-crash-on-changing-position-of-d.patch +- drop integrated 0001-rhbz-666440-don-t-pushback-and-process-a-corrupt-extension.patch + +* Thu Feb 10 2011 Caolán McNamara 3.3.0.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild +- Related: rhbz#610103 make this even more robust +- Related: rhbz#672872 cancel gtk file dialog on terminate +- Resolves: fdo#33509/ooo#62414 fix CTL spelling popup +- Resolves: rhbz#673819 crash on changing position of header/footer object +- Resolves: rhbz#670020 crash in slidesorting +- Resolves: rhbz#676539 handle missing pWindows from xWindows +- Resolves: rhbz#649310 don't crash deregistering diff. platform ext. + (dtardon) +- Resolves: rhbz#666440 don't pushback and process a corrupt extension + +* Mon Jan 24 2011 Caolán McNamara 3.3.0.4-2 +- Resolves: rhbz#671540 fix lonely ) + +* Thu Jan 20 2011 Caolán McNamara 3.3.0.4-1 +- next release candidate +- drop integrated 0001-fix-presenter-screens-description.xml-build.patch + +* Tue Jan 18 2011 Caolán McNamara 3.3.0.3-2 +- backport fix to get presenter screen working +- make handling busted extensions more robust + +* Wed Jan 12 2011 Caolán McNamara 3.3.0.3-1 +- latest version +- drop integrated 0001-Resoves-rhbz-663857-font-color-missing-C-FAQ-10.3-do.patch +- drop integrated 0001-Avoid-double-paste-when-pasting-text-into-cell-comme.patch +- drop integrated 0001-Resolves-rhbz-660342-Undo-Redo-crash-with-postits.patch +- drop integrated 0001-Resolves-rhbz-666088-clean-up-search-cache-singleton.patch + +* Thu Jan 06 2011 Caolán McNamara 3.3.0.2-5 +- Resolves: rhbz#666088 don't crash on clean up of search cache + +* Wed Jan 05 2011 Lukas Tinkl 3.3.0.2-4 +- create a KDE integration subpackage + +* Mon Jan 03 2011 David Tardon 3.3.0.2-3 +- rebuild with new poppler + +* Wed Dec 22 2010 Caolán McNamara 3.3.0.2-2 +- Resolves: rhbz#663724 fdo32572-sc-dont-double-paste.patch +- Resolves: rhbz#660342 Undo/Redo crash with postits + +* Tue Dec 21 2010 Caolán McNamara 3.3.0.2-1 +- latest version + +* Sat Dec 18 2010 Caolán McNamara 3.3.0.1-4 +- Resolves: rhbz#663857 font color missing in transitions + +* Wed Dec 15 2010 Rex Dieter - 3.3.0.1-3 +- rebuild (poppler) + +* Wed Dec 15 2010 Caolán McNamara 3.3.0.1-2 +- Fix up some doc imports + +* Sun Dec 05 2010 Caolán McNamara 3.3.0.1-1 +- release candidate 1 +- drop integrated qstart.dont-forceenabled-on-post-reg-restart.patch +- drop integrated exit.quickstarter.when.deleted.patch +- drop integrated 0001-destroydesktop.in.timeout.patch +- drop integrated openoffice.org-3.3.0.rhbz657541.join-paragraphs.patch + +* Sat Nov 27 2010 Caolán McNamara 3.2.99.3-2 +- Resolves: rhbz#610103 exit quickstarter when libs deleted +- Resolves: rhbz#652695 release desktop in timeout +- Resolves: rhbz#657541 don't crash during processing of auto. styles + when joining paragraphs (dtardon) + +* Thu Nov 18 2010 Caolán McNamara 3.2.99.2-5 +- Resolves: rhbz#649210 add Sinhalese langpack + +* Sat Oct 30 2010 Caolán McNamara 3.2.99.2-4 +- langpack macro hard-coded version number + +* Fri Oct 22 2010 Caolán McNamara 3.2.99.2-3 +- Resolves: xdg632229 gnomeshell app tracking + +* Tue Oct 12 2010 David Tardon 3.2.99.2-2 +- use macros to define auto-correction and language pack subpackages + +* Mon Oct 11 2010 Caolán McNamara 3.2.99.2-1 +- next LibreOffice milestone +- drop integrated openoffice.org-2.3.0.ooo76649.httpencoding.patch +- drop integrated workspace.dtardon03.patch +- drop integrated openoffice.org-3.1.0.ooo61927.sw.ww6.unicodefontencoding.patch +- drop integrated workspace.impress195.patch +- drop integrated workspace.srb1.patch +- drop integrated openoffice.org-3.2.0.ooo106502.svx.fixspelltimer.patch +- drop integrated openoffice.org-3.3.0.ooo108246.svx.hide-sql-group-when-inactive.patch +- drop integrated openoffice.org-3.2.0.ooo95369.sw.sortedobjs.patch +- drop integrated openoffice.org-3.2.0.ooo110142.svx.safercolornames.patch +- drop integrated openoffice.org-3.3.0.ooo111758.sd.xerror.patch +- drop integrated openoffice.org-3.2.0.ooo111741.extras.malformed-xml-file.patch +- drop integrated openoffice.org-3.3.0.ooo112059.sw.avoid-null-ptr-deref.patch +- drop integrated openoffice.org-3.3.0.ooo100686.wizards.types.not.mediatypes.patch +- drop integrated workspace.vcl113.patch +- drop integrated openoffice.org-3.3.0.ooo112384.sw.export.doc.styledoesntexist.patch +- drop integrated workspace.cmcfixes77.patch +- drop integrated workspace.vcl114.patch +- drop integrated openoffice.org-3.3.0.ooo106591.sal.tradcopy.patch +- drop integrated workspace.vcl115.patch +- drop integrated workspace.cmcfixes78.patch +- drop integrated openoffice.org-3.3.0.ooo114012.sd.bada11ychain.patch +- drop integrated workspace.cmcfixes79.patch +- drop integrated openoffice.org-3.3.0.ooo114703.vcl.betterlocalize.font.patch +- drop integrated openoffice.org-3.3.0.rh638185.editeng.cjkctlhtmlsizes.patch +- drop integrated openoffice.org-3.3.0.rh637738.libgcrypt.addmutex.patch +- drop integrated openoffice.org-3.2.0.rh632236.writerfilter.cleanup-cell-props.patch +- drop workspace.gtk3.patch + +* Wed Oct 06 2010 Caolán McNamara 3.2.99.1-2 +- Related: rhbz#639945 pull in review changes + + redland build-fix + + replace awk script + + validate .destop files + +* Wed Sep 29 2010 Caolán McNamara 3.2.99.1-1 +- initial import of the leviathan