start packaging 4.2.0

f41
David Tardon 11 years ago
parent ae0cf6b030
commit a0d2c2deeb

6
.gitignore vendored

@ -57,3 +57,9 @@
/libreoffice-4.1.3.2.tar.xz
/libreoffice-help-4.1.3.2.tar.xz
/libreoffice-translations-4.1.3.2.tar.xz
/libreoffice-4.2.0.0.alpha1.tar.xz
/libreoffice-help-4.2.0.0.alpha1.tar.xz
/libreoffice-translations-4.2.0.0.alpha1.tar.xz
/libreoffice-4.2.0.0.beta1.tar.xz
/libreoffice-help-4.2.0.0.beta1.tar.xz
/libreoffice-translations-4.2.0.0.beta1.tar.xz

@ -1,138 +0,0 @@
From 163116da07b5b277b9f0489e2542fac6eef43cc9 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
(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 <com/sun/star/i18n/WordType.hpp>
#include <unotest/bootstrapfixturebase.hxx>
-#include <unicode/uvernum.h>
+#include <unicode/uversion.h>
#include <rtl/strbuf.hxx>
#include <rtl/ustrbuf.hxx>
@@ -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);

@ -1,209 +0,0 @@
From 82bce2c10fe5718a3a51125ce0c284c13315d00d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 15 Nov 2013 17:06:21 +0000
Subject: [PATCH] Related: rhbz#1014990 valgrind reports uninitialized variable
(cherry picked from commit f3660062ce8a2c65d483b83c2800d9b958d12f08)
Conflicts:
sd/source/filter/eppt/epptbase.hxx
Change-Id: Ibaa2ed0ee2f1f3f00bceec91ccced968e4913e47
Related: rhbz#1014990 valgrind reports uninitialized another variable
Change-Id: I77f082ea145b0f20daa93c3ee04067ecb6c3b108
(cherry picked from commit b7069ad07dc651f5326cd3a671588d8c1ecf2534)
Related: rhbz#1014990 valgrind reports yet another uninitialized variable
Change-Id: Idf15ee825a34aa7788c422475aa6cea8ff802581
(cherry picked from commit e0840f70565062b712e544f952640ee35cfb6a27)
Related: rhbz#1014990 valgrind reports yet another unint variable
Change-Id: Idf6a0a1e12fffee6c090add41247723f1d9cf576
(cherry picked from commit b211b8b2e14bd961a7b32033468a94cbff52b5c4)
Reviewed-on: https://gerrit.libreoffice.org/6712
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Michael Stahl <mstahl@redhat.com>
---
sd/source/filter/eppt/epptbase.hxx | 3 +++
sd/source/filter/eppt/pptx-stylesheet.cxx | 4 +--
sd/source/filter/eppt/pptx-text.cxx | 41 +++++++++++++++++++++++--------
sd/source/filter/eppt/text.hxx | 28 +++++++++++++--------
vcl/source/filter/wmf/emfwr.cxx | 19 ++++++--------
5 files changed, 62 insertions(+), 33 deletions(-)
diff --git a/sd/source/filter/eppt/epptbase.hxx b/sd/source/filter/eppt/epptbase.hxx
index f84360d..2566b98 100644
--- a/sd/source/filter/eppt/epptbase.hxx
+++ b/sd/source/filter/eppt/epptbase.hxx
@@ -157,6 +157,9 @@ struct FontCollectionEntry
FontCollectionEntry( const String& rName ) :
Scaling ( 1.0 ),
+ Family ( 0 ),
+ Pitch ( 0 ),
+ CharSet ( 0 ),
Original( rName )
{
ImplInit( rName );
diff --git a/sd/source/filter/eppt/pptx-stylesheet.cxx b/sd/source/filter/eppt/pptx-stylesheet.cxx
index d9fd8fd..24e98f1 100644
--- a/sd/source/filter/eppt/pptx-stylesheet.cxx
+++ b/sd/source/filter/eppt/pptx-stylesheet.cxx
@@ -286,8 +286,8 @@ void PPTExParaSheet::SetStyleSheet( const ::com::sun::star::uno::Reference< ::co
if ( !nLevel )
{
- if ( ( aParagraphObj.meBullet == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
- && aParagraphObj.bExtendedParameters )
+ if (aParagraphObj.bExtendedParameters &&
+ aParagraphObj.meBullet == ::com::sun::star::beans::PropertyState_DIRECT_VALUE)
{
for ( sal_Int16 i = 0; i < 5; i++ )
{
diff --git a/sd/source/filter/eppt/pptx-text.cxx b/sd/source/filter/eppt/pptx-text.cxx
index adadc44..cc0c769 100644
--- a/sd/source/filter/eppt/pptx-text.cxx
+++ b/sd/source/filter/eppt/pptx-text.cxx
@@ -628,10 +628,21 @@ PortionObj& PortionObj::operator=( const PortionObj& rPortionObj )
return *this;
}
-ParagraphObj::ParagraphObj( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
- PPTExBulletProvider& rProv ) :
- maMapModeSrc ( MAP_100TH_MM ),
- maMapModeDest ( MAP_INCH, Point(), Fraction( 1, 576 ), Fraction( 1, 576 ) )
+ParagraphObj::ParagraphObj(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ PPTExBulletProvider& rProv)
+ : maMapModeSrc(MAP_100TH_MM)
+ , maMapModeDest(MAP_INCH, Point(), Fraction( 1, 576 ), Fraction( 1, 576 ))
+ , mnTextSize(0)
+ , mbFirstParagraph(false)
+ , mbLastParagraph(false)
+ , mnTextAdjust(0)
+ , mnLineSpacing(0)
+ , mbFixedLineSpacing(false)
+ , mnLineSpacingTop(0)
+ , mnLineSpacingBottom(0)
+ , mbForbiddenRules(false)
+ , mbParagraphPunctation(false)
+ , mnBiDi(0)
{
mXPropSet = rXPropSet;
@@ -644,12 +655,22 @@ ParagraphObj::ParagraphObj( const ::com::sun::star::uno::Reference< ::com::sun::
ImplGetParagraphValues( rProv, sal_False );
}
- ParagraphObj::ParagraphObj( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > & rXTextContent,
- ParaFlags aParaFlags, FontCollection& rFontCollection, PPTExBulletProvider& rProv ) :
- maMapModeSrc ( MAP_100TH_MM ),
- maMapModeDest ( MAP_INCH, Point(), Fraction( 1, 576 ), Fraction( 1, 576 ) ),
- mbFirstParagraph ( aParaFlags.bFirstParagraph ),
- mbLastParagraph ( aParaFlags.bLastParagraph )
+ParagraphObj::ParagraphObj(::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > & rXTextContent,
+ ParaFlags aParaFlags, FontCollection& rFontCollection, PPTExBulletProvider& rProv )
+ : maMapModeSrc(MAP_100TH_MM)
+ , maMapModeDest(MAP_INCH, Point(), Fraction( 1, 576 ), Fraction( 1, 576 ))
+ , mnTextSize(0)
+ , mbIsBullet(false)
+ , mbFirstParagraph( aParaFlags.bFirstParagraph )
+ , mbLastParagraph( aParaFlags.bLastParagraph )
+ , mnTextAdjust(0)
+ , mnLineSpacing(0)
+ , mbFixedLineSpacing(false)
+ , mnLineSpacingTop(0)
+ , mnLineSpacingBottom(0)
+ , mbForbiddenRules(false)
+ , mbParagraphPunctation(false)
+ , mnBiDi(0)
{
bExtendedParameters = sal_False;
diff --git a/sd/source/filter/eppt/text.hxx b/sd/source/filter/eppt/text.hxx
index 06bc4e0..c60ae43 100644
--- a/sd/source/filter/eppt/text.hxx
+++ b/sd/source/filter/eppt/text.hxx
@@ -26,6 +26,7 @@
#include <rtl/textenc.h>
#include <com/sun/star/awt/FontDescriptor.hpp>
#include <com/sun/star/lang/Locale.hpp>
+#include <editeng/svxenum.hxx>
#include <boost/shared_ptr.hpp>
@@ -62,17 +63,24 @@ struct SOParagraph
sal_Bool bNumberingIsNumber;
SOParagraph()
+ : bExtendedParameters(false)
+ , nParaFlags(0)
+ , nBulletFlags(0)
+ , nNumberingType(SVX_NUM_NUMBER_NONE)
+ , nHorzAdjust(0)
+ , nBulletColor(0)
+ , nBulletOfs(0)
+ , nStartWith(0)
+ , nTextOfs(0)
+ , nBulletRealSize(0)
+ , nDepth(0)
+ , cBulletId(0)
+ , bExtendedBulletsUsed(false)
+ , nBulletId(0xffff)
+ , nMappedNumType(0)
+ , bNumberingIsNumber(true)
{
- nDepth = 0;
- bExtendedParameters = sal_False;
- nParaFlags = 0;
- nBulletFlags = 0;
- nBulletOfs = 0;
- nTextOfs = 0;
- bExtendedBulletsUsed = sal_False;
- nBulletId = 0xffff;
- bNumberingIsNumber = sal_True;
- };
+ }
};
class PropStateValue : public PropValue
diff --git a/vcl/source/filter/wmf/emfwr.cxx b/vcl/source/filter/wmf/emfwr.cxx
index e4e3e51..841aa98 100644
--- a/vcl/source/filter/wmf/emfwr.cxx
+++ b/vcl/source/filter/wmf/emfwr.cxx
@@ -282,21 +282,18 @@ sal_Bool EMFWriter::WriteEMF( const GDIMetaFile& rMtf, FilterConfigItem* pFilter
{
const sal_uLong nHeaderPos = m_rStm.Tell();
- mpHandlesUsed = new sal_Bool[ MAXHANDLES ];
- memset( mpHandlesUsed, 0, MAXHANDLES * sizeof( sal_Bool ) );
- mnHorTextAlign = mnHandleCount = mnLastPercent = mnRecordPos = mnRecordCount = 0;
- mnRecordPlusPos = 0;
- mnLineHandle = mnFillHandle = mnTextHandle = HANDLE_INVALID;
- mbRecordOpen = sal_False;
- mbRecordPlusOpen = false;
-
-
maVDev.EnableOutput( sal_False );
maVDev.SetMapMode( rMtf.GetPrefMapMode() );
- mpFilterConfigItem = pFilterConfigItem;
-
// don't work with pixel as destination map mode -> higher resolution preferrable
maDestMapMode.SetMapUnit( MAP_100TH_MM );
+ mpFilterConfigItem = pFilterConfigItem;
+ mpHandlesUsed = new sal_Bool[ MAXHANDLES ];
+ memset( mpHandlesUsed, 0, MAXHANDLES * sizeof( sal_Bool ) );
+ mnHandleCount = mnLastPercent = mnRecordCount = mnRecordPos = mnRecordPlusPos = 0;
+ mbRecordOpen = mbRecordPlusOpen = false;
+ mbLineChanged = mbFillChanged = mbTextChanged = false;
+ mnLineHandle = mnFillHandle = mnTextHandle = HANDLE_INVALID;
+ mnHorTextAlign = 0;
const Size aMtfSizePix( maVDev.LogicToPixel( rMtf.GetPrefSize(), rMtf.GetPrefMapMode() ) );
const Size aMtfSizeLog( maVDev.LogicToLogic( rMtf.GetPrefSize(), rMtf.GetPrefMapMode(), MAP_100TH_MM ) );
--
1.8.3.1

@ -1,134 +0,0 @@
From e3bde35198d8a5420b7106c983766b88ccfba51a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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

@ -1,463 +0,0 @@
From eb27eda272dd9fe6dfa4ebcfef24069bd117e5b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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 <generic/genprn.h>
#include <generic/geninst.h>
#include <headless/svpgdi.hxx>
+#include <osl/file.hxx>
+#include <rtl/bootstrap.hxx>
+#include <rtl/process.h>
#include <vcl/floatwin.hxx>
#include <vcl/svapp.hxx>
#include <vcl/window.hxx>
@@ -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 <dlfcn.h>
+#include <stdlib.h>
+
+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

@ -1,68 +0,0 @@
From b5bd2d1d8d09a44af354584ff187d9e935ffd973 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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<UScriptCode>(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())
{

@ -1,249 +0,0 @@
From 931fc46eb8e09a9b16232fd58a222a47d28c5ea1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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 <unx/gtk/gtkdata.hxx>
#include <unx/gtk/gtkinst.hxx>
#include <unx/gtk/gtkgdi.hxx>
+#include <vcl/help.hxx>
#include <vcl/keycodes.hxx>
#include <vcl/layout.hxx>
#include <unx/wmadaptor.hxx>
@@ -65,11 +66,17 @@
# include <cstdio>
#endif
+#include <comphelper/processfactory.hxx>
+#include <comphelper/sequenceashashmap.hxx>
#include <com/sun/star/accessibility/XAccessibleContext.hpp>
#include <com/sun/star/accessibility/AccessibleRole.hpp>
#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
#include <com/sun/star/accessibility/AccessibleStateType.hpp>
#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
+#include <com/sun/star/frame/Desktop.hpp>
+#include <com/sun/star/frame/ModuleManager.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/util/URLTransformer.hpp>
#if GTK_CHECK_VERSION(3,0,0)
# include <gdk/gdkkeysyms-compat.h>
@@ -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<frame::XModuleManager2> 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

@ -1,45 +0,0 @@
From b9240ac3695c0f4b88c539721f13dc03b5afdabb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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

@ -1,38 +0,0 @@
From 95c7765107d4d668cfa0709dce8003bf3258ef66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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

@ -1,130 +0,0 @@
From 0881ae68b0d7f977003e0798e52548caa2556f44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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

@ -1,138 +0,0 @@
From 78f93c2ef1acd324c289286fe3c13a429340839b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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 <unicode/uscript.h>
#include <unicode/ubidi.h>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/i18n/CharacterIteratorMode.hpp>
+#include <comphelper/processfactory.hxx>
+
// =======================================================================
// 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 <boost/unordered_map.hpp>
#include <boost/unordered_set.hpp>
#include <boost/shared_ptr.hpp>
+#include <com/sun/star/i18n/XBreakIterator.hpp>
namespace basegfx { class B2DPolyPolygon; }
@@ -311,6 +312,7 @@
{
private:
ServerFont& mrServerFont;
+ com::sun::star::uno::Reference<com::sun::star::i18n::XBreakIterator> 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; }
};

@ -1,34 +0,0 @@
From 166510ed48bf49b75a031ce973f41d08fb4e4518 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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

@ -1,33 +0,0 @@
From ca576e0804324bbb36b697543cbe992e34d4b951 Mon Sep 17 00:00:00 2001
From: Eike Rathke <erack@redhat.com>
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<long>::min() && aFocusRect.Left() - 1 >= pEntry->aRect.Left() )
aFocusRect.Left()--;
- if( aFocusRect.Right() + 1 <= pEntry->aRect.Right() )
+ if( aFocusRect.Right() < ::std::numeric_limits<long>::max() && aFocusRect.Right() + 1 <= pEntry->aRect.Right() )
aFocusRect.Right()++;
return aFocusRect;
--
1.8.3.1

@ -1,289 +0,0 @@
From 0cdd8a4f17a80b55c54c1f287c1f10bd7fa4307c Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Sun, 3 Nov 2013 10:02:58 +0100
Subject: [PATCH] add config. for formats newly supported by libmwaw
Change-Id: I19cc5b13adf1c0d8cf26abbc9f4254ae89a970fc
---
filter/Configuration_filter.mk | 6 +++++
.../config/fragments/filters/Beagle_Works.xcu | 29 ++++++++++++++++++++++
.../config/fragments/filters/Great_Works.xcu | 29 ++++++++++++++++++++++
filter/source/config/fragments/filters/MacDoc.xcu | 29 ++++++++++++++++++++++
.../config/fragments/types/writer_Beagle_Works.xcu | 29 ++++++++++++++++++++++
.../config/fragments/types/writer_Great_Works.xcu | 29 ++++++++++++++++++++++
.../config/fragments/types/writer_MacDoc.xcu | 29 ++++++++++++++++++++++
writerperfect/source/writer/MWAWImportFilter.cxx | 2 +-
8 files changed, 181 insertions(+), 1 deletion(-)
create mode 100644 filter/source/config/fragments/filters/Beagle_Works.xcu
create mode 100644 filter/source/config/fragments/filters/Great_Works.xcu
create mode 100644 filter/source/config/fragments/filters/MacDoc.xcu
create mode 100644 filter/source/config/fragments/types/writer_Beagle_Works.xcu
create mode 100644 filter/source/config/fragments/types/writer_Great_Works.xcu
create mode 100644 filter/source/config/fragments/types/writer_MacDoc.xcu
diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk
index 269866b..7102e27 100644
--- a/filter/Configuration_filter.mk
+++ b/filter/Configuration_filter.mk
@@ -304,14 +304,17 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_writer_types.xcu,filter
writer_StarOffice_XML_Writer \
writer_WordPerfect_Document \
writer_MS_Works_Document \
+ writer_Beagle_Works \
writer_ClarisWorks \
writer_DocMaker \
writer_eDoc_Document \
writer_FullWrite_Professional \
+ writer_Great_Works \
writer_HanMac_Word_K \
writer_LightWayText \
writer_Mac_Word \
writer_Mac_Works \
+ writer_MacDoc \
writer_MacWrite \
writer_MacWritePro \
writer_Mariner_Write \
@@ -350,14 +353,17 @@ $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_writer_filters.xcu,fi
StarOffice_XML__Writer_ \
WordPerfect \
MS_Works \
+ Beagle_Works \
ClarisWorks \
DocMaker \
eDoc_Document \
FullWrite_Professional \
+ Great_Works \
HanMac_Word_K \
LightWayText \
Mac_Word \
Mac_Works \
+ MacDoc \
MacWrite \
MacWritePro \
Mariner_Write \
diff --git a/filter/source/config/fragments/filters/Beagle_Works.xcu b/filter/source/config/fragments/filters/Beagle_Works.xcu
new file mode 100644
index 0000000..f1cab85
--- /dev/null
+++ b/filter/source/config/fragments/filters/Beagle_Works.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="Beagle Works" oor:op="replace">
+ <prop oor:name="Flags">
+ <value>IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED</value>
+ </prop>
+ <prop oor:name="FilterService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">Beagle Works Document</value>
+ </prop>
+ <prop oor:name="FileFormatVersion">
+ <value>0</value>
+ </prop>
+ <prop oor:name="Type">
+ <value>writer_Beagle_Works</value>
+ </prop>
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+</node>
diff --git a/filter/source/config/fragments/filters/Great_Works.xcu b/filter/source/config/fragments/filters/Great_Works.xcu
new file mode 100644
index 0000000..6090504
--- /dev/null
+++ b/filter/source/config/fragments/filters/Great_Works.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="Great Works" oor:op="replace">
+ <prop oor:name="Flags">
+ <value>IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED</value>
+ </prop>
+ <prop oor:name="FilterService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">Great Works Document</value>
+ </prop>
+ <prop oor:name="FileFormatVersion">
+ <value>0</value>
+ </prop>
+ <prop oor:name="Type">
+ <value>writer_Great_Works</value>
+ </prop>
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+</node>
diff --git a/filter/source/config/fragments/filters/MacDoc.xcu b/filter/source/config/fragments/filters/MacDoc.xcu
new file mode 100644
index 0000000..70ce7d2
--- /dev/null
+++ b/filter/source/config/fragments/filters/MacDoc.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="MacDoc" oor:op="replace">
+ <prop oor:name="Flags">
+ <value>IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED</value>
+ </prop>
+ <prop oor:name="FilterService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">MacDoc Document</value>
+ </prop>
+ <prop oor:name="FileFormatVersion">
+ <value>0</value>
+ </prop>
+ <prop oor:name="Type">
+ <value>writer_MacDoc</value>
+ </prop>
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+</node>
diff --git a/filter/source/config/fragments/types/writer_Beagle_Works.xcu b/filter/source/config/fragments/types/writer_Beagle_Works.xcu
new file mode 100644
index 0000000..efe015d
--- /dev/null
+++ b/filter/source/config/fragments/types/writer_Beagle_Works.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="writer_Beagle_Works" oor:op="replace">
+ <prop oor:name="DetectService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="Extensions">
+ <value>hqx zip</value>
+ </prop>
+ <prop oor:name="MediaType">
+ <value></value>
+ </prop>
+ <prop oor:name="Preferred">
+ <value>true</value>
+ </prop>
+ <prop oor:name="PreferredFilter">
+ <value>Beagle Works</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value>Beagle Works</value>
+ </prop>
+</node>
diff --git a/filter/source/config/fragments/types/writer_Great_Works.xcu b/filter/source/config/fragments/types/writer_Great_Works.xcu
new file mode 100644
index 0000000..ff3fda0
--- /dev/null
+++ b/filter/source/config/fragments/types/writer_Great_Works.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="writer_Great_Works" oor:op="replace">
+ <prop oor:name="DetectService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="Extensions">
+ <value>hqx zip</value>
+ </prop>
+ <prop oor:name="MediaType">
+ <value></value>
+ </prop>
+ <prop oor:name="Preferred">
+ <value>true</value>
+ </prop>
+ <prop oor:name="PreferredFilter">
+ <value>Great Works</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value>Great Works</value>
+ </prop>
+</node>
diff --git a/filter/source/config/fragments/types/writer_MacDoc.xcu b/filter/source/config/fragments/types/writer_MacDoc.xcu
new file mode 100644
index 0000000..172215b
--- /dev/null
+++ b/filter/source/config/fragments/types/writer_MacDoc.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="writer_MacDoc" oor:op="replace">
+ <prop oor:name="DetectService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="Extensions">
+ <value>hqx zip</value>
+ </prop>
+ <prop oor:name="MediaType">
+ <value></value>
+ </prop>
+ <prop oor:name="Preferred">
+ <value>true</value>
+ </prop>
+ <prop oor:name="PreferredFilter">
+ <value>MacDoc</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value>MacDoc</value>
+ </prop>
+</node>
diff --git a/writerperfect/source/writer/MWAWImportFilter.cxx b/writerperfect/source/writer/MWAWImportFilter.cxx
index 11d6cd8..7cfe4ab 100644
--- a/writerperfect/source/writer/MWAWImportFilter.cxx
+++ b/writerperfect/source/writer/MWAWImportFilter.cxx
@@ -169,7 +169,7 @@ throw( com::sun::star::uno::RuntimeException )
sTypeName = "writer_HanMac_Word_K";
break;
case MWAWDocument::MWAW_T_HANMACWORDJ:
- // sTypeName = "writer_HanMac_Word_J";
+ sTypeName = "writer_HanMac_Word_J";
break;
case MWAWDocument::MWAW_T_LIGHTWAYTEXT:
sTypeName = "writer_LightWayText";
--
1.8.4.2

@ -1,27 +0,0 @@
From ac58f62832260af9473eca69e764586258692bb6 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
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

@ -1,380 +0,0 @@
From 78e2af8d7141015372995a3583242998c977e829 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Mon, 18 Nov 2013 11:29:47 +0100
Subject: [PATCH] enable more formats supported by libmwaw
Change-Id: I60d5ff673843236436af12f86f40916b7d266cd3
---
filter/Configuration_filter.mk | 6 ++++
.../config/fragments/filters/Beagle_Works.xcu | 4 +--
.../config/fragments/filters/Great_Works.xcu | 4 +--
filter/source/config/fragments/filters/MacDoc.xcu | 2 +-
.../source/config/fragments/filters/Mac_Acta.xcu | 29 +++++++++++++++++
.../source/config/fragments/filters/Mac_More.xcu | 29 +++++++++++++++++
.../config/fragments/types/writer_Beagle_Works.xcu | 6 ++--
.../config/fragments/types/writer_Great_Works.xcu | 6 ++--
.../config/fragments/types/writer_Mac_Acta.xcu | 29 +++++++++++++++++
.../config/fragments/types/writer_Mac_More.xcu | 29 +++++++++++++++++
writerperfect/source/writer/MWAWImportFilter.cxx | 37 ++++++++++++++++++++--
11 files changed, 167 insertions(+), 14 deletions(-)
create mode 100644 filter/source/config/fragments/filters/Mac_Acta.xcu
create mode 100644 filter/source/config/fragments/filters/Mac_More.xcu
create mode 100644 filter/source/config/fragments/types/writer_Mac_Acta.xcu
create mode 100644 filter/source/config/fragments/types/writer_Mac_More.xcu
diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk
index bace597..347d00c 100644
--- a/filter/Configuration_filter.mk
+++ b/filter/Configuration_filter.mk
@@ -328,8 +328,11 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_writer_types.xcu,filter
writer_eDoc_Document \
writer_FullWrite_Professional \
writer_Great_Works \
+ writer_HanMac_Word_J \
writer_HanMac_Word_K \
writer_LightWayText \
+ writer_Mac_Acta \
+ writer_Mac_More \
writer_Mac_Word \
writer_Mac_Works \
writer_MacDoc \
@@ -384,8 +387,11 @@ $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_writer_filters.xcu,fi
eDoc_Document \
FullWrite_Professional \
Great_Works \
+ HanMac_Word_J \
HanMac_Word_K \
LightWayText \
+ Mac_Acta \
+ Mac_More \
Mac_Word \
Mac_Works \
MacDoc \
diff --git a/filter/source/config/fragments/filters/Beagle_Works.xcu b/filter/source/config/fragments/filters/Beagle_Works.xcu
index f1cab85..e2f9d4c 100644
--- a/filter/source/config/fragments/filters/Beagle_Works.xcu
+++ b/filter/source/config/fragments/filters/Beagle_Works.xcu
@@ -7,7 +7,7 @@
*
-->
-<node oor:name="Beagle Works" oor:op="replace">
+<node oor:name="Beagle_Works" oor:op="replace">
<prop oor:name="Flags">
<value>IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED</value>
</prop>
@@ -15,7 +15,7 @@
<value>com.sun.star.comp.Writer.MWAWImportFilter</value>
</prop>
<prop oor:name="UIName">
- <value xml:lang="x-default">Beagle Works Document</value>
+ <value xml:lang="x-default">BeagleWorks/WordPerfect Works v1 Document</value>
</prop>
<prop oor:name="FileFormatVersion">
<value>0</value>
diff --git a/filter/source/config/fragments/filters/Great_Works.xcu b/filter/source/config/fragments/filters/Great_Works.xcu
index 6090504..0e5aeb3 100644
--- a/filter/source/config/fragments/filters/Great_Works.xcu
+++ b/filter/source/config/fragments/filters/Great_Works.xcu
@@ -7,7 +7,7 @@
*
-->
-<node oor:name="Great Works" oor:op="replace">
+<node oor:name="Great_Works" oor:op="replace">
<prop oor:name="Flags">
<value>IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED</value>
</prop>
@@ -15,7 +15,7 @@
<value>com.sun.star.comp.Writer.MWAWImportFilter</value>
</prop>
<prop oor:name="UIName">
- <value xml:lang="x-default">Great Works Document</value>
+ <value xml:lang="x-default">GreatWorks Document</value>
</prop>
<prop oor:name="FileFormatVersion">
<value>0</value>
diff --git a/filter/source/config/fragments/filters/MacDoc.xcu b/filter/source/config/fragments/filters/MacDoc.xcu
index 70ce7d2..2692709 100644
--- a/filter/source/config/fragments/filters/MacDoc.xcu
+++ b/filter/source/config/fragments/filters/MacDoc.xcu
@@ -15,7 +15,7 @@
<value>com.sun.star.comp.Writer.MWAWImportFilter</value>
</prop>
<prop oor:name="UIName">
- <value xml:lang="x-default">MacDoc Document</value>
+ <value xml:lang="x-default">MacDoc v1 Document</value>
</prop>
<prop oor:name="FileFormatVersion">
<value>0</value>
diff --git a/filter/source/config/fragments/filters/Mac_Acta.xcu b/filter/source/config/fragments/filters/Mac_Acta.xcu
new file mode 100644
index 0000000..c60349a
--- /dev/null
+++ b/filter/source/config/fragments/filters/Mac_Acta.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="Mac_Acta" oor:op="replace">
+ <prop oor:name="Flags">
+ <value>IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED</value>
+ </prop>
+ <prop oor:name="FilterService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">Acta Mac Classic Document</value>
+ </prop>
+ <prop oor:name="FileFormatVersion">
+ <value>0</value>
+ </prop>
+ <prop oor:name="Type">
+ <value>writer_Mac_Acta</value>
+ </prop>
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+</node>
diff --git a/filter/source/config/fragments/filters/Mac_More.xcu b/filter/source/config/fragments/filters/Mac_More.xcu
new file mode 100644
index 0000000..c2485f6
--- /dev/null
+++ b/filter/source/config/fragments/filters/Mac_More.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="Mac_More" oor:op="replace">
+ <prop oor:name="Flags">
+ <value>IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED</value>
+ </prop>
+ <prop oor:name="FilterService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">More Mac v2-3 Document</value>
+ </prop>
+ <prop oor:name="FileFormatVersion">
+ <value>0</value>
+ </prop>
+ <prop oor:name="Type">
+ <value>writer_Mac_More</value>
+ </prop>
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+</node>
diff --git a/filter/source/config/fragments/types/writer_Beagle_Works.xcu b/filter/source/config/fragments/types/writer_Beagle_Works.xcu
index efe015d..5eb45c1 100644
--- a/filter/source/config/fragments/types/writer_Beagle_Works.xcu
+++ b/filter/source/config/fragments/types/writer_Beagle_Works.xcu
@@ -12,7 +12,7 @@
<value>com.sun.star.comp.Writer.MWAWImportFilter</value>
</prop>
<prop oor:name="Extensions">
- <value>hqx zip</value>
+ <value>dummy</value>
</prop>
<prop oor:name="MediaType">
<value></value>
@@ -21,9 +21,9 @@
<value>true</value>
</prop>
<prop oor:name="PreferredFilter">
- <value>Beagle Works</value>
+ <value>Beagle_Works</value>
</prop>
<prop oor:name="UIName">
- <value>Beagle Works</value>
+ <value>BeagleWorks/WordPerfect Works Document</value>
</prop>
</node>
diff --git a/filter/source/config/fragments/types/writer_Great_Works.xcu b/filter/source/config/fragments/types/writer_Great_Works.xcu
index ff3fda0..6c448f3 100644
--- a/filter/source/config/fragments/types/writer_Great_Works.xcu
+++ b/filter/source/config/fragments/types/writer_Great_Works.xcu
@@ -12,7 +12,7 @@
<value>com.sun.star.comp.Writer.MWAWImportFilter</value>
</prop>
<prop oor:name="Extensions">
- <value>hqx zip</value>
+ <value>dummy</value>
</prop>
<prop oor:name="MediaType">
<value></value>
@@ -21,9 +21,9 @@
<value>true</value>
</prop>
<prop oor:name="PreferredFilter">
- <value>Great Works</value>
+ <value>Great_Works</value>
</prop>
<prop oor:name="UIName">
- <value>Great Works</value>
+ <value>GreatWorks Document</value>
</prop>
</node>
diff --git a/filter/source/config/fragments/types/writer_Mac_Acta.xcu b/filter/source/config/fragments/types/writer_Mac_Acta.xcu
new file mode 100644
index 0000000..478add2
--- /dev/null
+++ b/filter/source/config/fragments/types/writer_Mac_Acta.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="writer_Mac_Acta" oor:op="replace">
+ <prop oor:name="DetectService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="Extensions">
+ <value>dummy</value>
+ </prop>
+ <prop oor:name="MediaType">
+ <value></value>
+ </prop>
+ <prop oor:name="Preferred">
+ <value>true</value>
+ </prop>
+ <prop oor:name="PreferredFilter">
+ <value>Mac_Acta</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value>Acta Mac v1-2 Document</value>
+ </prop>
+</node>
diff --git a/filter/source/config/fragments/types/writer_Mac_More.xcu b/filter/source/config/fragments/types/writer_Mac_More.xcu
new file mode 100644
index 0000000..66047d5
--- /dev/null
+++ b/filter/source/config/fragments/types/writer_Mac_More.xcu
@@ -0,0 +1,29 @@
+<!--
+ * 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/.
+ *
+-->
+
+<node oor:name="writer_Mac_More" oor:op="replace">
+ <prop oor:name="DetectService">
+ <value>com.sun.star.comp.Writer.MWAWImportFilter</value>
+ </prop>
+ <prop oor:name="Extensions">
+ <value>dummy</value>
+ </prop>
+ <prop oor:name="MediaType">
+ <value></value>
+ </prop>
+ <prop oor:name="Preferred">
+ <value>true</value>
+ </prop>
+ <prop oor:name="PreferredFilter">
+ <value>Mac_More</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value>More Mac v2-3 Document</value>
+ </prop>
+</node>
diff --git a/writerperfect/source/writer/MWAWImportFilter.cxx b/writerperfect/source/writer/MWAWImportFilter.cxx
index 7cfe4ab..452f3a6 100644
--- a/writerperfect/source/writer/MWAWImportFilter.cxx
+++ b/writerperfect/source/writer/MWAWImportFilter.cxx
@@ -152,6 +152,10 @@ throw( com::sun::star::uno::RuntimeException )
switch (docType)
{
case MWAWDocument::MWAW_T_ACTA:
+ sTypeName = "writer_Mac_Acta";
+ break;
+ case MWAWDocument::MWAW_T_BEAGLEWORKS:
+ sTypeName = "writer_Beagle_Works";
break;
case MWAWDocument::MWAW_T_CLARISWORKS:
sTypeName = "writer_ClarisWorks";
@@ -162,18 +166,24 @@ throw( com::sun::star::uno::RuntimeException )
case MWAWDocument::MWAW_T_EDOC:
sTypeName = "writer_eDoc_Document";
break;
+ case MWAWDocument::MWAW_T_GREATWORKS:
+ sTypeName = "writer_Great_Works";
+ break;
case MWAWDocument::MWAW_T_FULLWRITE:
sTypeName = "writer_FullWrite_Professional";
break;
- case MWAWDocument::MWAW_T_HANMACWORDK:
- sTypeName = "writer_HanMac_Word_K";
- break;
case MWAWDocument::MWAW_T_HANMACWORDJ:
sTypeName = "writer_HanMac_Word_J";
break;
+ case MWAWDocument::MWAW_T_HANMACWORDK:
+ sTypeName = "writer_HanMac_Word_K";
+ break;
case MWAWDocument::MWAW_T_LIGHTWAYTEXT:
sTypeName = "writer_LightWayText";
break;
+ case MWAWDocument::MWAW_T_MACDOC:
+ sTypeName = "writer_MacDoc";
+ break;
case MWAWDocument::MWAW_T_MARINERWRITE:
sTypeName = "writer_Mariner_Write";
break;
@@ -192,6 +202,9 @@ throw( com::sun::star::uno::RuntimeException )
case MWAWDocument::MWAW_T_MICROSOFTWORKS:
sTypeName = "writer_Mac_Works";
break;
+ case MWAWDocument::MWAW_T_MORE:
+ sTypeName = "writer_Mac_More";
+ break;
case MWAWDocument::MWAW_T_NISUSWRITER:
sTypeName = "writer_Nisus_Writer";
break;
@@ -210,6 +223,24 @@ throw( com::sun::star::uno::RuntimeException )
case MWAWDocument::MWAW_T_ZWRITE:
sTypeName = "writer_ZWrite";
break;
+
+ case MWAWDocument::MWAW_T_FRAMEMAKER:
+ case MWAWDocument::MWAW_T_MACDRAW:
+ case MWAWDocument::MWAW_T_MACPAINT:
+ case MWAWDocument::MWAW_T_PAGEMAKER:
+ case MWAWDocument::MWAW_T_READYSETGO:
+ case MWAWDocument::MWAW_T_RAGTIME:
+ case MWAWDocument::MWAW_T_XPRESS:
+ case MWAWDocument::MWAW_T_RESERVED1:
+ case MWAWDocument::MWAW_T_RESERVED2:
+ case MWAWDocument::MWAW_T_RESERVED3:
+ case MWAWDocument::MWAW_T_RESERVED4:
+ case MWAWDocument::MWAW_T_RESERVED5:
+ case MWAWDocument::MWAW_T_RESERVED6:
+ case MWAWDocument::MWAW_T_RESERVED7:
+ case MWAWDocument::MWAW_T_RESERVED8:
+ case MWAWDocument::MWAW_T_RESERVED9:
+ case MWAWDocument::MWAW_T_UNKNOWN:
default:
break;
}
--
1.8.4.2

@ -1,172 +0,0 @@
From f450c132e6a65e1d11f20595bb0bfbf786e1dc2d Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
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

@ -1,45 +0,0 @@
From a79a7f315a0a3bc8148a88bb1d3c6f83a4552094 Mon Sep 17 00:00:00 2001
From: Michael Stahl <mstahl@redhat.com>
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

@ -1,98 +0,0 @@
From 71077148d442b3bbfeefd9a572942946c6a95823 Mon Sep 17 00:00:00 2001
From: Khaled Hosny <khaledhosny@eglug.org>
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

@ -1,405 +0,0 @@
From 4a7096b9c8c0e6451fa0ced06143cb8a65ec10fc Mon Sep 17 00:00:00 2001
From: Eike Rathke <erack@redhat.com>
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 <dtardon@redhat.com>
Tested-by: David Tardon <dtardon@redhat.com>
---
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 <boost/shared_ptr.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/sheet/XFilterFormulaParser.hpp>
+#include <cppuhelper/implbase3.hxx>
+
+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 <com/sun/star/uno/XComponentContext.hpp>
+#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
+ "'<path-to-office-install>\Library\<libname>'!<funcname>". */
+
+ // 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 @@
<service name="com.sun.star.document.ImportFilter"/>
<service name="com.sun.star.document.ExportFilter"/>
</implementation>
+ <implementation name="com.sun.star.comp.oox.xls.FormulaParser">
+ <service name="com.sun.star.sheet.FilterFormulaParser"/>
+ </implementation>
</component>
--
1.8.3.1

@ -1,27 +0,0 @@
From 58556215090bf12991cc8e52cc0f1095a0f44edf Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Tue, 19 Nov 2013 14:03:54 +0100
Subject: [PATCH] rhbz#1031989 Accept --pt in addition to deprecated -pt
Change-Id: I3593b3fc7e0ad405612216fb07e8632050b75cee
(cherry picked from commit 5cb10c4c99e46c97984e4e1c1bca5915f83f0a1d)
---
desktop/source/app/cmdlineargs.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
index ca92a8d..f9baa07 100644
--- a/desktop/source/app/cmdlineargs.cxx
+++ b/desktop/source/app/cmdlineargs.cxx
@@ -186,7 +186,7 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
bStartEvent = false;
bDisplaySpec = false;
}
- else if ( aArg.equalsIgnoreAsciiCase("-pt"))
+ else if ( oArg.equalsIgnoreAsciiCase("pt"))
{
// Print to special printer
bPrintToEvent = true;
--
1.8.3.1

@ -1,239 +0,0 @@
From f4bfce94abc10fbd2d8b37113e27b36c1e79fc61 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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; i<nCount; ++i)
+ {
+ if (pDoc->IsVisible(i))
+ {
+ OUString aString;
+ if (pDoc->GetName(i, aString))
+ {
+ sal_uInt16 nId = static_cast<sal_uInt16>(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

File diff suppressed because it is too large Load Diff

@ -1,56 +0,0 @@
From 0e89a49f67f58e0942ed4aea393ac37e22d9e12d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
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

@ -1,9 +1,12 @@
# temporarily disable debuginfo compression because this box cannot
# handle the memory load .-)
%define _find_debuginfo_dwz_opts %{nil}
# download path contains version without the last (fourth) digit
%define libo_version 4.1.3
%define libo_version 4.2.0
# 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}
%define libo_prerelease .beta1
# rhbz#715152 state vendor
%if 0%{?rhel}
%define vendoroption --with-vendor="Red Hat, Inc."
@ -42,8 +45,8 @@
Summary: Free Software Productivity Suite
Name: libreoffice
Epoch: 1
Version: %{libo_version}.2
Release: 5%{?libo_prerelease}%{?dist}
Version: %{libo_version}.0
Release: 1%{?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/
@ -82,8 +85,11 @@ Source26: %{external_url}/ea2acaf140ae40a87a952caa75184f4d-liborcus-0.5.1.
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
Source30: %{external_url}/libodfgen-0.0.3.tar.bz2
Source31: %{external_url}/libmwaw-0.2.0.tar.bz2
Source32: %{external_url}/libetonyek-0.0.1.tar.bz2
Source33: %{external_url}/libfreehand-0.0.0.tar.bz2
Source34: %{external_url}/libe-book-0.0.2.tar.bz2
%endif
# build tools
@ -122,6 +128,8 @@ BuildRequires: cups-devel
BuildRequires: dbus-glib-devel
BuildRequires: evolution-data-server-devel
BuildRequires: expat-devel
BuildRequires: firebird-devel
BuildRequires: firebird-libfbembed
BuildRequires: fontpackages-devel
BuildRequires: freetype-devel
%if 0%{?rhel} && 0%{?rhel} < 7
@ -145,7 +153,14 @@ BuildRequires: libXinerama-devel
BuildRequires: libXt-devel
%if 0%{?fedora} || 0%{?rhel} >= 7
BuildRequires: libcdr-devel
%endif
%if 0%{?fedora}
BuildRequires: libcmis-devel >= 0.3.0
BuildRequires: libe-book-devel
BuildRequires: libetonyek-devel
BuildRequires: libfreehand-devel
BuildRequires: libmwaw-devel >= 0.2.0
BuildRequires: mdds-devel >= 0.8.1
%endif
BuildRequires: libcurl-devel
%if 0%{?fedora} || 0%{?rhel} >= 7
@ -157,7 +172,6 @@ BuildRequires: libidn-devel
BuildRequires: libjpeg-turbo-devel
BuildRequires: liblangtag-devel >= 0.4.0
BuildRequires: libmspub-devel
BuildRequires: libmwaw-devel >= 0.2.0
BuildRequires: libodfgen-devel
BuildRequires: liborcus-devel >= 0.5.0
BuildRequires: libvisio-devel
@ -170,9 +184,6 @@ BuildRequires: libjpeg-devel
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
@ -206,11 +217,9 @@ 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
@ -249,29 +258,6 @@ 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
Patch30: 0001-update-libmwaw-to-0.2.0.patch
Patch31: 0001-rhbz-1031989-Accept-pt-in-addition-to-deprecated-pt.patch
Patch32: 0001-Related-rhbz-1014990-valgrind-reports-uninitialized-.patch
Patch33: 0001-add-config.-for-formats-newly-supported-by-libmwaw.patch
Patch34: 0001-enable-more-formats-supported-by-libmwaw.patch
%define instdir %{_libdir}
%define baseinstdir %{instdir}/libreoffice
@ -433,21 +419,6 @@ Provides: openoffice.org-ogltrans%{?_isa} = 1:3.3.0
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
@ -534,11 +505,14 @@ Summary: LibreOffice Presentation Application
Group: Applications/Productivity
Requires: %{name}-core = %{epoch}:%{version}-%{release}
Requires: %{name}-ure = %{epoch}:%{version}-%{release}
Obsoletes: %{name}-presentation-minimizer < 2:4.2.0.0-1.alpha1
Obsoletes: %{name}-presenter-screen < 2:4.0.0.0-1.beta1
Provides: %{name}-presentation-minimizer%{?_isa} = %{epoch}:%{version}-%{release}
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-presentation-minimizer%{?_isa} = 1:3.3.0
Provides: openoffice.org-presenter-screen%{?_isa} = 1:3.3.0
%endif
@ -835,7 +809,7 @@ BuildArch: noarch \
Rules for auto-correcting common %{langname} typing errors. \
\
%files -n %{pkgname} \
%doc solver/unxlng*/bin/ure/LICENSE \
%doc instdir/unxlng*/LICENSE \
%dir %{_datadir}/autocorr \
%{-L:%{_datadir}/autocorr/acor_%{lang}.dat} \
%{!-L:%{_datadir}/autocorr/acor_%{lang}-*.dat} \
@ -919,7 +893,7 @@ Rules for auto-correcting common %{langname} typing errors. \
%{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 sr -n Serbian -F -H -Y -A -i sr-Latn -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
@ -977,7 +951,7 @@ Rules for auto-correcting common %{langname} typing errors. \
%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 sr -n Serbian -i sr-Latn
%autocorr -l sv -n Swedish
%autocorr -l tr -n Turkish
%autocorr -l vi -n Vietnamese
@ -1018,29 +992,6 @@ mv -f redhat.soc extras/source/palettes/standard.soc
%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
%patch30 -p1 -b .update-libmwaw-to-0.2.0.patch
%patch31 -p1 -b .rhbz-1031989-Accept-pt-in-addition-to-deprecated-pt.patch
%patch32 -p1 -b .rhbz-1014990-valgrind-reports-uninitialized-.patch
%patch33 -p1 -b .add-config.-for-formats-newly-supported-by-libmwaw.patch
%patch34 -p1 -b .enable-more-formats-supported-by-libmwaw.patch
# TODO: check this
# these are horribly incomplete--empty translations and copied english
@ -1082,15 +1033,15 @@ 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
%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 --enable-python=system --with-system-hsqldb --without-system-libetonyek --without-system-libfreehand
%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
%define distrooptions --without-system-hsqldb --disable-gstreamer-0-10 --enable-gstreamer --with-system-mythes --enable-python=system --without-system-libetonyek --without-system-libfreehand
%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}}
%define distrooptions --without-system-hsqldb --enable-kde4 --disable-gstreamer-0-10 --enable-gstreamer --with-system-mythes %{?_smp_mflags:--with-parallelism=%{_smp_mflags}}
%endif
%if %{with langpacks}
@ -1115,13 +1066,11 @@ 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 \
@ -1140,7 +1089,7 @@ touch autogen.lastrun
--without-ppds \
--without-system-npapi-headers \
%{distrooptions} \
%{archoptions}
%{?archoptions}
make VERBOSE=true
@ -1377,11 +1326,12 @@ for file in *.desktop; do
$file
done
for app in base calc draw impress math writer; do
echo "TryExec=oo$app" >> $app.desktop
echo "X-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
sed -i -e 's/\${UNIXBASISROOTNAME}/%{name}/' $app.desktop
desktop-file-validate $app.desktop
cp -p $app.desktop $RPM_BUILD_ROOT/%{_datadir}/applications/libreoffice-$app.desktop
done
@ -1456,7 +1406,6 @@ make cmd cmd="install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c
%{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
@ -1476,7 +1425,6 @@ make cmd cmd="install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c
%{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
@ -1525,6 +1473,7 @@ make cmd cmd="install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c
%{baseinstdir}/program/liberalo.so
%{baseinstdir}/program/libetilo.so
%{baseinstdir}/program/libexplo.so
%{baseinstdir}/program/libfirebird_sdbclo.so
%{baseinstdir}/program/libicdlo.so
%{baseinstdir}/program/libicglo.so
%{baseinstdir}/program/libidxlo.so
@ -1555,12 +1504,13 @@ make cmd cmd="install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c
%{baseinstdir}/program/liblocaledata_others.so
%{baseinstdir}/program/libmcnttype.so
%{baseinstdir}/program/libmorklo.so
%{baseinstdir}/program/libmozbootstrap.so
%{baseinstdir}/program/libmozbootstraplo.so
%{baseinstdir}/program/libmsfilterlo.so
%{baseinstdir}/program/libmtfrendererlo.so
%{baseinstdir}/program/libmysqllo.so
%{baseinstdir}/program/libodbclo.so
%{baseinstdir}/program/libodbcbaselo.so
%{baseinstdir}/program/liboglcanvaslo.so
%{baseinstdir}/program/liboffacclo.so
%{baseinstdir}/program/libooxlo.so
%{baseinstdir}/program/libpcrlo.so
@ -1663,7 +1613,6 @@ make cmd cmd="install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c
%{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
@ -1680,7 +1629,6 @@ make cmd cmd="install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c
%{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
@ -1704,6 +1652,7 @@ make cmd cmd="install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c
%{baseinstdir}/share/config/images_crystal.zip
%{baseinstdir}/share/config/images_hicontrast.zip
%{baseinstdir}/share/config/images_oxygen.zip
%{baseinstdir}/share/config/images_sifr.zip
%{baseinstdir}/share/config/images_tango.zip
%{baseinstdir}/share/config/psetup.xpm
%{baseinstdir}/share/config/psetupl.xpm
@ -1778,7 +1727,6 @@ make cmd cmd="install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c
%{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
@ -1932,10 +1880,6 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%{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
@ -1944,7 +1888,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%{baseinstdir}/share/xpdfimport/xpdfimport_err.pdf
%_font_pkg -n %{fontname} opens___.ttf
%doc solver/unxlng*/bin/ure/LICENSE
%doc instdir/unxlng*/LICENSE
%files calc
%{baseinstdir}/help/en-US/scalc.*
@ -1957,6 +1901,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%{baseinstdir}/program/libsclo.so
%{baseinstdir}/program/libscdlo.so
%{baseinstdir}/program/libscfiltlo.so
%{baseinstdir}/program/libscopencllo.so
%{baseinstdir}/program/libscuilo.so
%{baseinstdir}/program/libsolverlo.so
%{baseinstdir}/program/resource/analysisen-US.res
@ -2025,9 +1970,13 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%{baseinstdir}/help/en-US/simpress.*
%{baseinstdir}/program/libanimcorelo.so
%{baseinstdir}/program/libplacewarelo.so
%{baseinstdir}/program/libPresentationMinimizerlo.so
%{baseinstdir}/program/libPresenterScreenlo.so
%{baseinstdir}/program/libwpftimpresslo.so
%dir %{baseinstdir}/share/config/soffice.cfg/simpress
%{baseinstdir}/share/config/soffice.cfg/simpress/effects.xml
%{baseinstdir}/share/config/soffice.cfg/simpress/layoutlist.xml
%{baseinstdir}/share/config/soffice.cfg/simpress/objectlist.xml
%{baseinstdir}/share/config/soffice.cfg/simpress/transitions.xml
%{baseinstdir}/share/registry/impress.xcd
%{baseinstdir}/program/pagein-impress
@ -2083,7 +2032,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%endif
%files ure
%doc solver/unxlng*/bin/ure/LICENSE
%doc instdir/unxlng*/LICENSE
%{ureinstdir}
%files sdk
@ -2107,6 +2056,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%{baseinstdir}/program/pythonloader.unorc
%{baseinstdir}/program/pythonscript.py*
%{baseinstdir}/program/pyuno.so
%{baseinstdir}/program/services/pyuno.rdb
%{baseinstdir}/program/services/scriptproviderforpython.rdb
%{baseinstdir}/program/wizards
%{baseinstdir}/share/Scripts/python
@ -2130,6 +2080,9 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%endif
%changelog
* Thu Nov 21 2013 David Tardon <dtardon@redhat.com> - 1:4.2.0.0-1.beta1
- switch to 4.2.0
* Wed Nov 20 2013 Stephan Bergmann <sbergman@redhat.com> - 1:4.1.3.2-5
- Resolves: rhbz#1031989 Accept --pt in addition to deprecated -pt
- Related: rhbz#1014990 valgrind reports uninitialized variables

@ -6,6 +6,6 @@ a7983f859eafb2677d7ff386a023bc40 a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.
1f24ab1d39f4a51faf22244c94a6203f 1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
0168229624cfac409e766913506961a8 0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz
12fb8b5b0d5132726e57b9b9fc7e22c4 libreoffice-multiliblauncher.sh
7c5248b9141df6c4844c81515a41942f libreoffice-4.1.3.2.tar.xz
c5a692983c429a142b1c109fd28425fa libreoffice-help-4.1.3.2.tar.xz
f5131da6395034246eb26aa94c7de8b2 libreoffice-translations-4.1.3.2.tar.xz
dbb8b7f5f64a407b6aef66f98b8163ff libreoffice-4.2.0.0.beta1.tar.xz
48481fd38699c598b19d637ead29d34a libreoffice-help-4.2.0.0.beta1.tar.xz
ec4982d81fac7c068095c7877273ca34 libreoffice-translations-4.2.0.0.beta1.tar.xz

Loading…
Cancel
Save