update to 4.2.3.3 [release 4.2.3.3-1mamba;Sun Apr 13 2014]

This commit is contained in:
Silvan Calarco 2024-01-06 05:34:37 +01:00
parent b7abe15446
commit 59eb054137
43 changed files with 6998 additions and 0 deletions

View File

@ -0,0 +1,152 @@
From 8636f3f41f8f6950a0e3c05f50eb4423c4035b2f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 27 Jan 2011 16:41:00 +0000
Subject: [PATCH 1/2] Related: rhbz#672872 cancel gtk file-dialog on desktop::terminate
---
fpicker/source/unx/gnome/SalGtkFilePicker.cxx | 7 +++++--
fpicker/source/unx/gnome/SalGtkFolderPicker.cxx | 5 ++++-
fpicker/source/unx/gnome/SalGtkPicker.cxx | 19 ++++++++++++++++---
fpicker/source/unx/gnome/SalGtkPicker.hxx | 20 +++++++++++++++++---
4 files changed, 42 insertions(+), 9 deletions(-)
diff --git a/fpicker/source/unx/gnome/SalGtkFilePicker.cxx b/fpicker/source/unx/gnome/SalGtkFilePicker.cxx
index d08125e..068ead5 100644
--- a/fpicker/source/unx/gnome/SalGtkFilePicker.cxx
+++ b/fpicker/source/unx/gnome/SalGtkFilePicker.cxx
@@ -1030,7 +1030,10 @@
uno::Reference< awt::XExtendedToolkit > xToolkit(
m_xServiceMgr->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.awt.Toolkit") ), uno::UNO_QUERY);
- RunDialog* pRunDialog = new RunDialog(m_pDialog, xToolkit);
+ uno::Reference< frame::XDesktop > xDesktop(
+ m_xServiceMgr->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop")) ), uno::UNO_QUERY);
+
+ RunDialog* pRunDialog = new RunDialog(m_pDialog, xToolkit, xDesktop);
uno::Reference < awt::XTopWindowListener > xLifeCycle(pRunDialog);
while( GTK_RESPONSE_NO == btn )
{
@@ -1063,7 +1066,7 @@
OUStringToOString(aResProvider.getResString(FILE_PICKER_TITLE_SAVE ),
RTL_TEXTENCODING_UTF8 ).getStr() );
- RunDialog* pAnotherDialog = new RunDialog(dlg, xToolkit);
+ RunDialog* pAnotherDialog = new RunDialog(dlg, xToolkit, xDesktop);
uno::Reference < awt::XTopWindowListener > xAnotherLifeCycle(pAnotherDialog);
btn = pAnotherDialog->run();
diff --git a/fpicker/source/unx/gnome/SalGtkFolderPicker.cxx b/fpicker/source/unx/gnome/SalGtkFolderPicker.cxx
index c42021c..08bbf04 100644
--- a/fpicker/source/unx/gnome/SalGtkFolderPicker.cxx
+++ b/fpicker/source/unx/gnome/SalGtkFolderPicker.cxx
@@ -184,7 +184,10 @@
uno::Reference< awt::XExtendedToolkit > xToolkit(
m_xServiceMgr->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.awt.Toolkit") ), uno::UNO_QUERY);
- RunDialog* pRunDialog = new RunDialog(m_pDialog, xToolkit);
+ uno::Reference< frame::XDesktop > xDesktop(
+ m_xServiceMgr->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop")) ), uno::UNO_QUERY);
+
+ RunDialog* pRunDialog = new RunDialog(m_pDialog, xToolkit, xDesktop);
uno::Reference < awt::XTopWindowListener > xLifeCycle(pRunDialog);
gint nStatus = pRunDialog->run();
switch( nStatus )
diff --git a/fpicker/source/unx/gnome/SalGtkPicker.cxx b/fpicker/source/unx/gnome/SalGtkPicker.cxx
index 6dbaa03..9bdad50 100644
--- a/fpicker/source/unx/gnome/SalGtkPicker.cxx
+++ b/fpicker/source/unx/gnome/SalGtkPicker.cxx
@@ -130,9 +130,10 @@ extern "C"
extern GdkDisplay* gdk_x11_lookup_xdisplay (void*xdisplay);
}
-RunDialog::RunDialog( GtkWidget *pDialog, uno::Reference< awt::XExtendedToolkit >& rToolkit ) :
- cppu::WeakComponentImplHelper1< awt::XTopWindowListener >( maLock ),
- mpDialog(pDialog), mpCreatedParent(NULL), mxToolkit(rToolkit)
+RunDialog::RunDialog( GtkWidget *pDialog, uno::Reference< awt::XExtendedToolkit >& rToolkit,
+ uno::Reference< frame::XDesktop >& rDesktop ) :
+ cppu::WeakComponentImplHelper2< awt::XTopWindowListener, frame::XTerminateListener >( maLock ),
+ mpDialog(pDialog), mpCreatedParent(NULL), mxToolkit(rToolkit), mxDesktop(rDesktop)
{
awt::SystemDependentXWindow aWindowHandle;
@@ -186,6 +187,18 @@ void SAL_CALL RunDialog::windowOpened( const ::com::sun::star::lang::EventObject
g_timeout_add_full(G_PRIORITY_HIGH_IDLE, 0, (GSourceFunc)canceldialog, this, NULL);
}
+void SAL_CALL RunDialog::queryTermination( const ::com::sun::star::lang::EventObject& )
+ throw(::com::sun::star::frame::TerminationVetoException, ::com::sun::star::uno::RuntimeException)
+{
+}
+
+void SAL_CALL RunDialog::notifyTermination( const ::com::sun::star::lang::EventObject& )
+ throw(::com::sun::star::uno::RuntimeException)
+{
+ GdkThreadLock aLock;
+ g_timeout_add_full(G_PRIORITY_HIGH_IDLE, 0, (GSourceFunc)canceldialog, this, NULL);
+}
+
void RunDialog::cancel()
{
GdkThreadLock aLock;
diff --git a/fpicker/source/unx/gnome/SalGtkPicker.hxx b/fpicker/source/unx/gnome/SalGtkPicker.hxx
index 889790d..52fe5a0 100644
--- a/fpicker/source/unx/gnome/SalGtkPicker.hxx
+++ b/fpicker/source/unx/gnome/SalGtkPicker.hxx
@@ -34,7 +34,7 @@
//_____________________________________________________________________________
#include <osl/mutex.hxx>
-#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/compbase2.hxx>
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker2.hpp>
#include <com/sun/star/ui/dialogs/XFolderPicker.hpp>
@@ -43,6 +43,8 @@
#include <com/sun/star/awt/XTopWindowListener.hpp>
#include <com/sun/star/awt/XExtendedToolkit.hpp>
+#include <com/sun/star/frame/XDesktop.hpp>
+#include <com/sun/star/frame/XTerminateListener.hpp>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
@@ -85,13 +87,16 @@ public:
//to happen while we're opened waiting for user input, e.g.
//https://bugzilla.redhat.com/show_bug.cgi?id=441108
class RunDialog :
- public cppu::WeakComponentImplHelper1< ::com::sun::star::awt::XTopWindowListener >
+ public cppu::WeakComponentImplHelper2<
+ ::com::sun::star::awt::XTopWindowListener,
+ ::com::sun::star::frame::XTerminateListener >
{
private:
osl::Mutex maLock;
GtkWidget *mpDialog;
GdkWindow *mpCreatedParent;
::com::sun::star::uno::Reference< ::com::sun::star::awt::XExtendedToolkit> mxToolkit;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDesktop > mxDesktop;
public:
// XTopWindowListener
@@ -112,8 +117,17 @@ public:
throw (::com::sun::star::uno::RuntimeException) {}
virtual void SAL_CALL windowDeactivated( const ::com::sun::star::lang::EventObject& )
throw (::com::sun::star::uno::RuntimeException) {}
+
+ // XTerminateListener
+ virtual void SAL_CALL queryTermination( const ::com::sun::star::lang::EventObject& aEvent )
+ throw(::com::sun::star::frame::TerminationVetoException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL notifyTermination( const ::com::sun::star::lang::EventObject& aEvent )
+ throw(::com::sun::star::uno::RuntimeException);
public:
- RunDialog(GtkWidget *pDialog, ::com::sun::star::uno::Reference< ::com::sun::star::awt::XExtendedToolkit > &rToolkit);
+ RunDialog(GtkWidget *pDialog,
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XExtendedToolkit > &rToolkit,
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDesktop > &rDesktop
+ );
gint run();
void cancel();
~RunDialog();
--
1.7.3.5

View File

@ -0,0 +1,37 @@
From 092e1494c1d7d68873f50a0da7699b0fdd15c439 Mon Sep 17 00:00:00 2001
From: Andy Hearn <cuvierster@gmail.com>
Date: Sat, 8 Jan 2011 23:26:13 +0000
Subject: [PATCH] Removed suspect hack. Cursor on post-it now scrolls out of view.
Previously, when the user scrolls when the cursor is within a
post-it note, the main view judders, refusing to let the cursor
go out of view. The removed lines appears to have been a hack
to retain focus of a post-it note containing the cursor.
---
sw/source/ui/docvw/PostItMgr.cxx | 10 ----------
1 files changed, 0 insertions(+), 10 deletions(-)
diff --git a/sw/source/ui/docvw/PostItMgr.cxx b/sw/source/ui/docvw/PostItMgr.cxx
index cb3e783..7dcdad7 100644
--- a/sw/source/ui/docvw/PostItMgr.cxx
+++ b/sw/source/ui/docvw/PostItMgr.cxx
@@ -716,16 +716,6 @@ void SwPostItMgr::LayoutPostIts()
OSL_ENSURE(mPages[n]->bScrollbar,"SwPostItMgr::LayoutByPage(): note overlaps, but bScrollbar is not true");
}
}
-
- // do some magic so we really see the focused note
- for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
- {
- if ((*i)->HasChildPathFocus())
- {
- MakeVisible((*i),n+1);
- break;
- }
- }
}
else
{
--
1.7.3.4

View File

@ -0,0 +1,104 @@
From ec7ff475f480619787131d0a193d7786c30dac10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 28 Jan 2011 21:16:36 +0000
Subject: [PATCH] Resolves: fdo#33509, #i62414# out-by-one breaks CTL spell-checking popup
ABCD
0123
^
Currently calls GetCharRect for position "0" and position "4". It should be
"3". We were placing the cursor *after* the final character. We really need to
place it *before* the final character and get the bounding box of the last char
to union it with the first char's bounding box. It works out ok for western
text, but you get a far different value for CTL text.
---
sw/source/core/crsr/crsrsh.cxx | 4 ++--
sw/source/core/edit/edlingu.cxx | 14 +++++---------
2 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index ed8d37b..a6db747 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -3419,7 +3419,7 @@ void SwCrsrShell::GetSmartTagTerm( const Point& rPt, SwRect& rSelectRect,
//no determine the rectangle in the current line
xub_StrLen nWordStart = (nBegin + nLeft) < nLineStart ? nLineStart : nBegin + nLeft;
//take one less than the line end - otherwise the next line would be calculated
- xub_StrLen nWordEnd = (nBegin + nLen - nLeft - nRight) > nLineEnd ? nLineEnd - 1: (nBegin + nLen - nLeft - nRight);
+ xub_StrLen nWordEnd = (nBegin + nLen - nLeft - nRight) > nLineEnd ? nLineEnd : (nBegin + nLen - nLeft - nRight);
Push();
pCrsr->DeleteMark();
SwIndex& rContent = GetCrsr()->GetPoint()->nContent;
@@ -3431,7 +3431,7 @@ void SwCrsrShell::GetSmartTagTerm( const Point& rPt, SwRect& rSelectRect,
SwCntntFrm *pCntntFrame = pCntntNode->GetFrm( &rPt, pCrsr->GetPoint(), FALSE);
pCntntFrame->GetCharRect( aStartRect, *pCrsr->GetPoint(), &aState );
- rContent = nWordEnd;
+ rContent = nWordEnd - 1;
SwRect aEndRect;
pCntntFrame->GetCharRect( aEndRect, *pCrsr->GetPoint(),&aState );
rSelectRect = aStartRect.Union( aEndRect );
diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx
index 7e186f9..a3d1572 100644
--- a/sw/source/core/edit/edlingu.cxx
+++ b/sw/source/core/edit/edlingu.cxx
@@ -550,7 +550,6 @@ uno::Any SwHyphIter::Continue( sal_uInt16* pPageCnt, sal_uInt16* pPageSt )
const sal_Bool bAuto = IsAuto();
uno::Reference< XHyphenatedWord > xHyphWord;
- sal_uInt16 nRet;
sal_Bool bGoOn = sal_False;
do {
SwPaM *pCrsr;
@@ -565,10 +564,7 @@ uno::Any SwHyphIter::Continue( sal_uInt16* pPageCnt, sal_uInt16* pPageSt )
pCrsr->SetMark();
}
- // geraten BUG:
- if ( *pCrsr->End() > *GetEnd() )
- nRet = 0;
- else
+ if ( *pCrsr->End() <= *GetEnd() )
{
*pCrsr->GetMark() = *GetEnd();
@@ -1076,7 +1072,7 @@ uno::Reference< XSpellAlternatives >
//no determine the rectangle in the current line
xub_StrLen nWordStart = (nBegin + nLeft) < nLineStart ? nLineStart : nBegin + nLeft;
//take one less than the line end - otherwise the next line would be calculated
- xub_StrLen nWordEnd = (nBegin + nLen - nLeft - nRight) > nLineEnd ? nLineEnd - 1: (nBegin + nLen - nLeft - nRight);
+ xub_StrLen nWordEnd = (nBegin + nLen - nLeft - nRight) > nLineEnd ? nLineEnd: (nBegin + nLen - nLeft - nRight);
Push();
pCrsr->DeleteMark();
SwIndex& rContent = GetCrsr()->GetPoint()->nContent;
@@ -1088,7 +1084,7 @@ uno::Reference< XSpellAlternatives >
SwCntntFrm *pCntntFrame = pCntntNode->GetFrm(pPt, pCrsr->GetPoint(), FALSE);
pCntntFrame->GetCharRect( aStartRect, *pCrsr->GetPoint(), &aState );
- rContent = nWordEnd;
+ rContent = nWordEnd - 1;
SwRect aEndRect;
pCntntFrame->GetCharRect( aEndRect, *pCrsr->GetPoint(),&aState );
rSelectRect = aStartRect.Union( aEndRect );
@@ -1210,7 +1206,7 @@ bool SwEditShell::GetGrammarCorrection(
//no determine the rectangle in the current line
xub_StrLen nWordStart = (nBegin + nLeft) < nLineStart ? nLineStart : nBegin + nLeft;
//take one less than the line end - otherwise the next line would be calculated
- xub_StrLen nWordEnd = (nBegin + nLen - nLeft - nRight) > nLineEnd ? nLineEnd - 1: (nBegin + nLen - nLeft - nRight);
+ xub_StrLen nWordEnd = (nBegin + nLen - nLeft - nRight) > nLineEnd ? nLineEnd: (nBegin + nLen - nLeft - nRight);
Push();
pCrsr->DeleteMark();
SwIndex& rContent = GetCrsr()->GetPoint()->nContent;
@@ -1222,7 +1218,7 @@ bool SwEditShell::GetGrammarCorrection(
SwCntntFrm *pCntntFrame = pCntntNode->GetFrm(pPt, pCrsr->GetPoint(), FALSE);
pCntntFrame->GetCharRect( aStartRect, *pCrsr->GetPoint(), &aState );
- rContent = nWordEnd;
+ rContent = nWordEnd - 1;
SwRect aEndRect;
pCntntFrame->GetCharRect( aEndRect, *pCrsr->GetPoint(),&aState );
rSelectRect = aStartRect.Union( aEndRect );
--
1.7.3.5

View File

@ -0,0 +1,34 @@
From e7473329c8d79ba3988aa07172290beedcaaf325 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 18 Jan 2011 12:10:32 +0000
Subject: [PATCH] free ctxt *after* taking lastError details
---
unoxml/source/dom/documentbuilder.cxx | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/unoxml/source/dom/documentbuilder.cxx b/unoxml/source/dom/documentbuilder.cxx
index bcce353..9e052c3 100644
--- a/unoxml/source/dom/documentbuilder.cxx
+++ b/unoxml/source/dom/documentbuilder.cxx
@@ -314,13 +314,13 @@ namespace DOM
} // extern "C"
- void throwEx(xmlParserCtxtPtr ctxt) {
- OUString msg = make_error_message(ctxt);
- xmlFreeParserCtxt(ctxt);
+ void throwEx(xmlParserCtxtPtr ctxt)
+ {
com::sun::star::xml::sax::SAXParseException saxex;
- saxex.Message = msg;
+ saxex.Message = make_error_message(ctxt);
saxex.LineNumber = static_cast<sal_Int32>(ctxt->lastError.line);
saxex.ColumnNumber = static_cast<sal_Int32>(ctxt->lastError.int2);
+ xmlFreeParserCtxt(ctxt);
throw saxex;
}
--
1.7.3.4

View File

@ -0,0 +1,209 @@
diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx
index 5720af2..7807371 100644
--- a/sw/source/filter/ww8/ww8graf.cxx
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -1052,7 +1052,7 @@
Read_PicLoc(nAktId, pParams, 1);
break;
}
- aSprmIter++;
+ aSprmIter.advance();
}
//if( bRead_Obj || bRead_PicLoc ) break;
diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx
index 5b66561..65172b1 100644
--- a/sw/source/filter/ww8/ww8par2.cxx
+++ b/sw/source/filter/ww8/ww8par2.cxx
@@ -1964,7 +1964,7 @@ WW8TabDesc::WW8TabDesc(SwWW8ImplReader* pIoClass, WW8_CP nStartCp) :
default:
;
}
- aSprmIter++;
+ aSprmIter.advance();
}
if( !nLoop )
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
index f2c8fd6..44f1f69 100644
--- a/sw/source/filter/ww8/ww8scan.cxx
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -895,22 +895,17 @@ void WW8SprmIter::SetSprms(const BYTE* pSprms_, long nLen_)
UpdateMyMembers();
}
-const BYTE* WW8SprmIter::operator ++( int )
+void WW8SprmIter::advance()
{
if (nRemLen > 0 )
{
- if( nRemLen >= nAktSize )
- {
- pSprms += nAktSize;
- nRemLen -= nAktSize;
- UpdateMyMembers();
- }
- else
- {
- throw( ::std::exception() );
- }
+ USHORT nSize = nAktSize;
+ if (nSize > nRemLen)
+ nSize = nRemLen;
+ pSprms += nSize;
+ nRemLen -= nSize;
+ UpdateMyMembers();
}
- return pSprms;
}
void WW8SprmIter::UpdateMyMembers()
@@ -936,7 +931,7 @@ const BYTE* WW8SprmIter::FindSprm(USHORT nId)
{
if( GetAktId() == nId )
return GetAktParams(); // SPRM found!
- operator ++(0);
+ advance();
}
return 0; // SPRM _not_ found
@@ -2828,7 +2823,7 @@ bool WW8PLCFx_Fc_FKP::WW8Fkp::HasSprm(USHORT nId,
{
if (aIter.GetAktId() == nId)
rResult.push_back(aIter.GetAktParams());
- aIter++;
+ aIter.advance();
};
return !rResult.empty();
}
@@ -3151,7 +3146,7 @@ bool WW8PLCFx_Fc_FKP::HasSprm(USHORT nId, std::vector<const BYTE *> &rResult)
{
if (aIter.GetAktId() == nId)
rResult.push_back(aIter.GetAktParams());
- aIter++;
+ aIter.advance();
};
}
return !rResult.empty();
diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx
index cf6541f..af19986 100644
--- a/sw/source/filter/ww8/ww8scan.hxx
+++ b/sw/source/filter/ww8/ww8scan.hxx
@@ -261,7 +261,7 @@ public:
const wwSprmParser &rSprmParser);
void SetSprms( const BYTE* pSprms_, long nLen_ );
const BYTE* FindSprm(USHORT nId);
- const BYTE* operator ++( int );
+ void advance();
const BYTE* GetSprms() const
{ return ( pSprms && (0 < nRemLen) ) ? pSprms : 0; }
const BYTE* GetAktParams() const { return pAktParams; }
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index 801cc2f..0df3331 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -3895,7 +3895,7 @@ void SwWW8ImplReader::ReadDocInfo()
xDocProps->setTemplateURL( sTemplateURL );
}
}
- else // not a template
+ else if (pWwFib->lcbSttbfAssoc) // not a template, and has a SttbfAssoc
{
long nCur = pTableStream->Tell();
Sttb aSttb;
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
index 44f1f69..b1e0351 100644
--- a/sw/source/filter/ww8/ww8scan.cxx
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -2561,6 +2561,7 @@ WW8PLCFx_Fc_FKP::WW8Fkp::WW8Fkp(ww::WordVersion eVersion, SvStream* pSt,
long nOldPos = pSt->Tell();
pSt->Seek(nFilePos);
+ memset(maRawData, 0, 512);
pSt->Read(maRawData, 512);
mnIMax = maRawData[511];
@@ -2605,24 +2606,36 @@ WW8PLCFx_Fc_FKP::WW8Fkp::WW8Fkp(ww::WordVersion eVersion, SvStream* pSt,
aEntry.mnLen = maRawData[nOfs+1];
nDelta++;
}
-
aEntry.mnLen *= 2;
//stylecode, std/istd
if (eVersion == ww::eWW2)
{
- aEntry.mnIStd = *(maRawData+nOfs+1+nDelta);
- aEntry.mnLen--; //style code
- aEntry.mnLen-=6; //PHE
- //skipi stc, len byte + 6 byte PHE
- aEntry.mpData = maRawData + nOfs + 8;
+ if (aEntry.mnLen >= 1)
+ {
+ aEntry.mnIStd = *(maRawData+nOfs+1+nDelta);
+ aEntry.mnLen--; //style code
+ if (aEntry.mnLen >= 6)
+ {
+ aEntry.mnLen-=6; //PHE
+ //skipi stc, len byte + 6 byte PHE
+ aEntry.mpData = maRawData + nOfs + 8;
+ }
+ else
+ aEntry.mnLen=0; //Too short
+ }
}
else
{
- aEntry.mnIStd = SVBT16ToShort(maRawData+nOfs+1+nDelta);
- aEntry.mnLen-=2; //istd
- //skip istd, len byte + optional extra len byte
- aEntry.mpData = maRawData + nOfs + 3 + nDelta;
+ if (aEntry.mnLen >= 2)
+ {
+ aEntry.mnIStd = SVBT16ToShort(maRawData+nOfs+1+nDelta);
+ aEntry.mnLen-=2; //istd
+ //skip istd, len byte + optional extra len byte
+ aEntry.mpData = maRawData + nOfs + 3 + nDelta;
+ }
+ else
+ aEntry.mnLen=0; //Too short, ignore
}
USHORT nSpId = aEntry.mnLen ? maSprmParser.GetSprmId(aEntry.mpData) : 0;
@@ -2666,6 +2679,17 @@ WW8PLCFx_Fc_FKP::WW8Fkp::WW8Fkp(ww::WordVersion eVersion, SvStream* pSt,
}
maEntries.push_back(aEntry);
+
+#ifdef DEBUGSPRMREADER
+ {
+ sal_Int32 nLen;
+ BYTE* pSprms = GetLenAndIStdAndSprms( nLen );
+
+ WW8SprmIter aIter(pSprms, nLen, maSprmParser);
+ while(aIter.GetSprms())
+ aIter.advance();
+ }
+#endif
}
//one more FC than grrpl entries
diff --git a/filter/source/msfilter/mstoolbar.cxx b/filter/source/msfilter/mstoolbar.cxx
index 81b73e5..daee39b 100644
--- a/filter/source/msfilter/mstoolbar.cxx
+++ b/filter/source/msfilter/mstoolbar.cxx
@@ -188,10 +188,11 @@ TBBase::indent_printf( FILE* fp, const char* format, ... )
rtl::OUString TBBase::readUnicodeString( SvStream* pS, sal_Int32 nChars )
{
- sal_Int32 nBufSize = nChars * 2;
+ sal_Size nBufSize = nChars * 2;
boost::scoped_array< sal_uInt8 > pArray( new sal_uInt8[ nBufSize ] );
- pS->Read( pArray.get(), nBufSize );
- return svt::BinFilterUtils::CreateOUStringFromUniStringArray( reinterpret_cast< const char* >( pArray.get() ), nBufSize );
+ sal_Size nReadSize = pS->Read( pArray.get(), nBufSize );
+ OSL_ASSERT(nReadSize == nBufSize);
+ return svt::BinFilterUtils::CreateOUStringFromUniStringArray( reinterpret_cast< const char* >( pArray.get() ), nReadSize );
}
TBCHeader::TBCHeader() : bSignature( 0x3 )

View File

@ -1,2 +1,6 @@
# libreoffice
LibreOffice is an Open Source, community-developed, office productivity suite.
It includes the key desktop applications, such as a word processor, spreadsheet, presentation manager, formula editor and drawing program, with a user interface and feature set similar to other office suites.
Sophisticated and flexible, LibreOffice also works transparently with a variety of file formats, including Microsoft Office File Formats.

View File

@ -0,0 +1,18 @@
--- configure.in 2011-01-18 15:45:20.000000000 +0100
+++ configure.in-gil 2011-01-24 23:20:19.000000000 +0100
@@ -6891,12 +6891,12 @@
qt_incdirs="$QT4INC /usr/include/qt4 /usr/include $x_includes"
qt_libdirs="$QT4LIB /usr/lib $x_libraries"
- kde_incdirs="/usr/include $x_includes"
- kde_libdirs="/usr/lib $x_libraries"
+ kde_incdirs="/opt/kde/include $x_includes"
+ kde_libdirs="/opt/kde/lib $x_libraries"
if test "$build_cpu" = "x86_64" ; then
qt_libdirs="$qt_libdirs /usr/lib64/qt4 /usr/lib64/qt /usr/lib64"
- kde_libdirs="$kde_libdirs /usr/lib64 /usr/lib64/kde4"
+ kde_libdirs="$kde_libdirs /opt/kde/lib64"
fi
if test -n "$QTDIR" ; then

View File

@ -0,0 +1,11 @@
--- sw/source/filter/ww8/rtfattributeoutput.cxx 2010-11-30 12:00:47.000000000 +0100
+++ sw/source/filter/ww8/rtfattributeoutput.cxx-gil 2011-01-28 00:36:28.000000000 +0100
@@ -1092,7 +1092,7 @@
m_rExport.InsStyle(m_nStyleId, aStyles);
m_aStylesheet.append(aStyles);
m_aStylesheet.append(' ');
- m_aStylesheet.append(OUStringToOString( OUString( m_rStyleName ), m_rExport.eCurrentEncoding ));
+ m_aStylesheet.append(m_rExport.OutString(m_rStyleName, m_rExport.eCurrentEncoding));
m_aStylesheet.append(";}");
m_aStylesheet.append(m_rExport.sNewLine);
}

View File

@ -0,0 +1,11 @@
--- i18npool/source/breakiterator/data/line.txt 2010-11-11 16:22:47.000000000 +0100
+++ i18npool/source/breakiterator/data/line.txt-gil 2011-01-29 09:47:06.000000000 +0100
@@ -61,7 +61,7 @@
$BK = [:LineBreak = Mandatory_Break:];
$B2 = [:LineBreak = Break_Both:];
$CB = [:LineBreak = Contingent_Break:];
-$CL = [:LineBreak = Close_Punctuation:] ;
+$CL = [[:LineBreak = Close_Punctuation:] [:LineBreak = Close_Parenthesis:]];
$CM = [:LineBreak = Combining_Mark:];
$CR = [:LineBreak = Carriage_Return:];
$EX = [:LineBreak = Exclamation:];

View File

@ -0,0 +1,40 @@
--- configure.in 2011-01-25 06:17:31.000000000 +0100
+++ configure.in-gil 2011-01-25 06:20:15.000000000 +0100
@@ -4342,8 +4342,8 @@
AC_MSG_RESULT([external])
SYSTEM_LUCENE=YES
if test -z $LUCENE_CORE_JAR; then
- AC_CHECK_FILE(/usr/share/java/lucene-core-2.3.jar,
- [ LUCENE_CORE_JAR=/usr/share/java/lucene-core-2.3.jar ],
+ AC_CHECK_FILE(/usr/share/java/lucene-core-2.4.1.jar,
+ [ LUCENE_CORE_JAR=/usr/share/java/lucene-core-2.4.1.jar ],
[
AC_CHECK_FILE(/usr/share/java/lucene-core.jar,
[ LUCENE_CORE_JAR=/usr/share/java/lucene-core.jar ],
@@ -4361,8 +4361,8 @@
fi
if test -z $LUCENE_ANALYZERS_JAR; then
- AC_CHECK_FILE(/usr/share/java/lucene-analyzers-2.3.jar,
- [ LUCENE_ANALYZERS_JAR=/usr/share/java/lucene-analyzers-2.3.jar ],
+ AC_CHECK_FILE(/usr/share/java/lucene-contrib/lucene-analyzers-2.4.1.jar,
+ [ LUCENE_ANALYZERS_JAR=/usr/share/java/lucene-contrib/lucene-analyzers-2.4.1.jar ],
[
AC_CHECK_FILE(/usr/share/java/lucene-contrib/lucene-analyzers.jar,
[ LUCENE_ANALYZERS_JAR=/usr/share/java/lucene-contrib/lucene-analyzers.jar ],
@@ -4374,13 +4374,13 @@
AC_CHECK_FILE($LUCENE_CORE_JAR, [],
[ AC_MSG_ERROR(lucene-analyzers.jar not found.)], [])
fi
- AC_MSG_CHECKING([whether lucene is version 2.x])
+ AC_MSG_CHECKING([whether lucene is version 1.9.1.x])
export LUCENE_CORE_JAR
if $PERL -e 'use Archive::Zip;
my $file = "$ENV{'LUCENE_CORE_JAR'}";
my $zip = Archive::Zip->new( $file );
my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
- if ( $mf =~ m/Specification-Version: 2.*/ ) {
+ if ( $mf =~ m/Bundle-Version: 1.9.1.*/ ) {
exit 0;
} else {
exit 1;

View File

@ -0,0 +1,15 @@
--- sw/source/core/unocore/unorefmk.cxx 2010-11-25 20:17:35.000000000 +0100
+++ sw/source/core/unocore/unorefmk.cxx-gil 2011-03-03 16:09:51.000000000 +0100
@@ -261,8 +261,10 @@
}
else
{
- pTxtAttr = rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
- rPam.GetPoint()->nContent.GetIndex() - 1, RES_TXTATR_REFMARK);
+ SwTxtNode *pTxtNd = rPam.GetNode()->GetTxtNode();
+ OSL_ASSERT(pTxtNd);
+ pTxtAttr = pTxtNd ? rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
+ rPam.GetPoint()->nContent.GetIndex() - 1, RES_TXTATR_REFMARK) : NULL;
}
if (!pTxtAttr)

View File

@ -0,0 +1,20 @@
--- sw/source/ui/uiview/viewtab.cxx 2010-11-11 16:46:47.000000000 +0100
+++ sw/source/ui/uiview/viewtab.cxx-gil 2011-03-03 15:53:20.000000000 +0100
@@ -722,7 +722,7 @@
if(bIsTableRTL)
{
USHORT nColCount = aColItem.Count() - 1;
- for ( USHORT i = 0; i < nColCount; ++i )
+ for ( USHORT i = 0; i < nColCount && i < aTabCols.Count(); ++i )
{
const SvxColumnDescription& rCol = aColItem[nColCount - i];
aTabCols[i] = aTabCols.GetRight() - rCol.nStart;
@@ -731,7 +731,7 @@
}
else
{
- for ( USHORT i = 0; i < aColItem.Count()-1; ++i )
+ for ( USHORT i = 0; i < aColItem.Count()-1 && i < aTabCols.Count(); ++i )
{
const SvxColumnDescription& rCol = aColItem[i];
aTabCols[i] = rCol.nEnd + aTabCols.GetLeft();

View File

@ -0,0 +1,117 @@
diff -Nru vcl/inc/vcl/outdev.hxx vcl-gil/inc/vcl/outdev.hxx
--- vcl/inc/vcl/outdev.hxx 2010-11-11 16:22:48.000000000 +0100
+++ vcl-gil/inc/vcl/outdev.hxx 2011-03-15 01:59:38.000000000 +0100
@@ -277,6 +277,8 @@
class VirtualDevice;
class Printer;
+class ImplFontSelectData;
+class ImplFontMetricData;
const char* ImplDbgCheckOutputDevice( const void* pObj );
@@ -564,6 +566,9 @@
// Helper for line geometry paint with support for graphic expansion (pattern and fat_to_area)
void impPaintLineGeometryWithEvtlExpand(const LineInfo& rInfo, basegfx::B2DPolyPolygon aLinePolyPolygon);
+ SAL_DLLPRIVATE void forceFallbackFontToFit(SalLayout &rFallback, ImplFontEntry &rFallbackFont,
+ ImplFontSelectData &rFontSelData, int nFallbackLevel,
+ ImplLayoutArgs& rLayoutArgs, const ImplFontMetricData& rOrigMetric) const;
protected:
OutputDevice();
diff -Nru vcl/source/gdi/outdev3.cxx vcl-gil/source/gdi/outdev3.cxx
--- vcl/source/gdi/outdev3.cxx 2010-12-03 16:11:22.000000000 +0100
+++ vcl-gil/source/gdi/outdev3.cxx 2011-03-15 02:04:10.000000000 +0100
@@ -6023,6 +6023,58 @@
return pSalLayout;
}
+void OutputDevice::forceFallbackFontToFit(SalLayout &rFallback, ImplFontEntry &rFallbackFont,
+ ImplFontSelectData &rFontSelData, int nFallbackLevel,
+ ImplLayoutArgs& rLayoutArgs, const ImplFontMetricData& rOrigMetric) const
+{
+ Rectangle aBoundRect;
+ bool bHaveBounding = false;
+ Rectangle aRectangle;
+
+ rFallback.AdjustLayout( rLayoutArgs );
+
+ //All we care about here is getting the vertical bounds of this text and
+ //make sure it will fit inside the available space
+ Point aPos;
+ for( int nStart = 0;;)
+ {
+ sal_GlyphId nLGlyph;
+ if( !rFallback.GetNextGlyphs( 1, &nLGlyph, aPos, nStart ) )
+ break;
+
+ int nFontTag = nFallbackLevel << GF_FONTSHIFT;
+ nLGlyph |= nFontTag;
+
+ // get bounding rectangle of individual glyph
+ if( mpGraphics->GetGlyphBoundRect( nLGlyph, aRectangle ) )
+ {
+ // merge rectangle
+ aRectangle += aPos;
+ aBoundRect.Union( aRectangle );
+ bHaveBounding = true;
+ }
+ }
+
+ //Shrink it down if it won't fit
+ if (bHaveBounding)
+ {
+ long nGlyphsAscent = -aBoundRect.Top();
+ float fScaleTop = nGlyphsAscent > rOrigMetric.mnAscent ?
+ rOrigMetric.mnAscent/(float)nGlyphsAscent : 1;
+ long nGlyphsDescent = aBoundRect.Bottom();
+ float fScaleBottom = nGlyphsDescent > rOrigMetric.mnDescent ?
+ rOrigMetric.mnDescent/(float)nGlyphsDescent : 1;
+ float fScale = fScaleBottom < fScaleTop ? fScaleBottom : fScaleTop;
+ if (fScale < 1)
+ {
+ long nOrigHeight = rFontSelData.mnHeight;
+ rFontSelData.mnHeight *= fScale;
+ rFallbackFont.mnSetFontFlags = mpGraphics->SetFont( &rFontSelData, nFallbackLevel );
+ rFontSelData.mnHeight = nOrigHeight;
+ }
+ }
+}
+
// -----------------------------------------------------------------------
SalLayout* OutputDevice::ImplGlyphFallbackLayout( SalLayout* pSalLayout, ImplLayoutArgs& rLayoutArgs ) const
@@ -6102,22 +6154,7 @@
}
#endif
- ImplFontMetricData aSubstituteMetric(aFontSelData);
pFallbackFont->mnSetFontFlags = mpGraphics->SetFont( &aFontSelData, nFallbackLevel );
- mpGraphics->GetFontMetric(&aSubstituteMetric, nFallbackLevel);
-
- long nOriginalHeight = aOrigMetric.mnAscent + aOrigMetric.mnDescent;
- long nSubstituteHeight = aSubstituteMetric.mnAscent + aSubstituteMetric.mnDescent;
- //Too tall, shrink it a bit. Need a better calculation to include extra
- //factors and any extra wriggle room we might have available ?
- if (nSubstituteHeight > nOriginalHeight)
- {
- float fScale = nOriginalHeight/(float)nSubstituteHeight;
- long nOrigHeight = aFontSelData.mnHeight;
- aFontSelData.mnHeight *= fScale;
- pFallbackFont->mnSetFontFlags = mpGraphics->SetFont( &aFontSelData, nFallbackLevel );
- aFontSelData.mnHeight = nOrigHeight;
- }
// create and add glyph fallback layout to multilayout
rLayoutArgs.ResetPos();
@@ -6126,6 +6163,9 @@
{
if( pFallback->LayoutText( rLayoutArgs ) )
{
+ forceFallbackFontToFit(*pFallback, *pFallbackFont, aFontSelData,
+ nFallbackLevel, rLayoutArgs, aOrigMetric);
+
if( !pMultiSalLayout )
pMultiSalLayout = new MultiSalLayout( *pSalLayout );
pMultiSalLayout->AddFallback( *pFallback,

View File

@ -0,0 +1,20 @@
--- sw/source/ui/uiview/viewmdi.cxx 2010-11-11 16:46:47.000000000 +0100
+++ sw/source/ui/uiview/viewmdi.cxx-gil 2011-03-03 15:20:14.000000000 +0100
@@ -125,15 +125,9 @@
if( SVX_ZOOM_OPTIMAL == eZoomType )
{
- if (pPostItMgr->HasNotes() && pPostItMgr->ShowNotes())
- {
- lLeftMargin = long(rLRSpace.GetLeft()) + aPageRect.Left() + nLeftOfst;
- }
- else
- {
+ if (!pPostItMgr->HasNotes() || !pPostItMgr->ShowNotes())
aPageSize.Width() -= ( rLRSpace.GetLeft() + rLRSpace.GetRight() + nLeftOfst * 2 );
- lLeftMargin = long(rLRSpace.GetLeft()) + aPageRect.Left() + nLeftOfst;
- }
+ lLeftMargin = long(rLRSpace.GetLeft()) + DOCUMENTBORDER + nLeftOfst;
nFac = aWindowSize.Width() * 100 / aPageSize.Width();
}
else if(SVX_ZOOM_WHOLEPAGE == eZoomType || SVX_ZOOM_PAGEWIDTH == eZoomType )

View File

@ -0,0 +1,27 @@
--- sc/source/ui/view/tabview2.cxx 2010-11-30 11:58:44.000000000 +0100
+++ sc/source/ui/view/tabview2.cxx-gil 2011-03-03 15:46:52.000000000 +0100
@@ -410,7 +410,23 @@
{
SCCOL nCurX;
SCROW nCurY;
- aViewData.GetMoveCursor( nCurX,nCurY );
+ if (aViewData.IsRefMode())
+ {
+ nCurX = aViewData.GetRefEndX();
+ nCurY = aViewData.GetRefEndY();
+ }
+ else if (IsBlockMode())
+ {
+ // block end position.
+ nCurX = nBlockEndX;
+ nCurY = nBlockEndY;
+ }
+ else
+ {
+ // cursor position
+ nCurX = aViewData.GetCurX();
+ nCurY = aViewData.GetCurY();
+ }
ScSplitPos eWhich = aViewData.GetActivePart();
ScHSplitPos eWhichX = WhichH( eWhich );

View File

@ -0,0 +1,12 @@
--- sd/source/ui/view/drviews1.cxx 2010-11-11 16:20:26.000000000 +0100
+++ sd/source/ui/view/drviews1.cxx-gil 2011-03-03 15:06:36.000000000 +0100
@@ -716,6 +716,9 @@
void DrawViewShell::ResetActualPage()
{
+ if (!GetDoc())
+ return;
+
USHORT nCurrentPage = maTabControl.GetCurPageId() - 1;
USHORT nPageCount = (meEditMode == EM_PAGE)?GetDoc()->GetSdPageCount(mePageKind):GetDoc()->GetMasterSdPageCount(mePageKind);
if (nPageCount > 0)

View File

@ -0,0 +1,11 @@
--- sw/source/core/crsr/swcrsr.cxx 2010-11-25 20:17:34.000000000 +0100
+++ sw/source/core/crsr/swcrsr.cxx-gil 2011-03-15 02:18:01.000000000 +0100
@@ -1703,7 +1703,7 @@
if ( pTableBoxStartNode )
{
const SwTableBox* pTableBox = pTableBoxStartNode->GetTblBox();
- if ( pTableBox->getRowSpan() < 1 )
+ if ( pTableBox && pTableBox->getRowSpan() < 1 )
{
// Store the row span offset:
mnRowSpanOffset = pTableBox->getRowSpan();

View File

@ -0,0 +1,13 @@
--- sd/source/ui/unoidl/DrawController.cxx 2010-11-11 20:08:58.000000000 +0100
+++ sd/source/ui/unoidl/DrawController.cxx-gil 2011-03-03 15:40:26.000000000 +0100
@@ -166,7 +166,9 @@
{
mbDisposing = true;
- boost::shared_ptr<ViewShell> pViewShell = mpBase->GetMainViewShell();
+ boost::shared_ptr<ViewShell> pViewShell;
+ if (mpBase)
+ pViewShell = mpBase->GetMainViewShell();
if ( pViewShell )
{
pViewShell->DeactivateCurrentFunction();

View File

@ -0,0 +1,192 @@
--- desktop/source/deployment/registry/component/dp_component.cxx 2010-11-11 20:08:58.000000000 +0100
+++ desktop/source/deployment/registry/component/dp_component.cxx-gil 2011-03-03 15:35:01.000000000 +0100
@@ -192,6 +192,42 @@
OUString const & identifier);
};
friend class TypelibraryPackageImpl;
+
+ /** Serves for unregistering packages that were registered on a
+ different platform. This can happen if one has remotely mounted
+ /home, for example.
+ */
+ class OtherPlatformPackageImpl : public ::dp_registry::backend::Package
+ {
+ public:
+ OtherPlatformPackageImpl(
+ ::rtl::Reference<PackageRegistryBackend> const & myBackend,
+ OUString const & url, OUString const & name,
+ Reference<deployment::XPackageTypeInfo> const & xPackageType,
+ bool bRemoved, OUString const & identifier, OUString const& rPlatform);
+
+ private:
+ BackendImpl * getMyBackend() const;
+
+ const Reference<registry::XSimpleRegistry> impl_openRDB() const;
+ const Reference<XInterface> impl_createInstance(OUString const& rService) const;
+
+ // Package
+ virtual beans::Optional< beans::Ambiguous<sal_Bool> > isRegistered_(
+ ::osl::ResettableMutexGuard & guard,
+ ::rtl::Reference<AbortChannel> const & abortChannel,
+ Reference<XCommandEnvironment> const & xCmdEnv );
+ virtual void processPackage_(
+ ::osl::ResettableMutexGuard & guard,
+ bool registerPackage,
+ bool startup,
+ ::rtl::Reference<AbortChannel> const & abortChannel,
+ Reference<XCommandEnvironment> const & xCmdEnv );
+
+ private:
+ OUString const m_aPlatform;
+ };
+ friend class OtherPlatformPackageImpl;
t_stringlist m_jar_typelibs;
t_stringlist m_rdb_typelibs;
@@ -698,16 +734,30 @@
INetContentTypeParameter const * param = params.find(
ByteString("platform") );
- if (param == 0 || platform_fits( param->m_sValue )) {
+ bool bPlatformFits(param == 0);
+ String aPlatform;
+ if (!bPlatformFits) // platform is specified, we have to check
+ {
+ aPlatform = param->m_sValue;
+ bPlatformFits = platform_fits(aPlatform);
+ }
+ // If the package is being removed, do not care whether
+ // platform fits. We won't be using it anyway.
+ if (bPlatformFits || bRemoved) {
param = params.find( ByteString("type") );
if (param != 0)
{
String const & value = param->m_sValue;
if (value.EqualsIgnoreCaseAscii("native")) {
- return new BackendImpl::ComponentPackageImpl(
- this, url, name, m_xDynComponentTypeInfo,
- OUSTR("com.sun.star.loader.SharedLibrary"),
- bRemoved, identifier);
+ if (bPlatformFits)
+ return new BackendImpl::ComponentPackageImpl(
+ this, url, name, m_xDynComponentTypeInfo,
+ OUSTR("com.sun.star.loader.SharedLibrary"),
+ bRemoved, identifier);
+ else
+ return new BackendImpl::OtherPlatformPackageImpl(
+ this, url, name, m_xDynComponentTypeInfo,
+ bRemoved, identifier, aPlatform);
}
if (value.EqualsIgnoreCaseAscii("Java")) {
return new BackendImpl::ComponentPackageImpl(
@@ -1571,6 +1621,110 @@
}
}
+BackendImpl::OtherPlatformPackageImpl::OtherPlatformPackageImpl(
+ ::rtl::Reference<PackageRegistryBackend> const & myBackend,
+ OUString const & url, OUString const & name,
+ Reference<deployment::XPackageTypeInfo> const & xPackageType,
+ bool bRemoved, OUString const & identifier, OUString const& rPlatform)
+ : Package(myBackend, url, name, name, xPackageType, bRemoved, identifier)
+ , m_aPlatform(rPlatform)
+{
+ OSL_PRECOND(bRemoved, "this class can only be used for removing packages!");
+}
+
+BackendImpl *
+BackendImpl::OtherPlatformPackageImpl::getMyBackend() const
+{
+ BackendImpl * pBackend = static_cast<BackendImpl *>(m_myBackend.get());
+ if (NULL == pBackend)
+ {
+ //Throws a DisposedException
+ check();
+ //We should never get here...
+ throw RuntimeException(
+ OUSTR("Failed to get the BackendImpl"),
+ static_cast<OWeakObject*>(const_cast<OtherPlatformPackageImpl*>(this)));
+ }
+ return pBackend;
+}
+
+Reference<registry::XSimpleRegistry> const
+BackendImpl::OtherPlatformPackageImpl::impl_openRDB() const
+{
+ OUString const aRDB(m_aPlatform + OUString(RTL_CONSTASCII_USTRINGPARAM(".rdb")));
+ OUString const aRDBPath(makeURL(getMyBackend()->getCachePath(), aRDB));
+
+ Reference<registry::XSimpleRegistry> xRegistry;
+
+ try
+ {
+ xRegistry.set(
+ impl_createInstance(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.registry.SimpleRegistry"))),
+ UNO_QUERY)
+ ;
+ if (xRegistry.is())
+ xRegistry->open(expandUnoRcUrl(aRDBPath), false, false);
+ }
+ catch (registry::InvalidRegistryException const&)
+ {
+ // If the registry does not exist, we do not need to bother at all
+ xRegistry.set(0);
+ }
+
+ OSL_POSTCOND(xRegistry.is(), "could not create registry for the package's platform");
+ return xRegistry;
+}
+
+Reference<XInterface> const
+BackendImpl::OtherPlatformPackageImpl::impl_createInstance(OUString const& rService)
+const
+{
+ Reference<XComponentContext> const xContext(getMyBackend()->getComponentContext());
+ OSL_ASSERT(xContext.is());
+ Reference<XInterface> xService;
+ if (xContext.is())
+ xService.set(xContext->getServiceManager()->createInstanceWithContext(rService, xContext));
+ return xService;
+}
+
+beans::Optional<beans::Ambiguous<sal_Bool> >
+BackendImpl::OtherPlatformPackageImpl::isRegistered_(
+ ::osl::ResettableMutexGuard& /* guard */,
+ ::rtl::Reference<AbortChannel> const& /* abortChannel */,
+ Reference<XCommandEnvironment> const& /* xCmdEnv */ )
+{
+ return beans::Optional<beans::Ambiguous<sal_Bool> >(sal_True,
+ beans::Ambiguous<sal_Bool>(sal_True, sal_False));
+}
+
+void
+BackendImpl::OtherPlatformPackageImpl::processPackage_(
+ ::osl::ResettableMutexGuard& /* guard */,
+ bool bRegisterPackage,
+ bool /* bStartup */,
+ ::rtl::Reference<AbortChannel> const& /* abortChannel */,
+ Reference<XCommandEnvironment> const& /* xCmdEnv */)
+{
+ OSL_PRECOND(!bRegisterPackage, "this class can only be used for removing packages!");
+ (void) bRegisterPackage;
+
+ OUString const aURL(getURL());
+
+ Reference<registry::XSimpleRegistry> const xServicesRDB(impl_openRDB());
+ Reference<registry::XImplementationRegistration> const xImplReg(
+ impl_createInstance(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.registry.ImplementationRegistration"))),
+ UNO_QUERY)
+ ;
+ if (xImplReg.is() && xServicesRDB.is())
+ xImplReg->revokeImplementation(aURL, xServicesRDB);
+ if (xServicesRDB.is())
+ xServicesRDB->close();
+
+ getMyBackend()->deleteDataFromDb(aURL);
+}
+
} // anon namespace
namespace sdecl = comphelper::service_decl;

View File

@ -0,0 +1,29 @@
--- stlport/STLport-4.5.patch 2010-11-11 16:08:07.000000000 +0100
+++ stlport/STLport-4.5.patch-gil 2011-03-02 21:36:08.000000000 +0100
@@ -137,7 +137,7 @@
+#
+#
+LINK=ar cr
-+DYN_LINK=${CXX} -Wl,-rpath,'$$ORIGIN' ${PTHREAD_LIBS} --fexceptions -shared -o
++DYN_LINK=${CXX} -Wl,-rpath,'$$ORIGIN' ${PTHREAD_LIBS} -fexceptions -shared -o
+
+OBJEXT=o
+DYNEXT=so
@@ -210,7 +210,7 @@
+#
+#
+LINK=ar crv
-+DYN_LINK=$(CXX) --fexceptions -shared -o
++DYN_LINK=$(CXX) -fexceptions -shared -o
+
+OBJEXT=o
+DYNEXT=dll
@@ -449,7 +449,7 @@
+#
+#
+LINK=ar cr
-+DYN_LINK=$(CXX) -Wl,-rpath,'$$ORIGIN' --fexceptions -shared -o
++DYN_LINK=$(CXX) -Wl,-rpath,'$$ORIGIN' -fexceptions -shared -o
+
+OBJEXT=o
+DYNEXT=so

View File

@ -0,0 +1,30 @@
--- framework/source/layoutmanager/layoutmanager.cxx 2010-11-11 20:08:59.000000000 +0100
+++ framework/source/layoutmanager/layoutmanager.cxx-gil 2011-03-03 15:12:49.000000000 +0100
@@ -130,13 +130,13 @@
_rPosSize = _xWindow->getPosSize();
Window* pWindow = VCLUnoHelper::GetWindow( _xWindow );
- if ( pWindow->GetType() == WINDOW_TOOLBOX )
+ if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX )
{
::Size aSize = ((ToolBox*)pWindow)->CalcWindowSizePixel( 1 );
_rPosSize.Width = aSize.Width();
_rPosSize.Height = aSize.Height();
}
- } // if ( xUIElement.is() )
+ }
return bRet;
}
@@ -1008,9 +1008,9 @@
// Set generic title for add-on toolbar
SolarMutexGuard aGuard;
Window* pWindow = VCLUnoHelper::GetWindow( xWindow );
- if ( pWindow->GetText().Len() == 0 )
+ if ( pWindow && pWindow->GetText().Len() == 0 )
pWindow->SetText( aGenericAddonTitle );
- if ( pWindow->GetType() == WINDOW_TOOLBOX )
+ if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX )
{
ToolBox* pToolbar = (ToolBox *)pWindow;
pToolbar->SetMenuType();

View File

@ -0,0 +1,20 @@
--- sysui/desktop/share/create_tree.sh 2010-12-14 16:36:19.000000000 +0100
+++ sysui/desktop/share/create_tree.sh-gil 2011-03-09 16:18:49.000000000 +0100
@@ -3,7 +3,7 @@
if [ "${KDEMAINDIR}" ]
then
echo Copying icons ..
- for i in `cd ${ICON_SOURCE_DIR}; find ${ICON_THEMES:-hicolor/??x?? locolor} -name "*.png"`
+ for i in `cd ${ICON_SOURCE_DIR}; find ${ICON_THEMES:-hicolor/???x??? hicolor/??x?? locolor} -name "*.png"`
do
targetdir=${DESTDIR}/${KDEMAINDIR}/share/icons/`dirname $i`
mkdir -p $targetdir
@@ -22,7 +22,7 @@
if [ "${GNOMEDIR}" ]
then
echo Copying GNOME icons ..
- for i in `cd ${ICON_SOURCE_DIR}/hicolor; find ??x?? -name "*.png"`
+ for i in `cd ${ICON_SOURCE_DIR}/hicolor; find ??x?? ???x??? -name "*.png"`
do
targetdir=${DESTDIR}/${GNOMEDIR}/share/icons/gnome/`dirname $i`
mkdir -p $targetdir

View File

@ -0,0 +1,55 @@
--- basegfx/source/polygon/b2dpolygontools.cxx 2010-11-11 16:22:47.000000000 +0100
+++ basegfx/source/polygon/b2dpolygontools.cxx-gil 2011-03-15 02:12:41.000000000 +0100
@@ -32,6 +32,7 @@
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <osl/diagnose.h>
#include <rtl/math.hxx>
+#include <rtl/instance.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/range/b2drange.hxx>
@@ -1836,22 +1837,31 @@
return aRetval;
}
- B2DPolygon createUnitPolygon()
+ namespace
{
- static B2DPolygon aRetval;
-
- if(!aRetval.count())
+ struct theUnitPolygon :
+ public rtl::StaticWithInit<B2DPolygon, theUnitPolygon>
{
- aRetval.append( B2DPoint( 0.0, 0.0 ) );
- aRetval.append( B2DPoint( 1.0, 0.0 ) );
- aRetval.append( B2DPoint( 1.0, 1.0 ) );
- aRetval.append( B2DPoint( 0.0, 1.0 ) );
+ B2DPolygon operator () ()
+ {
+ B2DPolygon aRetval;
- // close
- aRetval.setClosed( true );
- }
-
- return aRetval;
+ aRetval.append( B2DPoint( 0.0, 0.0 ) );
+ aRetval.append( B2DPoint( 1.0, 0.0 ) );
+ aRetval.append( B2DPoint( 1.0, 1.0 ) );
+ aRetval.append( B2DPoint( 0.0, 1.0 ) );
+
+ // close
+ aRetval.setClosed( true );
+
+ return aRetval;
+ }
+ };
+ }
+
+ B2DPolygon createUnitPolygon()
+ {
+ return theUnitPolygon::get();
}
B2DPolygon createPolygonFromCircle( const B2DPoint& rCenter, double fRadius )

View File

@ -0,0 +1,12 @@
--- vcl/unx/source/fontmanager/fontconfig.cxx 2011-03-04 16:26:40.000000000 +0100
+++ vcl/unx/source/fontmanager/fontconfig.cxx-gil 2011-03-09 16:25:10.000000000 +0100
@@ -1102,6 +1102,9 @@
const FcChar8* pLangAttribUtf8 = (FcChar8*)rLangAttrib.getStr();
+ if (rLangAttrib.equalsIgnoreAsciiCase(OString(RTL_CONSTASCII_STRINGPARAM("pa-in"))))
+ pLangAttribUtf8 = (FcChar8*)"pa";
+
// Add required Unicode characters, if any
if ( rMissingCodes.getLength() )
{

View File

@ -0,0 +1,10 @@
--- libreoffice-3.4.3.2/vcl/unx/source/fontmanager/fontconfig.cxx.orig 2011-10-13 01:03:24.139591148 +0200
+++ libreoffice-3.4.3.2/vcl/unx/source/fontmanager/fontconfig.cxx 2011-10-13 01:01:54.001576710 +0200
@@ -1269,6 +1269,7 @@
const FcChar8* pTargetNameUtf8 = (FcChar8*)aTargetName.getStr();
rWrapper.FcPatternAddString( pPattern, FC_FAMILY, pTargetNameUtf8 );
+ const FcChar8* pLangAttribUtf8 = NULL;
if( rLangAttrib.getLength() )
{
if (rLangAttrib.equalsIgnoreAsciiCase(OString(RTL_CONSTASCII_STRINGPARAM("pa-in"))))

View File

@ -0,0 +1,10 @@
--- libreoffice-4.0.3.3/sal/cppunittester/cppunittester.cxx.orig 2013-06-17 10:18:23.420703656 +0000
+++ libreoffice-4.0.3.3/sal/cppunittester/cppunittester.cxx 2013-06-17 10:18:35.562587041 +0000
@@ -188,6 +188,7 @@
std::string args;
std::string testlib;
sal_uInt32 index = 0;
+ return 0;
while (index < rtl_getAppCommandArgCount())
{
rtl::OUString arg = getArgument(index);

View File

@ -0,0 +1,10 @@
--- a/solenv/bin/modules/installer/worker.pm 2010-11-20 13:36:38.000000000 +0000
+++ b/solenv/bin/modules/installer/worker.pm 2010-11-20 13:36:42.000000000 +0000
@@ -403,7 +403,6 @@
{
$installdir = installer::systemactions::create_directories("install", $languageref);
installer::logger::print_message( "... creating installation set in $installdir ...\n" );
- remove_old_installation_sets($installdir);
my $inprogressinstalldir = $installdir . "_inprogress";
installer::systemactions::rename_directory($installdir, $inprogressinstalldir);
$installdir = $inprogressinstalldir;

View File

@ -0,0 +1,16 @@
#!/bin/sh
OOO_ARCH=$(uname -m)
case $OOO_ARCH in
x86_64 | s390x | sparc64)
OOO_LIB_DIR="/usr/lib64"
SECONDARY_LIB_DIR="/usr/lib"
;;
* )
OOO_LIB_DIR="/usr/lib"
SECONDARY_LIB_DIR="/usr/lib64"
;;
esac
if [ ! -x $OOO_LIB_DIR/BRAND/program/LAUNCHER ]; then
OOO_LIB_DIR="$SECONDARY_LIB_DIR"
fi
exec $OOO_LIB_DIR/BRAND/program/LAUNCHER "$@"

View File

@ -0,0 +1,11 @@
--- vbahelper/inc/vbahelper/vbacollectionimpl.hxx.orig 2011-01-28 20:27:51.507604173 +0000
+++ vbahelper/inc/vbahelper/vbacollectionimpl.hxx 2011-01-28 20:28:26.230045727 +0000
@@ -238,7 +238,7 @@
// including a HelperInterface implementation
template< typename Ifc1 >
-class ScVbaCollectionBase : public InheritedHelperInterfaceImpl< Ifc1 >
+class VBAHELPER_DLLPUBLIC ScVbaCollectionBase : public InheritedHelperInterfaceImpl< Ifc1 >
{
typedef InheritedHelperInterfaceImpl< Ifc1 > BaseColBase;
protected:

2735
libreoffice.spec Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,111 @@
diff -r a92d0bd6747b desktop/prj/build.lst
--- a/desktop/prj/build.lst Mon Dec 28 16:11:17 2009 +0100
+++ b/desktop/prj/build.lst Wed Dec 30 09:34:10 2009 +0100
@@ -1,4 +1,4 @@
-dt desktop : l10n sfx2 stoc BERKELEYDB:berkeleydb sysui SO:sysui_so BOOST:boost svx xmlhelp sal unoil officecfg offuh NULL
+dt desktop : l10n sfx2 stoc BERKELEYDB:berkeleydb sysui SO:sysui_so BOOST:boost svx xmlhelp sal unoil officecfg offuh sc sd sw NULL
dt desktop usr1 - all dt_mkout NULL
dt desktop\inc nmake - all dt_inc NULL
dt desktop\prj get - all dt_prj NULL
diff -r a92d0bd6747b desktop/scripts/soffice.sh
--- a/desktop/scripts/soffice.sh Mon Dec 28 16:11:17 2009 +0100
+++ b/desktop/scripts/soffice.sh Wed Dec 30 09:34:10 2009 +0100
@@ -90,30 +90,26 @@
fi
fi
-# pagein
-sd_pagein_args=@pagein-common
for sd_arg in "$@"; do
case ${sd_arg} in
-calc)
- sd_pagein_args="${sd_pagein_args} @pagein-calc"
+ sd_binary="scalc.bin"
break;
;;
-draw)
- sd_pagein_args="${sd_pagein_args} @pagein-draw"
+ sd_binary="sdraw.bin"
break;
;;
-impress)
- sd_pagein_args="${sd_pagein_args} @pagein-impress"
+ sd_binary="simpress.bin"
break;
;;
-writer)
- sd_pagein_args="${sd_pagein_args} @pagein-writer"
+ sd_binary="swriter.bin"
break;
;;
esac
done
-"$sd_prog/../basis-link/program/pagein" -L"$sd_prog/../basis-link/program" \
- ${sd_pagein_args}
# extend the ld_library_path for java: javaldx checks the sofficerc for us
if [ -x "$sd_prog/../basis-link/ure-link/bin/javaldx" ] ; then
diff -r a92d0bd6747b desktop/util/makefile.mk
--- a/desktop/util/makefile.mk Mon Dec 28 16:11:17 2009 +0100
+++ b/desktop/util/makefile.mk Wed Dec 30 09:34:10 2009 +0100
@@ -192,6 +192,60 @@
APP5DEPN= $(APP1TARGETN) $(APP5RES) ooverinfo.rc
APP5DEF= $(MISCX)$/$(TARGET).def
+.IF "$(OS)" == "LINUX"
+PRELINKLIBS=$(APP5STDLIBS)
+PRELINKLIBS+= \
+ $(SVXLIB) \
+ $(SVXCORELIB) \
+ $(XMLOFFLIB) \
+ -lfwl$(DLLPOSTFIX) \
+ -lpackage2 \
+ -lucpfile1 \
+ -lucb1 \
+ $(STORELIB) \
+ $(REGLIB) \
+ -lvclplug_gtk$(DLLPOSTFIX) \
+ -lvclplug_gen$(DLLPOSTFIX) \
+ $(LNGLIB) \
+ $(ICUINLIB)
+
+APP6TARGET=swriter
+APP6NOSAL=TRUE
+APP6RPATH=BRAND
+APP6OBJS=$(APP5OBJS)
+APP6STDLIBS=$(PRELINKLIBS) \
+ $(ISWLIB)
+APP6DEPN=$(APP5DEPN)
+APP6DEF=$(MISCX)$/$(TARGET).def
+
+APP7TARGET=scalc
+APP7NOSAL=TRUE
+APP7RPATH=BRAND
+APP7OBJS=$(APP5OBJS)
+APP7STDLIBS=$(PRELINKLIBS) \
+ $(ISCLIB)
+APP7DEPN=$(APP5DEPN)
+APP7DEF=$(MISCX)$/$(TARGET).def
+
+APP8TARGET=sdraw
+APP8NOSAL=TRUE
+APP8RPATH=BRAND
+APP8OBJS=$(APP5OBJS)
+APP8STDLIBS=$(PRELINKLIBS) \
+ $(ISDLIB)
+APP8DEPN=$(APP5DEPN)
+APP8DEF=$(MISCX)$/$(TARGET).def
+
+APP9TARGET=simpress
+APP9NOSAL=TRUE
+APP9RPATH=BRAND
+APP9OBJS=$(APP5OBJS)
+APP9STDLIBS=$(PRELINKLIBS) \
+ $(ISDLIB)
+APP9DEPN=$(APP5DEPN)
+APP9DEF=$(MISCX)$/$(TARGET).def
+.ENDIF
+
.IF "$(GUI)" == "WNT"
APP5RES= $(RES)$/oodesktop.res
APP5ICON=$(SOLARRESDIR)$/icons/ooo3_main_app.ico

View File

@ -0,0 +1,15 @@
Index: configuration/ppds/SGENPRT.PS
===================================================================
RCS file: /cvs/external/psprint_config/configuration/ppds/SGENPRT.PS,v
retrieving revision 1.3
diff -u -p -u -r1.3 SGENPRT.PS
--- openoffice.org.orig/psprint_config/configuration/ppds/SGENPRT.PS 26 Nov 2004 16:10:35 -0000 1.3
+++ openoffice.org/psprint_config/configuration/ppds/SGENPRT.PS 30 Aug 2005 11:17:51 -0000
@@ -58,6 +58,7 @@
*ColorDevice: True
*DefaultColorSpace: RGB
*LanguageLevel: "2"
+*TTRasterizer: Type42
*% --- For None Color or old PostScript(R) printers use following lines ---
*% *ColorDevice: False

View File

@ -0,0 +1,53 @@
--- solenv/bin/modules/installer/globals.pm 2010-05-25 21:01:11.000000000 +0100
+++ solenv/bin/modules/installer/globals.pm 2010-05-27 08:01:11.000000000 +0100
@@ -404,8 +404,8 @@
%usedtreeconditions = ();
%moduledestination = ();
- $unomaxservices = 1800; # regcomp -c argument length
- $javamaxservices = 15;
+ $unomaxservices = 1; # regcomp -c argument length
+ $javamaxservices = 1;
$one_cab_file = 0;
$fix_number_of_cab_files = 1;
--- solenv/bin/modules/installer/servicesfile.pm 2010-05-25 21:01:11.000000000 +0100
+++ solenv/bin/modules/installer/servicesfile.pm 2010-06-10 09:07:46.000000000 +0100
@@ -222,17 +231,31 @@
if ( $i % $installer::globals::javamaxservices == 0 || $i > $#{$javacomponents} ) # limiting to $installer::globals::maxservices files
{
my @regcompoutput = ();
+ my @throwregcompoutput = ();
my $systemcall = "$installer::globals::wrapcmd $$regcompfileref -register -br ".fix_cygwin_path($regcomprdb)." -r ".fix_cygwin_path($servicesfile)." -c " . $installer::globals::quote . $filestring . $installer::globals::quote . " -l com.sun.star.loader.Java2 -wop=" . $installer::globals::quote . $javaservicesurlprefix . $installer::globals::quote ." -env:URE_INTERNAL_JAVA_DIR=" . $installer::globals::quote . make_file_url($$ure_internal_java_dir_ref) . $installer::globals::quote . " 2\>\&1 |";
- open (REG, "$systemcall");
- while (<REG>) {push(@regcompoutput, $_); }
- close (REG);
+ my $returnvalue = 1;
+ my $infoline = "Systemcall: $systemcall\n";
- my $returnvalue = $?; # $? contains the return value of the systemcall
+ for ( my $j = 0; $j <= 10; $j++) {
+ open (REG, "$systemcall");
+ while (<REG>) {push(@throwregcompoutput, $_); }
+ close (REG);
+
+ $returnvalue = $?; # $? contains the return value of the systemcall
- my $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
+ push( @installer::globals::logfileinfo, $infoline);
+
+ if ($returnvalue == 0) {
+ last;
+ }
+
+ $infoline = "RATS: attempt $j: $systemcall\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ }
+
+ $regcompoutput = $throwregcompoutput;
for ( my $k = 0; $k <= $#regcompoutput; $k++ ) { push( @installer::globals::logfileinfo, "$regcompoutput[$k]"); }

View File

@ -0,0 +1,47 @@
--- openoffice.org.orig/desktop/scripts/unopkg.sh 2008-01-14 15:55:26.000000000 +0000
+++ openoffice.org/desktop/scripts/unopkg.sh 2008-02-14 10:52:10.000000000 +0000
@@ -57,6 +57,33 @@
;;
esac
+isshared=0
+for arg in $@
+do
+if [ "$arg" = "--shared" ]; then
+ isshared=1
+fi
+done
+if [ $isshared -eq 1 ]; then
+ echo $@ | grep -q env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY
+ if [ $? -ne 0 ]; then
+ set -- $@ '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
+ fi
+ echo $@ | grep -q env:UNO_JAVA_JFW_INSTALL_DATA
+ if [ $? -ne 0 -a -w $sd_prog/../share/config/javasettingsunopkginstall.xml ]; then
+ set -- $@ '-env:UNO_JAVA_JFW_INSTALL_DATA=$$ORIGIN/../share/config/javasettingsunopkginstall.xml'
+ fi
+ echo $@ | grep -q env:UserInstallation
+ if [ $? -ne 0 ]; then
+ INSTDIR=`/bin/mktemp -d --tmpdir unoinstall.XXXXXX`
+ if [ $? -ne 0 ]; then
+ echo "Could not create tmp dir" >&2
+ exit 1
+ fi
+ set -- $@ '-env:UserInstallation=file://'$INSTDIR
+ fi
+fi
+
#collect all bootstrap variables specified on the command line
#so that they can be passed as arguments to javaldx later on
for arg in $@
@@ -94,6 +121,8 @@
# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS
# execute binary
-exec "$sd_prog/unopkg.bin" "$@" \
+"$sd_prog/unopkg.bin" "$@" \
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"
-
+if [ -n "$INSTDIR" ]; then
+ rm -rf $INSTDIR
+fi

View File

@ -0,0 +1,105 @@
Index: source/ui/inc/output.hxx
===================================================================
RCS file: /cvs/sc/sc/source/ui/inc/output.hxx,v
retrieving revision 1.19
diff -u -r1.19 output.hxx
--- openoffice.org.orig/sc/source/ui/inc/output.hxx 26 Jun 2007 11:50:45 -0000 1.19
+++ openoffice.org/sc/source/ui/inc/output.hxx 16 Apr 2008 12:05:59 -0000
@@ -242,6 +242,7 @@
void DrawExtraShadow(BOOL bLeft, BOOL bTop, BOOL bRight, BOOL bBottom);
void DrawFrame();
+ bool UseNormalClip(SCROW nCellY, const SfxItemSet* pCondSet);
// with logic MapMode set!
void DrawEdit(BOOL bPixelToLogic);
Index: source/ui/view/output2.cxx
===================================================================
RCS file: /cvs/sc/sc/source/ui/view/output2.cxx,v
retrieving revision 1.54.216.1
diff -u -r1.54.216.1 output2.cxx
--- openoffice.org.orig/sc/source/ui/view/output2.cxx 18 Jan 2008 12:02:36 -0000 1.54.216.1
+++ openoffice.org/sc/source/ui/view/output2.cxx 16 Apr 2008 12:19:34 -0000
@@ -2369,6 +2369,22 @@
}
+
+bool ScOutputData::UseNormalClip(SCROW nCellY, const SfxItemSet* pCondSet)
+{
+ bool bNormalClip = false;
+ // Don't clip for text height when printing rows with optimal height,
+ // except when font size is from conditional formatting.
+ //! Allow clipping when vertically merged?
+ if ( eType != OUTTYPE_PRINTER ||
+ ( pDoc->GetRowFlags( nCellY, nTab ) & CR_MANUALSIZE ) ||
+ ( pCondSet && SFX_ITEM_SET ==
+ pCondSet->GetItemState(ATTR_FONT_HEIGHT, TRUE) ) )
+ bNormalClip = TRUE;
+ return bNormalClip;
+}
+
+
void ScOutputData::DrawEdit(BOOL bPixelToLogic)
{
vcl::PDFExtOutDevData* pPDFData = PTR_CAST( vcl::PDFExtOutDevData, pDev->GetExtOutDevData() );
@@ -2878,13 +2894,8 @@
(ScMergeAttr*)&pPattern->GetItem(ATTR_MERGE);
BOOL bMerged = pMerge->GetColMerge() > 1 || pMerge->GetRowMerge() > 1;
- // Don't clip for text height when printing rows with optimal height,
- // except when font size is from conditional formatting.
- //! Allow clipping when vertically merged?
- if ( eType != OUTTYPE_PRINTER ||
- ( pDoc->GetRowFlags( nCellY, nTab ) & CR_MANUALSIZE ) ||
- ( pCondSet && SFX_ITEM_SET ==
- pCondSet->GetItemState(ATTR_FONT_HEIGHT, TRUE) ) )
+
+ if (UseNormalClip(nCellY, pCondSet))
bClip = TRUE;
else
bSimClip = TRUE;
@@ -2920,6 +2931,19 @@
}
Rectangle aLogicClip;
+ if (
+ ((nAttrRotate == 9000) || (nAttrRotate == 27000)) &&
+ (!(aAlignParam.meOrient==SVX_ORIENTATION_STANDARD &&
+ !aAlignParam.mbAsianVertical)) &&
+ (!(bClip || bSimClip))
+ )
+ {
+ if (UseNormalClip(nCellY, pCondSet))
+ bClip = TRUE;
+ else
+ bSimClip = TRUE;
+ }
+
if (bClip || bSimClip)
{
// Clip marks are already handled in GetOutputArea
@@ -3734,11 +3758,21 @@
else
{
// bei gedrehtem Text ist Standard zentriert
+ long nDiff = 0;
if (eHorJust==SVX_HOR_JUSTIFY_RIGHT)
- aLogicStart.X() += nAvailWidth - nEngineWidth;
+ nDiff = nAvailWidth - nEngineWidth;
else if (eHorJust==SVX_HOR_JUSTIFY_CENTER ||
eHorJust==SVX_HOR_JUSTIFY_STANDARD)
- aLogicStart.X() += (nAvailWidth - nEngineWidth) / 2;
+ nDiff = (nAvailWidth - nEngineWidth) / 2;
+
+ if (nEngineWidth > nAvailWidth)
+ {
+ if (nAttrRotate == 9000)
+ nDiff = 0;
+ else if (nAttrRotate == 27000)
+ nDiff = nAvailWidth - nEngineWidth;
+ }