update to 4.4.0 beta1

f41
David Tardon 10 years ago
parent c85e8b9252
commit 42d103d2f2

6
.gitignore vendored

@ -44,6 +44,7 @@
/libmspub-0.0.6.tar.bz2
/libmwaw-0.2.0.tar.bz2
/libodfgen-0.0.4.tar.bz2
/libpagemaker-0.0.1.tar.bz2
/libvisio-0.0.31.tar.bz2
/libreoffice-4.2.4.1.tar.xz
/libreoffice-help-4.2.4.1.tar.xz
@ -60,7 +61,7 @@
/libetonyek-0.1.0.tar.bz2
/libfreehand-0.1.0.tar.bz2
/libmspub-0.1.0.tar.bz2
/libmwaw-0.3.1.tar.bz2
/libmwaw-0.3.3.tar.bz2
/libodfgen-0.1.0.tar.bz2
/librevenge-0.0.0.tar.bz2
/libvisio-0.1.0.tar.bz2
@ -110,3 +111,6 @@
/libreoffice-4.3.4.1.tar.xz
/libreoffice-help-4.3.4.1.tar.xz
/libreoffice-translations-4.3.4.1.tar.xz
/libreoffice-4.4.0.0.beta1.tar.xz
/libreoffice-help-4.4.0.0.beta1.tar.xz
/libreoffice-translations-4.4.0.0.beta1.tar.xz

@ -1,34 +0,0 @@
From 8d12e4ec8b843d59661a12a7a92bfec7e4473e0f Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Thu, 4 Sep 2014 15:26:58 +0200
Subject: [PATCH] No -fstack-protect-strong for gcc3_linux_aarch64/cpp2uno.cxx
vtableSlotCall
Change-Id: I52efda594d87c37c2d38c61b54f1eebcc76cdfce
---
bridges/Library_cpp_uno.mk | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk
index 33a5c00..c2e303d 100644
--- a/bridges/Library_cpp_uno.mk
+++ b/bridges/Library_cpp_uno.mk
@@ -38,7 +38,14 @@ endif
else ifeq ($(OS)-$(CPUNAME),LINUX-AARCH64)
bridges_SELECTED_BRIDGE := gcc3_linux_aarch64
-bridge_exception_objects := abi callvirtualfunction cpp2uno uno2cpp
+bridge_exception_objects := abi callvirtualfunction uno2cpp
+
+$(eval $(call gb_Library_add_cxxobjects,$(gb_CPPU_ENV)_uno, \
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/cpp2uno, \
+ $(subst -fstack-protector-strong,-fstack-protector, \
+ $(gb_LinkTarget_EXCEPTIONFLAGS) \
+ $(call gb_LinkTarget__get_cxxflags,$(gb_CPPU_ENV)_uno)) \
+))
else ifeq ($(OS)-$(CPUNAME),LINUX-AXP)
--
1.9.3

@ -1,62 +0,0 @@
From fdb1d62a09f7320ee5c2828aa4ce84248a6e3e4e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 17 Jul 2014 13:48:30 +0100
Subject: [PATCH] Related: rhbz#1117853 nStartPara of EE_PARA_NOT_FOUND
we know that nStartPara is EE_PARA_NOT_FOUND so rOutliner.GetAbsPos must have
returned that, but we don't know the circumstances that lead to that yet.
Change-Id: I53a488317d154b4a3c050248b8737da0a611ca43
---
editeng/source/outliner/outliner.cxx | 3 +--
sd/source/ui/view/outlnvsh.cxx | 5 ++---
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx
index 4d7214b..aaa843d 100644
--- a/editeng/source/outliner/outliner.cxx
+++ b/editeng/source/outliner/outliner.cxx
@@ -384,7 +384,6 @@ sal_Int32 Outliner::GetBulletsNumberingStatus() const
OutlinerParaObject* Outliner::CreateParaObject( sal_Int32 nStartPara, sal_Int32 nCount ) const
{
-
if ( static_cast<sal_uLong>(nStartPara) + nCount >
static_cast<sal_uLong>(pParaList->GetParagraphCount()) )
nCount = pParaList->GetParagraphCount() - nStartPara;
@@ -394,7 +393,7 @@ OutlinerParaObject* Outliner::CreateParaObject( sal_Int32 nStartPara, sal_Int32
if ( ( nStartPara + nCount ) > pEditEngine->GetParagraphCount() )
nCount = pEditEngine->GetParagraphCount() - nStartPara;
- if( !nCount )
+ if (nCount <= 0)
return NULL;
EditTextObject* pText = pEditEngine->CreateTextObject( nStartPara, nCount );
diff --git a/sd/source/ui/view/outlnvsh.cxx b/sd/source/ui/view/outlnvsh.cxx
index 03e899d..e3b4aa7 100644
--- a/sd/source/ui/view/outlnvsh.cxx
+++ b/sd/source/ui/view/outlnvsh.cxx
@@ -1658,7 +1658,6 @@ bool OutlineViewShell::UpdateTitleObject( SdPage* pPage, Paragraph* pPara )
::Outliner* pOutliner = pOlView->GetOutliner();
SdrTextObj* pTO = pOlView->GetTitleTextObject( pPage );
- OutlinerParaObject* pOPO = NULL;
OUString aTest = pOutliner->GetText(pPara);
bool bText = !aTest.isEmpty();
@@ -1675,9 +1674,9 @@ bool OutlineViewShell::UpdateTitleObject( SdPage* pPage, Paragraph* pPara )
}
// if we have a title object and a text, set the text
- if( pTO )
+ OutlinerParaObject* pOPO = pTO ? pOutliner->CreateParaObject(pOutliner->GetAbsPos(pPara), 1) : NULL;
+ if (pOPO)
{
- pOPO = pOutliner->CreateParaObject( pOutliner->GetAbsPos( pPara ), 1 );
pOPO->SetOutlinerMode( OUTLINERMODE_TITLEOBJECT );
pOPO->SetVertical( pTO->IsVerticalWriting() );
if( pTO->GetOutlinerParaObject() && (pOPO->GetTextObject() == pTO->GetOutlinerParaObject()->GetTextObject()) )
--
1.9.3

@ -1,76 +0,0 @@
From eb21b6827e25b2c943025a662cde2049c0454a6b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 15 Aug 2014 15:59:58 +0100
Subject: [PATCH] Related: rhbz#1130264 plausible fix for reported crash
Change-Id: I4ccdf19bfc7986881f7022109f22f47a0f493591
---
avmedia/source/gstreamer/gstplayer.cxx | 20 ++++++++++++++++----
avmedia/source/gstreamer/gstplayer.hxx | 3 +++
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
index ceea8e2..836e89e 100644
--- a/avmedia/source/gstreamer/gstplayer.cxx
+++ b/avmedia/source/gstreamer/gstplayer.cxx
@@ -74,7 +74,9 @@ Player::Player( const uno::Reference< lang::XMultiServiceFactory >& rxMgr ) :
mpXOverlay( NULL ),
mnDuration( 0 ),
mnWidth( 0 ),
- mnHeight( 0 )
+ mnHeight( 0 ),
+ mnWatchID( 0 ),
+ mbWatchID( false )
{
// Initialize GStreamer library
int argc = 1;
@@ -127,11 +129,15 @@ void SAL_CALL Player::disposing()
g_object_unref( G_OBJECT ( mpXOverlay ) );
mpXOverlay = NULL;
}
+
+ }
+ if (mbWatchID)
+ {
+ g_source_remove(mnWatchID);
+ mbWatchID = false;
}
}
-
-
static gboolean pipeline_bus_callback( GstBus *, GstMessage *message, gpointer data )
{
Player* pPlayer = static_cast<Player*>(data);
@@ -357,7 +363,13 @@ void Player::preparePlaybin( const OUString& rURL, GstElement *pSink )
g_object_set( G_OBJECT( mpPlaybin ), "uri", ascURL.getStr() , NULL );
pBus = gst_element_get_bus( mpPlaybin );
- gst_bus_add_watch( pBus, pipeline_bus_callback, this );
+ if (mbWatchID)
+ {
+ g_source_remove(mnWatchID);
+ mbWatchID = false;
+ }
+ mnWatchID = gst_bus_add_watch( pBus, pipeline_bus_callback, this );
+ mbWatchID = true;
DBG( "%p set sync handler", this );
#ifdef AVMEDIA_GST_0_10
gst_bus_set_sync_handler( pBus, pipeline_bus_sync_handler, this );
diff --git a/avmedia/source/gstreamer/gstplayer.hxx b/avmedia/source/gstreamer/gstplayer.hxx
index 2426eed..33c9e4d 100644
--- a/avmedia/source/gstreamer/gstplayer.hxx
+++ b/avmedia/source/gstreamer/gstplayer.hxx
@@ -97,6 +97,9 @@ protected:
int mnWidth;
int mnHeight;
+ guint mnWatchID;
+ bool mbWatchID;
+
osl::Condition maSizeCondition;
};
--
1.9.3

@ -1,156 +0,0 @@
From f9f9aa9873c5851da86d33ca75e937ac022206a3 Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Wed, 8 Oct 2014 09:54:55 +0200
Subject: [PATCH] Remove smb from X-KDE-Protocols lines
smb was included in the set of supported protocols since those X-KDE-Protocol
lines got introduced with 673be8e76856c6bc39f448f3374db4ae84258952 "add
X-KDE-Protocols," but as discussed in the mail thread starting at
<http://lists.freedesktop.org/archives/libreoffice/2014-September/063621.html>
"X-KDE-Protocols=...,smb,...," actual support for smb URLs in LO under KDE is
very fragile and typically requires further steps from the user (which vary
across the various LO configure options, --enable-gio vs. --enable-gnome-vfs,
and Linux distros) to work at all.
So it is probably best to not unconditionally claim smb support in those
X-KDE_Protocols lines at least in the vanilla LO sources (esp. since the TDF
builds with --enable-gnome-vfs need a really weird OOO_FORCE_DESKTOP=gnome
workaround to make it work at all, cf.
<http://lists.freedesktop.org/archives/libreoffice/2014-October/063876.html>
"Re: X-KDE-Protocols=...,smb,..."). Any Linux distros that are confident that
smb support in LO under KDE reliably works for them can patch those lines
locally.
Change-Id: I1c247d85825c96f0d74efcce3003e327a1522fa3
---
sysui/desktop/menus/base.desktop | 2 +-
sysui/desktop/menus/calc.desktop | 2 +-
sysui/desktop/menus/draw.desktop | 2 +-
sysui/desktop/menus/impress.desktop | 2 +-
sysui/desktop/menus/math.desktop | 2 +-
sysui/desktop/menus/qstart.desktop | 2 +-
sysui/desktop/menus/startcenter.desktop | 2 +-
sysui/desktop/menus/writer.desktop | 2 +-
sysui/desktop/menus/xsltfilter.desktop | 2 +-
9 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/sysui/desktop/menus/base.desktop b/sysui/desktop/menus/base.desktop
index 26f1c6a..76255fe 100644
--- a/sysui/desktop/menus/base.desktop
+++ b/sysui/desktop/menus/base.desktop
@@ -31,8 +31,8 @@ X-GIO-NoFuse=true
Keywords=Data;SQL;
InitialPreference=5
StartupWMClass=libreoffice-base
-X-KDE-Protocols=file,http,smb,ftp,webdav
+X-KDE-Protocols=file,http,ftp,webdav
X-TryExec=oobase
Actions=NewDocument;
[Desktop Action NewDocument]
diff --git a/sysui/desktop/menus/calc.desktop b/sysui/desktop/menus/calc.desktop
index fca3fe3..5aa48d2 100644
--- a/sysui/desktop/menus/calc.desktop
+++ b/sysui/desktop/menus/calc.desktop
@@ -31,8 +31,8 @@ X-GIO-NoFuse=true
Keywords=Accounting;Stats;OpenDocument Spreadsheet;Chart;Microsoft Excel;Microsoft Works;OpenOffice Calc;ods;xls;xlsx;
InitialPreference=5
StartupWMClass=libreoffice-calc
-X-KDE-Protocols=file,http,smb,ftp,webdav
+X-KDE-Protocols=file,http,ftp,webdav
X-TryExec=oocalc
Actions=NewDocument;
[Desktop Action NewDocument]
diff --git a/sysui/desktop/menus/draw.desktop b/sysui/desktop/menus/draw.desktop
index ae57504..3e20e8d 100644
--- a/sysui/desktop/menus/draw.desktop
+++ b/sysui/desktop/menus/draw.desktop
@@ -31,8 +31,8 @@ X-GIO-NoFuse=true
Keywords=Vector;Schema;Diagram;Layout;OpenDocument Graphics;Microsoft Publisher;Corel Draw;cdr;odg;svg;
InitialPreference=5
StartupWMClass=libreoffice-draw
-X-KDE-Protocols=file,http,smb,ftp,webdav
+X-KDE-Protocols=file,http,ftp,webdav
X-TryExec=oodraw
Actions=NewDocument;
[Desktop Action NewDocument]
diff --git a/sysui/desktop/menus/impress.desktop b/sysui/desktop/menus/impress.desktop
index c1f6231..b419593 100644
--- a/sysui/desktop/menus/impress.desktop
+++ b/sysui/desktop/menus/impress.desktop
@@ -31,8 +31,8 @@ X-GIO-NoFuse=true
Keywords=Slideshow;Slides;OpenDocument Presentation;Microsoft PowerPoint;Microsoft Works;OpenOffice Impress;odp;ppt;pptx;
InitialPreference=5
StartupWMClass=libreoffice-impress
-X-KDE-Protocols=file,http,smb,ftp,webdav
+X-KDE-Protocols=file,http,ftp,webdav
X-TryExec=ooimpress
Actions=NewDocument;
[Desktop Action NewDocument]
diff --git a/sysui/desktop/menus/math.desktop b/sysui/desktop/menus/math.desktop
index b6981f5..e437d26 100644
--- a/sysui/desktop/menus/math.desktop
+++ b/sysui/desktop/menus/math.desktop
@@ -32,8 +32,8 @@ X-GIO-NoFuse=true
Keywords=Equation;OpenDocument Formula;Formula;odf;MathML;
InitialPreference=5
StartupWMClass=libreoffice-math
-X-KDE-Protocols=file,http,smb,ftp,webdav
+X-KDE-Protocols=file,http,ftp,webdav
X-TryExec=oomath
Actions=NewDocument;
[Desktop Action NewDocument]
diff --git a/sysui/desktop/menus/qstart.desktop b/sysui/desktop/menus/qstart.desktop
index 2669cc3..ec4e9c2 100644
--- a/sysui/desktop/menus/qstart.desktop
+++ b/sysui/desktop/menus/qstart.desktop
@@ -25,4 +25,4 @@ NoDisplay=true
Name=%PRODUCTNAME Quickstarter
Comment=Hook for quickstarter startup
X-GIO-NoFuse=true
-X-KDE-Protocols=file,http,smb,ftp,webdav
+X-KDE-Protocols=file,http,ftp,webdav
diff --git a/sysui/desktop/menus/startcenter.desktop b/sysui/desktop/menus/startcenter.desktop
index 3858c89..08d4a11 100644
--- a/sysui/desktop/menus/startcenter.desktop
+++ b/sysui/desktop/menus/startcenter.desktop
@@ -30,7 +30,7 @@ Comment=The office productivity suite compatible to the open and standardized OD
StartupNotify=true
X-GIO-NoFuse=true
StartupWMClass=libreoffice-startcenter
-X-KDE-Protocols=file,http,smb,ftp,webdav
+X-KDE-Protocols=file,http,ftp,webdav
##Define Actions
Actions=Writer;Calc;Impress;Draw;Base;Math;
diff --git a/sysui/desktop/menus/writer.desktop b/sysui/desktop/menus/writer.desktop
index e22a7b4..44a6421 100644
--- a/sysui/desktop/menus/writer.desktop
+++ b/sysui/desktop/menus/writer.desktop
@@ -31,8 +31,8 @@ X-GIO-NoFuse=true
Keywords=Text;Letter;Fax;Document;OpenDocument Text;Microsoft Word;Microsoft Works;Lotus WordPro;OpenOffice Writer;CV;odt;doc;docx;rtf;
InitialPreference=5
StartupWMClass=libreoffice-writer
-X-KDE-Protocols=file,http,smb,ftp,webdav
+X-KDE-Protocols=file,http,ftp,webdav
X-TryExec=oowriter
Actions=NewDocument;
[Desktop Action NewDocument]
diff --git a/sysui/desktop/menus/xsltfilter.desktop b/sysui/desktop/menus/xsltfilter.desktop
index 3dcad81..adea82a 100644
--- a/sysui/desktop/menus/xsltfilter.desktop
+++ b/sysui/desktop/menus/xsltfilter.desktop
@@ -9,4 +9,4 @@ GenericName=XSLT based filters
NoDisplay=true
StartupNotify=true
X-GIO-NoFuse=true
-X-KDE-Protocols=file,http,smb,ftp,webdav
+X-KDE-Protocols=file,http,ftp,webdav
--
1.9.3

@ -1,49 +0,0 @@
From 1fec67aab152e0c0ad6dd85082c50f1beff7d520 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 16 Sep 2014 13:22:44 +0100
Subject: [PATCH] Resolves: fdo#68967 looping layout
RemoveFollowFlowLine() marks the layout invalid, but the
next cycle through does everything exactly the same again.
Try the same foul horror as nUnSplitted. But at least with
a test-case that nails down reproducing the bug if a better
fix is needed.
Change-Id: Id6698bcb2364bd0253bedd4a7c313e25f705be8d
---
sw/qa/extras/ww8import/data/fdo68967.doc | Bin 0 -> 99328 bytes
sw/qa/extras/ww8import/ww8import.cxx | 4 ++++
sw/source/core/layout/tabfrm.cxx | 7 +++++++
3 files changed, 11 insertions(+)
create mode 100644 sw/qa/extras/ww8import/data/fdo68967.doc
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index 06f38c7..f7a39f5 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -1831,6 +1831,7 @@ void SwTabFrm::MakeAll()
}
int nUnSplitted = 5; // Just another loop control :-(
+ int nThrowAwayValidLayoutLimit = 5; // And another one :-(
SWRECTFN( this )
while ( !mbValidPos || !mbValidSize || !mbValidPrtArea )
{
@@ -2301,7 +2302,13 @@ void SwTabFrm::MakeAll()
// An existing follow flow line has to be removed.
if ( HasFollowFlowLine() )
{
+ if (!nThrowAwayValidLayoutLimit)
+ continue;
+ bool bInitialLoopEndCondition = mbValidPos && mbValidSize && mbValidPrtArea;
RemoveFollowFlowLine();
+ bool bFinalLoopEndCondition = mbValidPos && mbValidSize && mbValidPrtArea;
+ if (bInitialLoopEndCondition && !bFinalLoopEndCondition)
+ --nThrowAwayValidLayoutLimit;
}
const bool bSplitError = !Split( nDeadLine, bTryToSplit, ( bTableRowKeep && !bAllowSplitOfRow ) );
--
1.9.3

@ -1,81 +0,0 @@
From 9b3410961e52b4666a118158512e050462711fd0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 6 Nov 2014 09:56:49 +0000
Subject: [PATCH] Resolves: fdo#76581 copy-and-paste -> slideshow crash in
presenter console
crash started after...
commit 0218b0e2fa510d7acd7413dbedefd9ad50257f76
Date: Mon Jul 15 19:45:44 2013 +0300
fdo#65457 - Provide visual clues in presenter view.
Change-Id: I19d84800bd5924f2dcc9e5debcf18ef95577105c
---
sdext/source/presenter/PresenterController.cxx | 28 ++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/sdext/source/presenter/PresenterController.cxx b/sdext/source/presenter/PresenterController.cxx
index 43d60ac..6c64bd7 100644
--- a/sdext/source/presenter/PresenterController.cxx
+++ b/sdext/source/presenter/PresenterController.cxx
@@ -358,7 +358,7 @@ void PresenterController::UpdatePaneTitles (void)
sCurrentSlideName = sName;
}
}
- catch (beans::UnknownPropertyException&)
+ catch (const beans::UnknownPropertyException&)
{
}
}
@@ -585,10 +585,16 @@ bool PresenterController::HasTransition (Reference<drawing::XDrawPage>& rxPage)
if( rxPage.is() )
{
Reference<beans::XPropertySet> xSlidePropertySet (rxPage, UNO_QUERY);
- xSlidePropertySet->getPropertyValue("TransitionType") >>= aTransitionType;
- if( aTransitionType > 0 )
+ try
+ {
+ xSlidePropertySet->getPropertyValue("TransitionType") >>= aTransitionType;
+ if (aTransitionType > 0)
+ {
+ bTransition = true;
+ }
+ }
+ catch (const beans::UnknownPropertyException&)
{
- bTransition = true;
}
}
return bTransition;
@@ -597,8 +603,6 @@ bool PresenterController::HasTransition (Reference<drawing::XDrawPage>& rxPage)
bool PresenterController::HasCustomAnimation (Reference<drawing::XDrawPage>& rxPage)
{
bool bCustomAnimation = false;
- presentation::AnimationEffect aEffect = presentation::AnimationEffect_NONE;
- presentation::AnimationEffect aTextEffect = presentation::AnimationEffect_NONE;
if( rxPage.is() )
{
sal_uInt32 i, nCount = rxPage->getCount();
@@ -606,8 +610,16 @@ bool PresenterController::HasCustomAnimation (Reference<drawing::XDrawPage>& rxP
{
Reference<drawing::XShape> xShape(rxPage->getByIndex(i), UNO_QUERY);
Reference<beans::XPropertySet> xShapePropertySet(xShape, UNO_QUERY);
- xShapePropertySet->getPropertyValue("Effect") >>= aEffect;
- xShapePropertySet->getPropertyValue("TextEffect") >>= aTextEffect;
+ presentation::AnimationEffect aEffect = presentation::AnimationEffect_NONE;
+ presentation::AnimationEffect aTextEffect = presentation::AnimationEffect_NONE;
+ try
+ {
+ xShapePropertySet->getPropertyValue("Effect") >>= aEffect;
+ xShapePropertySet->getPropertyValue("TextEffect") >>= aTextEffect;
+ }
+ catch (const beans::UnknownPropertyException&)
+ {
+ }
if( aEffect != presentation::AnimationEffect_NONE ||
aTextEffect != presentation::AnimationEffect_NONE )
{
--
1.9.3

@ -1,810 +0,0 @@
From 5399853eb369457d3060190ed0f1af348004501c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 6 Jun 2014 15:13:26 +0100
Subject: [PATCH] Resolves: fdo#78151 change style on toggling bullets on
master page outliners
"do what I mean"
In master pages prior to this if we toggle bullets on and off the that changes
the *level* of the paragraph. And because the paragraph is effectively a
preview of the equivalent style level, changing the level disconnects it from
the style which is useless for us.
So instead turn the numbering off at the given outline level. In order to
toggle the numbering back split the defaults-setting into a reusable piece that
sets the numbering indent which we can call to toggle numbering back on
Also split out the broadcast style change *and explicit child* broadcast code
into a reusable method, the absence of which left me stumped for well over an
hour as to why my changes only worked on level 1
Related: fdo#78151 force outliners in master view to be read-only text
because these contain place-holder text and it doesn't make sense
to be able to edit them (unless some-day we support custom place-holder
prompts)
because they are now read-only add a pair of "show next level" and "hide
last level" features so on right clicking the last outline paragraph
you can make the next one visible, or make the last one invisible
Change-Id: Iea24d810f298156cfe2f32aa53d0515da45e08eb
(cherry picked from commit 7e600aca08ebbd69b0c8ef924c84af4dcf80df56)
Change-Id: I311c7f35f1ca7dff1d151c6141ff5faa7f15c5a2
(cherry picked from commit 8a5b3971057237b178f7e65437deec766b56f9c4)
---
.../openoffice/Office/UI/DrawImpressCommands.xcu | 10 +++
sd/inc/app.hrc | 5 +-
sd/inc/sdcommands.h | 2 +
sd/inc/stlpool.hxx | 2 +
sd/inc/stlsheet.hxx | 8 +++
sd/sdi/_drvwsh.sdi | 10 +++
sd/sdi/sdraw.sdi | 48 ++++++++++++++
sd/source/core/stlpool.cxx | 57 +++++++++++-----
sd/source/core/stlsheet.cxx | 30 ++++++++-
sd/source/ui/app/popup.src | 13 ++++
sd/source/ui/func/futempl.cxx | 21 +-----
sd/source/ui/inc/DrawViewShell.hxx | 6 ++
sd/source/ui/inc/View.hxx | 19 ++++++
sd/source/ui/view/drtxtob1.cxx | 76 ++++++++++++++++++++--
sd/source/ui/view/drviews2.cxx | 50 ++++++++++++++
sd/source/ui/view/drviews7.cxx | 66 +++++++++++++++++++
sd/source/ui/view/sdview.cxx | 30 ++++++++-
17 files changed, 408 insertions(+), 45 deletions(-)
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu
index b4b6366..31aa4d7 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu
@@ -584,6 +584,16 @@
<value xml:lang="en-US">H~yperlink...</value>
</prop>
</node>
+ <node oor:name=".uno:HideLastLevel" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Hide Last Level</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ShowNextLevel" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Show Next Level</value>
+ </prop>
+ </node>
<node oor:name=".uno:PageSetup" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~Page...</value>
diff --git a/sd/inc/app.hrc b/sd/inc/app.hrc
index ef8631f..fae13da 100644
--- a/sd/inc/app.hrc
+++ b/sd/inc/app.hrc
@@ -447,9 +447,10 @@
#define SID_ADD_MOTION_PATH (SID_SD_START+442)
#define SID_TABLE_TOOLBOX (SID_SD_START+443)
-
// free
-#define SID_PRESENTATION_MINIMIZER (SID_SD_START+450)
+#define SID_HIDE_LAST_LEVEL (SID_SD_START+448)
+#define SID_SHOW_NEXT_LEVEL (SID_SD_START+449)
+#define SID_PRESENTATION_MINIMIZER (SID_SD_START+450)
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/inc/sdcommands.h b/sd/inc/sdcommands.h
index 2041d8f..276bf6d 100644
--- a/sd/inc/sdcommands.h
+++ b/sd/inc/sdcommands.h
@@ -119,6 +119,8 @@
#define CMD_SID_INSERTPAGE_LAYOUT_MENU ".uno:TaskPaneInsertPage"
#define CMD_SID_PHOTOALBUM ".uno:PhotoAlbumDialog"
#define CMD_SID_PRESENTATION_MINIMIZER ".uno:PresentationMinimizer"
+#define CMD_SID_HIDE_LAST_LEVEL ".uno:HideLastLevel"
+#define CMD_SID_SHOW_NEXT_LEVEL ".uno:ShowNextLevel"
#endif
diff --git a/sd/inc/stlpool.hxx b/sd/inc/stlpool.hxx
index 31cb814..7af9fe9 100644
--- a/sd/inc/stlpool.hxx
+++ b/sd/inc/stlpool.hxx
@@ -42,6 +42,7 @@ class SdStyleSheet;
class SdDrawDocument;
class SdPage;
class SfxStyleSheetBase;
+class SvxNumberFormat;
typedef std::map< const SdPage*, SdStyleFamilyRef > SdStyleFamilyMap;
@@ -92,6 +93,7 @@ public:
static SdStyleSheetVector CreateChildList( SdStyleSheet* pSheet );
+ static void setDefaultOutlineNumberFormatBulletAndIndent(sal_uInt16 i, SvxNumberFormat &rNumberFormat);
public:
void throwIfDisposed() throw(::com::sun::star::uno::RuntimeException);
diff --git a/sd/inc/stlsheet.hxx b/sd/inc/stlsheet.hxx
index a64366b..d8b1183 100644
--- a/sd/inc/stlsheet.hxx
+++ b/sd/inc/stlsheet.hxx
@@ -39,6 +39,8 @@
#include <boost/scoped_ptr.hpp>
+#include "prlayout.hxx"
+
class ModifyListenerForewarder;
typedef cppu::ImplInheritanceHelper5< SfxUnoStyleSheet,
@@ -75,6 +77,12 @@ public:
static SdStyleSheet* CreateEmptyUserStyle( SfxStyleSheetBasePool& rPool, SfxStyleFamily eFamily );
+ //Broadcast that a SdStyleSheet has changed, taking into account outline sublevels
+ //which need to be explicitly broadcast as changing if their parent style was
+ //the one that changed
+ static void BroadcastSdStyleSheetChange(SfxStyleSheetBase* pStyleSheet, PresentationObjects ePO,
+ SfxStyleSheetBasePool* pSSPool);
+
// XInterface
virtual void SAL_CALL release( ) throw () SAL_OVERRIDE;
diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi
index d328cf4..f8119e9 100644
--- a/sd/sdi/_drvwsh.sdi
+++ b/sd/sdi/_drvwsh.sdi
@@ -2309,6 +2309,16 @@ interface DrawView
ExecMethod = FuTemporary ;
StateMethod = GetMenuState ;
]
+ SID_HIDE_LAST_LEVEL // ole : no, status : ?
+ [
+ ExecMethod = FuTemporary ;
+ StateMethod = GetMenuState ;
+ ]
+ SID_SHOW_NEXT_LEVEL // ole : no, status : ?
+ [
+ ExecMethod = FuTemporary ;
+ StateMethod = GetMenuState ;
+ ]
SID_TRANSLITERATE_UPPER // ole : no, status : ?
[
ExecMethod = FuSupport ;
diff --git a/sd/sdi/sdraw.sdi b/sd/sdi/sdraw.sdi
index 9a03c4f..de7f1a2 100644
--- a/sd/sdi/sdraw.sdi
+++ b/sd/sdi/sdraw.sdi
@@ -7025,3 +7025,51 @@ SfxVoidItem PresentationMinimizer SID_PRESENTATION_MINIMIZER
ToolBoxConfig = TRUE,
GroupId = GID_OPTIONS;
]
+
+SfxVoidItem HideLastLevel SID_HIDE_LAST_LEVEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+SfxVoidItem ShowNextLevel SID_SHOW_NEXT_LEVEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
diff --git a/sd/source/core/stlpool.cxx b/sd/source/core/stlpool.cxx
index 17ca4f0..2015613 100644
--- a/sd/source/core/stlpool.cxx
+++ b/sd/source/core/stlpool.cxx
@@ -1052,9 +1052,49 @@ void SdStyleSheetPool::UpdateStdNames()
}
}
-// Set new SvxNumBulletItem for the respective style sheet
+void SdStyleSheetPool::setDefaultOutlineNumberFormatBulletAndIndent(sal_uInt16 i, SvxNumberFormat &rNumberFormat)
+{
+ rNumberFormat.SetBulletChar( 0x25CF ); // StarBats: 0xF000 + 34
+ rNumberFormat.SetBulletRelSize(45);
+ const short nLSpace = (i + 1) * 1200;
+ rNumberFormat.SetLSpace(nLSpace);
+ rNumberFormat.SetAbsLSpace(nLSpace);
+ short nFirstLineOffset = -600;
+
+ switch(i)
+ {
+ case 0:
+ {
+ nFirstLineOffset = -900;
+ }
+ break;
+ case 1:
+ {
+ rNumberFormat.SetBulletChar( 0x2013 ); // StarBats: 0xF000 + 150
+ rNumberFormat.SetBulletRelSize(75);
+ nFirstLineOffset = -900;
+ }
+ break;
+ case 2:
+ {
+ nFirstLineOffset = -800;
+ }
+ break;
+
+ case 3:
+ {
+ rNumberFormat.SetBulletChar( 0x2013 ); // StarBats: 0xF000 + 150
+ rNumberFormat.SetBulletRelSize(75);
+ }
+ break;
+ }
+
+ rNumberFormat.SetFirstLineOffset(nFirstLineOffset);
+}
+
+// Set new SvxNumBulletItem for the respective style sheet
void SdStyleSheetPool::PutNumBulletItem( SfxStyleSheetBase* pSheet,
Font& rBulletFont )
{
@@ -1134,12 +1174,7 @@ void SdStyleSheetPool::PutNumBulletItem( SfxStyleSheetBase* pSheet,
SVX_MAX_NUM, false );
for( sal_uInt16 i = 0; i < aNumRule.GetLevelCount(); i++ )
{
- aNumberFormat.SetBulletChar( 0x25CF ); // StarBats: 0xF000 + 34
- aNumberFormat.SetBulletRelSize(45);
- const short nLSpace = (i + 1) * 1200;
- aNumberFormat.SetLSpace(nLSpace);
- aNumberFormat.SetAbsLSpace(nLSpace);
- short nFirstLineOffset = -600;
+ setDefaultOutlineNumberFormatBulletAndIndent(i, aNumberFormat);
sal_uLong nFontSize = 20;
switch(i)
@@ -1147,36 +1182,28 @@ void SdStyleSheetPool::PutNumBulletItem( SfxStyleSheetBase* pSheet,
case 0:
{
nFontSize = 32;
- nFirstLineOffset = -900;
}
break;
case 1:
{
- aNumberFormat.SetBulletChar( 0x2013 ); // StarBats: 0xF000 + 150
- aNumberFormat.SetBulletRelSize(75);
nFontSize = 32;
- nFirstLineOffset = -900;
}
break;
case 2:
{
nFontSize = 28;
- nFirstLineOffset = -800;
}
break;
case 3:
{
- aNumberFormat.SetBulletChar( 0x2013 ); // StarBats: 0xF000 + 150
- aNumberFormat.SetBulletRelSize(75);
nFontSize = 24;
}
break;
}
- aNumberFormat.SetFirstLineOffset(nFirstLineOffset);
nFontSize = (sal_uInt16)((nFontSize * 2540L) / 72); // Pt --> 1/100 mm
rBulletFont.SetSize(Size(0,846)); // 24 pt
aNumberFormat.SetBulletFont(&rBulletFont);
diff --git a/sd/source/core/stlsheet.cxx b/sd/source/core/stlsheet.cxx
index 5df055f..c0f34e0 100644
--- a/sd/source/core/stlsheet.cxx
+++ b/sd/source/core/stlsheet.cxx
@@ -1364,12 +1364,38 @@ Any SAL_CALL SdStyleSheet::getPropertyDefault( const OUString& aPropertyName ) t
return aRet;
}
-
-
/** this is used because our property map is not sorted yet */
const SfxItemPropertySimpleEntry* SdStyleSheet::getPropertyMapEntry( const OUString& rPropertyName ) const throw()
{
return GetStylePropertySet().getPropertyMapEntry(rPropertyName);
}
+//Broadcast that a SdStyleSheet has changed, taking into account outline sublevels
+//which need to be explicitly broadcast as changing if their parent style was
+//the one that changed
+void SdStyleSheet::BroadcastSdStyleSheetChange(SfxStyleSheetBase* pStyleSheet,
+ PresentationObjects ePO, SfxStyleSheetBasePool* pSSPool)
+{
+ SdStyleSheet* pRealSheet =((SdStyleSheet*)pStyleSheet)->GetRealStyleSheet();
+ pRealSheet->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED));
+
+ if( (ePO >= PO_OUTLINE_1) && (ePO <= PO_OUTLINE_8) )
+ {
+ OUString sStyleName(SD_RESSTR(STR_PSEUDOSHEET_OUTLINE) + " ");
+
+ for( sal_uInt16 n = (sal_uInt16)(ePO - PO_OUTLINE_1 + 2); n < 10; n++ )
+ {
+ OUString aName( sStyleName + OUString::number(n) );
+
+ SfxStyleSheetBase* pSheet = pSSPool->Find( aName, SD_STYLE_FAMILY_PSEUDO);
+
+ if(pSheet)
+ {
+ SdStyleSheet* pRealStyleSheet = ((SdStyleSheet*)pSheet)->GetRealStyleSheet();
+ pRealStyleSheet->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED));
+ }
+ }
+ }
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/app/popup.src b/sd/source/ui/app/popup.src
index 7f8692f..1fd5561 100644
--- a/sd/source/ui/app/popup.src
+++ b/sd/source/ui/app/popup.src
@@ -33,6 +33,19 @@ Menu RID_DRAW_TEXTOBJ_INSIDE_POPUP
{
ItemList =
{
+ MenuItem
+ {
+ Identifier = SID_HIDE_LAST_LEVEL;
+ Command = CMD_SID_HIDE_LAST_LEVEL;
+ Text [ en-US ] = "~Hide Last Level";
+ };
+ MenuItem
+ {
+ Identifier = SID_SHOW_NEXT_LEVEL;
+ Command = CMD_SID_SHOW_NEXT_LEVEL;
+ Text [ en-US ] = "~Show Next Level";
+ };
+ SEPARATOR
MN_SET_DEFAULT
SEPARATOR
MN_TEXTATTR
diff --git a/sd/source/ui/func/futempl.cxx b/sd/source/ui/func/futempl.cxx
index 1dd0c40..42b453c 100644
--- a/sd/source/ui/func/futempl.cxx
+++ b/sd/source/ui/func/futempl.cxx
@@ -428,27 +428,8 @@ void FuTemplate::DoExecute( SfxRequest& rReq )
}
}
- OUString sStyleName(SD_RESSTR(STR_PSEUDOSHEET_OUTLINE) + " ");
-
pStyleSheet->GetItemSet().Put(aTempSet);
- SdStyleSheet* pRealSheet =((SdStyleSheet*)pStyleSheet)->GetRealStyleSheet();
- pRealSheet->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED));
-
- if( (ePO >= PO_OUTLINE_1) && (ePO <= PO_OUTLINE_8) )
- {
- for( sal_uInt16 n = (sal_uInt16)(ePO - PO_OUTLINE_1 + 2); n < 10; n++ )
- {
- OUString aName( sStyleName + OUString::number(n) );
-
- SfxStyleSheetBase* pSheet = pSSPool->Find( aName, SD_STYLE_FAMILY_PSEUDO);
-
- if(pSheet)
- {
- SdStyleSheet* pRealStyleSheet = ((SdStyleSheet*)pSheet)->GetRealStyleSheet();
- pRealStyleSheet->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED));
- }
- }
- }
+ SdStyleSheet::BroadcastSdStyleSheetChange(pStyleSheet, ePO, pSSPool);
}
SfxItemSet& rAttr = pStyleSheet->GetItemSet();
diff --git a/sd/source/ui/inc/DrawViewShell.hxx b/sd/source/ui/inc/DrawViewShell.hxx
index 96c5c9c..996b35b 100644
--- a/sd/source/ui/inc/DrawViewShell.hxx
+++ b/sd/source/ui/inc/DrawViewShell.hxx
@@ -31,6 +31,7 @@
#include <com/sun/star/scanner/XScannerManager2.hpp>
#include <unotools/caserotate.hxx>
+class Outliner;
class SdPage;
class DrawDocShell;
class TabBar;
@@ -41,6 +42,7 @@ class TransferableClipboardListener;
class AbstractSvxNameDialog;
class SdrLayer;
class SvxClipboardFmtItem;
+struct ESelection;
namespace sd {
@@ -161,6 +163,10 @@ public:
virtual OUString GetSelectionText( bool bCompleteWords = false );
virtual bool HasSelection( bool bText = true ) const;
+ //If we are editing an PRESOBJ_OUTLINE return the Outliner and fill rSel
+ //with the current selection
+ ::Outliner* GetOutlinerForMasterPageOutlineTextObj(ESelection &rSel);
+
void ExecCtrl(SfxRequest& rReq);
void GetCtrlState(SfxItemSet& rSet);
void GetDrawAttrState(SfxItemSet& rSet);
diff --git a/sd/source/ui/inc/View.hxx b/sd/source/ui/inc/View.hxx
index cd80568..2c59ade 100644
--- a/sd/source/ui/inc/View.hxx
+++ b/sd/source/ui/inc/View.hxx
@@ -63,6 +63,24 @@ struct SdViewRedrawRec
Rectangle aRect;
};
+//For master view we want to force that master
+//textboxes have readonly text, because the
+//text is the auto-generated click-here-to-edit
+//and it doesn't help to change it
+class OutlinerMasterViewFilter
+{
+private:
+ SdrOutliner *m_pOutl;
+ bool m_bReadOnly;
+public:
+ OutlinerMasterViewFilter()
+ : m_pOutl(0)
+ , m_bReadOnly(false)
+ {
+ }
+ void Start(SdrOutliner *pOutl);
+ void End();
+};
class View : public FmFormView
{
@@ -275,6 +293,7 @@ protected:
private:
::std::auto_ptr<ViewClipboard> mpClipboard;
+ OutlinerMasterViewFilter maMasterViewFilter;
};
diff --git a/sd/source/ui/view/drtxtob1.cxx b/sd/source/ui/view/drtxtob1.cxx
index 605983c..761ed63 100644
--- a/sd/source/ui/view/drtxtob1.cxx
+++ b/sd/source/ui/view/drtxtob1.cxx
@@ -57,10 +57,14 @@
#include <editeng/cmapitem.hxx>
#include "app.hrc"
-
+#include "glob.hrc"
+#include "sdresid.hxx"
+#include "prlayout.hxx"
#include "ViewShell.hxx"
#include "drawview.hxx"
#include "drawdoc.hxx"
+#include "stlpool.hxx"
+#include "stlsheet.hxx"
#include "OutlineView.hxx"
#include "Window.hxx"
#include "futempl.hxx"
@@ -316,10 +320,74 @@ void TextObjectBar::Execute( SfxRequest &rReq )
break;
case FN_NUM_BULLET_ON:
- if( pOLV )
- pOLV->ToggleBullets();
- break;
+ {
+ if (pOLV)
+ {
+ bool bMasterPage = false;
+ SdrPageView* pPageView = mpView->GetSdrPageView();
+ if (pPageView)
+ {
+ SdPage* pPage = (SdPage*)pPageView->GetPage();
+ bMasterPage = pPage && (pPage->GetPageKind() == PK_STANDARD) && pPage->IsMasterPage();
+ }
+ if (!bMasterPage)
+ pOLV->ToggleBullets();
+ else
+ {
+ //Resolves: fdo#78151 in master pages if we toggle bullets on
+ //and off then just disable/enable the bulleting, but do not
+ //change the *level* of the paragraph, because the paragraph is
+ //effectively a preview of the equivalent style level, and
+ //changing the level disconnects it from the style
+
+ ::Outliner* pOL = pOLV->GetOutliner();
+ if (pOL)
+ {
+ const SvxNumBulletItem *pItem = NULL;
+ SfxStyleSheetBasePool* pSSPool = mpView->GetDocSh()->GetStyleSheetPool();
+ OUString sStyleName(SD_RESSTR(STR_PSEUDOSHEET_OUTLINE) + " 1");
+ SfxStyleSheetBase* pFirstStyleSheet = pSSPool->Find(sStyleName, SD_STYLE_FAMILY_PSEUDO);
+ if( pFirstStyleSheet )
+ pFirstStyleSheet->GetItemSet().GetItemState(EE_PARA_NUMBULLET, false, (const SfxPoolItem**)&pItem);
+
+ if (pItem )
+ {
+ SvxNumRule aNewRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
+ ESelection aSel = pOLV->GetSelection();
+ aSel.Adjust();
+ sal_Int32 nStartPara = aSel.nStartPara;
+ sal_Int32 nEndPara = aSel.nEndPara;
+ for (sal_Int32 nPara = nStartPara; nPara <= nEndPara; ++nPara)
+ {
+ sal_uInt16 nLevel = pOL->GetDepth(nPara);
+ SvxNumberFormat aFmt(aNewRule.GetLevel(nLevel));
+
+ if (aFmt.GetNumberingType() == SVX_NUM_NUMBER_NONE)
+ {
+ aFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
+ SdStyleSheetPool::setDefaultOutlineNumberFormatBulletAndIndent(nLevel, aFmt);
+ }
+ else
+ {
+ aFmt.SetNumberingType(SVX_NUM_NUMBER_NONE);
+ aFmt.SetLSpace(0);
+ aFmt.SetAbsLSpace(0);
+ aFmt.SetFirstLineOffset(0);
+ }
+
+ aNewRule.SetLevel(nLevel, aFmt);
+ }
+
+ pFirstStyleSheet->GetItemSet().Put(SvxNumBulletItem(aNewRule, EE_PARA_NUMBULLET));
+
+ SdStyleSheet::BroadcastSdStyleSheetChange(pFirstStyleSheet, PO_OUTLINE_1, pSSPool);
+ }
+ }
+ }
+ }
+ break;
+ }
case SID_GROW_FONT_SIZE:
case SID_SHRINK_FONT_SIZE:
{
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 384a6c7..1b56692 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -1824,6 +1824,56 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
}
break;
+ case SID_HIDE_LAST_LEVEL:
+ {
+ ESelection aSel;
+ // fdo#78151 editing a PRESOBJ_OUTLINE in a master page ?
+ ::Outliner* pOL = GetOutlinerForMasterPageOutlineTextObj(aSel);
+ if (pOL)
+ {
+ //we are on the last paragraph
+ aSel.Adjust();
+ if (aSel.nEndPara == pOL->GetParagraphCount() - 1)
+ {
+ sal_uInt16 nDepth = pOL->GetDepth(aSel.nEndPara);
+ //there exists a previous numbering level
+ if (nDepth != sal_uInt16(-1) && nDepth > 0)
+ {
+ Paragraph* pPara = pOL->GetParagraph(aSel.nEndPara);
+ pOL->Remove(pPara, 1);
+ }
+ }
+ }
+ Cancel();
+ rReq.Done ();
+ }
+ break;
+
+ case SID_SHOW_NEXT_LEVEL:
+ {
+ ESelection aSel;
+ // fdo#78151 editing a PRESOBJ_OUTLINE in a master page ?
+ ::Outliner* pOL = GetOutlinerForMasterPageOutlineTextObj(aSel);
+ if (pOL)
+ {
+ //we are on the last paragraph
+ aSel.Adjust();
+ if (aSel.nEndPara == pOL->GetParagraphCount() - 1)
+ {
+ sal_uInt16 nDepth = pOL->GetDepth(aSel.nEndPara);
+ //there exists a previous numbering level
+ if (nDepth != sal_uInt16(-1) && nDepth < 8)
+ {
+ sal_uInt16 nNewDepth = nDepth+1;
+ pOL->Insert(SD_RESSTR(STR_PRESOBJ_MPOUTLINE+nNewDepth), EE_PARA_APPEND, nNewDepth);
+ }
+ }
+ }
+ Cancel();
+ rReq.Done ();
+ }
+ break;
+
case SID_INSERT_FLD_DATE_FIX:
case SID_INSERT_FLD_DATE_VAR:
case SID_INSERT_FLD_TIME_FIX:
diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx
index 81e2e00..d57b4a6 100644
--- a/sd/source/ui/view/drviews7.cxx
+++ b/sd/source/ui/view/drviews7.cxx
@@ -212,6 +212,37 @@ void DrawViewShell::GetDrawAttrState(SfxItemSet& rSet)
rSet.Put(aSet,false);
}
+::Outliner* DrawViewShell::GetOutlinerForMasterPageOutlineTextObj(ESelection &rSel)
+{
+ if( !mpDrawView )
+ return NULL;
+
+ //when there is one object selected
+ if (!mpDrawView->AreObjectsMarked() || (mpDrawView->GetMarkedObjectList().GetMarkCount() != 1))
+ return NULL;
+
+ //and we are editing the outline object
+ if (!mpDrawView->IsTextEdit())
+ return NULL;
+
+ SdrPageView* pPageView = mpDrawView->GetSdrPageView();
+ if (!pPageView)
+ return NULL;
+
+ SdPage* pPage = (SdPage*)pPageView->GetPage();
+ //only show these in a normal master page
+ if (!pPage || (pPage->GetPageKind() != PK_STANDARD) || !pPage->IsMasterPage())
+ return NULL;
+
+ OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
+ ::Outliner* pOL = pOLV ? pOLV->GetOutliner() : NULL;
+ if (!pOL)
+ return NULL;
+ rSel = pOLV->GetSelection();
+
+ return pOL;
+}
+
void DrawViewShell::GetMenuState( SfxItemSet &rSet )
{
if (mpDrawView == NULL)
@@ -1565,6 +1596,41 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet )
if ( bDisableEditHyperlink )
rSet.DisableItem( SID_OPEN_HYPERLINK );
+ //fdo#78151 enable show next level/hide last level if editing a master page
+ //PRESOBJ_OUTLINE object and the current selection allow that to happen
+ {
+ bool bDisableShowNextLevel = true;
+ bool bDisableHideLastLevel = true;
+
+ ESelection aSel;
+ ::Outliner* pOL = GetOutlinerForMasterPageOutlineTextObj(aSel);
+ if (pOL)
+ {
+ //and are on the last paragraph
+ aSel.Adjust();
+ if (aSel.nEndPara == pOL->GetParagraphCount() - 1)
+ {
+ sal_uInt16 nDepth = pOL->GetDepth(aSel.nEndPara);
+ if (nDepth != sal_uInt16(-1))
+ {
+ //there exists another numbering level that
+ //is currently hidden
+ if (nDepth < 8)
+ bDisableShowNextLevel = false;
+ //there exists a previous numbering level
+ if (nDepth > 0)
+ bDisableHideLastLevel = false;
+ }
+ }
+ }
+
+ if (bDisableShowNextLevel)
+ rSet.DisableItem(SID_SHOW_NEXT_LEVEL);
+
+ if (bDisableHideLastLevel)
+ rSet.DisableItem(SID_HIDE_LAST_LEVEL);
+ }
+
#if defined WNT || defined UNX
if( !mxScannerManager.is() )
{
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index 53e48a5..8755f8e 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -653,12 +653,33 @@ static void SetSpellOptions( const SdDrawDocument& rDoc, sal_uLong& rCntrl )
rCntrl &= ~EE_CNTRL_ONLINESPELLING;
}
+void OutlinerMasterViewFilter::Start(SdrOutliner *pOutl)
+{
+ m_pOutl = pOutl;
+ OutlinerView* pOutlView = m_pOutl->GetView(0);
+ m_bReadOnly = pOutlView->IsReadOnly();
+ pOutlView->SetReadOnly(true);
+}
+
+void OutlinerMasterViewFilter::End()
+{
+ if (m_pOutl)
+ {
+ OutlinerView* pOutlView = m_pOutl->GetView(0);
+ pOutlView->SetReadOnly(m_bReadOnly);
+ m_pOutl = NULL;
+ }
+}
+
bool View::SdrBeginTextEdit(
SdrObject* pObj, SdrPageView* pPV, ::Window* pWin,
bool bIsNewObj,
SdrOutliner* pOutl, OutlinerView* pGivenOutlinerView,
bool bDontDeleteOutliner, bool bOnlyOneView, bool bGrabFocus )
{
+ SdrPage* pPage = pObj->GetPage();
+ bool bMasterPage = pPage && pPage->IsMasterPage();
+
GetViewShell()->GetViewShellBase().GetEventMultiplexer()->MultiplexEvent(
sd::tools::EventMultiplexerEvent::EID_BEGIN_TEXT_EDIT, (void*)pObj );
@@ -731,12 +752,17 @@ bool View::SdrBeginTextEdit(
}
}
- return(bReturn);
+ if (bMasterPage && bReturn)
+ maMasterViewFilter.Start(pOutl);
+
+ return bReturn;
}
/** ends current text editing */
-SdrEndTextEditKind View::SdrEndTextEdit(bool bDontDeleteReally )
+SdrEndTextEditKind View::SdrEndTextEdit(bool bDontDeleteReally)
{
+ maMasterViewFilter.End();
+
SdrObjectWeakRef xObj( GetTextEditObject() );
bool bDefaultTextRestored = RestoreDefaultText( dynamic_cast< SdrTextObj* >( GetTextEditObject() ) );
--
1.9.3

@ -1,96 +0,0 @@
From 8e4c1db34025dff41f4576865e49f1e9f990aa9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 18 Sep 2014 11:40:26 +0100
Subject: [PATCH] Resolves: fdo#80911 don't swap notes page width/height
IsDraw doesn't mean the app/page is Draw
it means a slide in impress.
commit 7b31e45ec7106d2cfbdbb7915d97667ba710f81c
Date: Mon Jun 23 20:55:21 2014 +0100
Make Draw use paper size when printing - fdo#63905
Previously, Draw/Impress use the default size from the printer.
Now Draw uses the paper size (specified in page formatting).
Impress still uses the old method - not sure if this is correct
but printing handouts etc probably complicate print/paper size.
suggests the intent is for this to not affect Impress and to only
affect Draw, so this does that
(cherry picked from commit f1f89f0202232635e7fbbd7ca47de51755b2bce0)
Conflicts:
sd/source/ui/view/DocumentRenderer.cxx
Change-Id: I481a824ef244fd837992c893f6de0c051af0a26b
(cherry picked from commit cca120ad92ecab741ca9683f3cf76d9e4fc81729)
Conflicts:
sd/source/ui/view/DocumentRenderer.cxx
Change-Id: I9826f69d03de85ea8d2b2c025121599877798852
---
sd/source/ui/view/DocumentRenderer.cxx | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx
index 7080e9d..8e1739c 100644
--- a/sd/source/ui/view/DocumentRenderer.cxx
+++ b/sd/source/ui/view/DocumentRenderer.cxx
@@ -1409,6 +1409,7 @@ private:
SdDrawDocument* pDocument = mrBase.GetMainViewShell()->GetDoc();
bool bIsDraw = pDocument->GetDocumentType() == DOCUMENT_TYPE_DRAW;
rInfo.meOrientation = ORIENTATION_PORTRAIT;
+ bool bDoDodgyHeightWidthFit = !bIsDraw && !mpOptions->IsNotes();
if( ! mpOptions->IsBooklet())
{
@@ -1418,9 +1420,9 @@ private:
else if (rInfo.maPageSize.Width() < rInfo.maPageSize.Height())
rInfo.meOrientation = ORIENTATION_LANDSCAPE;
- // Draw should abide by specified paper size
+ // Draw and Notes should abide by their specified paper size
Size aPaperSize;
- if (bIsDraw)
+ if (!bDoDodgyHeightWidthFit)
{
aPaperSize.setWidth(rInfo.maPageSize.Width());
aPaperSize.setHeight(rInfo.maPageSize.Height());
@@ -1431,18 +1433,19 @@ private:
aPaperSize.setHeight(rInfo.mpPrinter->GetPaperSize().Height());
}
- if( (rInfo.meOrientation == ORIENTATION_LANDSCAPE &&
- (aPaperSize.Width() < aPaperSize.Height()))
- ||
- (rInfo.meOrientation == ORIENTATION_PORTRAIT &&
- (aPaperSize.Width() > aPaperSize.Height()))
- )
- {
- maPrintSize = awt::Size(aPaperSize.Height(), aPaperSize.Width());
- }
- else
+ maPrintSize = awt::Size(aPaperSize.Width(), aPaperSize.Height());
+
+ if (bDoDodgyHeightWidthFit)
{
- maPrintSize = awt::Size(aPaperSize.Width(), aPaperSize.Height());
+ if( (rInfo.meOrientation == ORIENTATION_LANDSCAPE &&
+ (aPaperSize.Width() < aPaperSize.Height()))
+ ||
+ (rInfo.meOrientation == ORIENTATION_PORTRAIT &&
+ (aPaperSize.Width() > aPaperSize.Height()))
+ )
+ {
+ maPrintSize = awt::Size(aPaperSize.Height(), aPaperSize.Width());
+ }
}
return true;
--
1.9.3

@ -1,48 +0,0 @@
From a5793f5e0013b156600fd718d8f77870a9e73032 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 18 Jul 2014 09:06:44 +0100
Subject: [PATCH] Resolves: fdo#81487 pasting into outline view crashes impress
CreateTitleTextObject will call indirectly ImpPageChange which
triggers tools::EventMultiplexerEvent::EID_PAGE_ORDER and so
in outlview.cxx without ignore page changes level in action
the outliner is filled in from the slide contents in
FillOutliner clearing the outliner contents and filling it
fresh, but..
a) this hack tower is not prepared for all the outliner
iterators to become invalid
b) the contents of this title object is empty, because
it was just created, and we didn't get a chance to fill
in its text.
This all works for typing vs pasting because the KeyInput
uses the OutlineViewPageChangesGuard guard which sets the
ignore pages changes bit.
So, given that OutlineView::UpdateDocument expects
the iterators of the outliner to be valid during
the lifetime of the method lock the full method with
the OutlineViewPageChangesGuard guard
Change-Id: Iecbf37d54f5f0c5a181be5f27832f769a3d2e389
---
sd/source/ui/view/outlview.cxx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx
index 268a32b..a76bb0b 100644
--- a/sd/source/ui/view/outlview.cxx
+++ b/sd/source/ui/view/outlview.cxx
@@ -1535,6 +1535,8 @@ void OutlineView::EndModelChange()
/** updates all changes in the outliner model to the draw model */
void OutlineView::UpdateDocument()
{
+ OutlineViewPageChangesGuard aGuard(this);
+
const sal_uInt32 nPageCount = mrDoc.GetSdPageCount(PK_STANDARD);
Paragraph* pPara = mrOutliner.GetParagraph( 0 );
sal_uInt32 nPage;
--
1.9.3

@ -1,222 +0,0 @@
From b4840d3632e4404bee4bd192a7db916cbad3a401 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 20 Aug 2014 08:56:54 +0100
Subject: [PATCH 1/2] Resolves: fdo#86449 backport rtf fixes
empty Reference
valgrind + bff
(cherry picked from commit 0a42632a74596cbc781746931bf8f2650994b80f)
empty m_aStates
valgrind + bff
(cherry picked from commit e3247719911f4e9b61ec43ea1c9ce04bcddc4ff8)
Change-Id: Id3c039a46dec5d2d4a4642dfb53d23a76972dde2
3bd526b7ebf0f4fce5d0c7054809e0dc2908e73f
Reviewed-on: https://gerrit.libreoffice.org/12965
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
---
...7381c4a46d642c79a4b1817dc0-101375-minimized.rtf | 62 ++++++++++++++++++++++
...7381c4a46d642c79a4b1817dc0-108116-minimized.rtf | 62 ++++++++++++++++++++++
.../source/dmapper/DomainMapperTableHandler.cxx | 8 ++-
writerfilter/source/rtftok/rtfdocumentimpl.cxx | 13 ++---
4 files changed, 138 insertions(+), 7 deletions(-)
create mode 100644 writerfilter/qa/cppunittests/rtftok/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-101375-minimized.rtf
create mode 100644 writerfilter/qa/cppunittests/rtftok/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-108116-minimized.rtf
diff --git a/writerfilter/qa/cppunittests/rtftok/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-101375-minimized.rtf b/writerfilter/qa/cppunittests/rtftok/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-101375-minimized.rtf
new file mode 100644
index 0000000..c3ffebc
--- /dev/null
+++ b/writerfilter/qa/cppunittests/rtftok/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-101375-minimized.rtf
@@ -0,0 +1,62 @@
+{\rtf1\ansi\deff0\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset128 Times New Roman;}{\f4\froman\fprq2\fcharset128 Arial Narrow;}{\f5\froman\fprq0\fcharset128 Arial Narrow;}{\f6\froman\fprq2\fcharset128 Symbol;}{\f7\froman\fprq0\fcharset128 Symbol;}{\f8\froman\fprq2\fcharset128 Wingdings;}{\f9\froman\fprq0\fcharset128 Wingdings;}{\f10\froman\fprq0\fcharset128 Times New Roman;}{\f11\fnil\fprq2\fcharset0 Microsoft YaHei;}{\f12\fnil\fprq2\fcharset128 SimSun;}{\f13\fnil\fprq2\fcharset128 Times New Roman (Arabic);}{\f14\fnil\fprq0\fcharset128 Times New Roman (Arabic);}{\f15\fnil\fprq2\fcharset128 Times New Roman;}{\f16\fnil\fprq0\fcharset128 Times New Roman;}{\f17\fnil\fprq2\fcharset0 Mangal;}{\f18\fnil\fprq0\fcharset128 Mangal;}{\f19\fnil\fprq2\fcharset128 Mangal;}{\f20\fnil\fprq2\fcharset128 Cambria Math;}{\f21\fnil\fprq0\fcharset128 Cambria Math;}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red128\green128\blue128;}
+{\stylesheet{\s0\snext0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040 Predefinito;}
+{\s15\sbasedon0\snext16\sb240\sa120\keepn\hich\af11\dbch\af17\afs28\loch\f2\fs28 Intestazione;}
+{\s16\sbasedon0\snext16\sb0\sa120 Corpo testo;}
+{\s17\sbasedon16\snext17\sb0\sa120\dbch\af18 Elenco;}
+{\s18\sbasedon0\snext18\sb120\sa120\noline\i\dbch\af18\afs24\ai\fs24 Didascalia;}
+{\s19\sbasedon0\snext19\noline\dbch\af18 Indice;}
+}{\info{\creatim\yr2011\mo9\dy28\hr16\min28}{\revtim\yr2011\mo9\dy28\hr16\min29}{\printim\yr0\mo0\dy0\hr0\min0}{\comment LibreOffice}{\vern3500}}\deftab720
+
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1417\margbsxn1134\pgdscnxt0 Predefinito;}}
+\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1134\margr1134\margt1417\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1417\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx9864\pgndec\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\keepn{\scaps\b\hich\af14\langfe1040\dbch\af14\afs26\alang1025\ab\rtlch \ltrch\loch\fs26\lang1040\loch\f5
+SSSSSSS SSSSSSS curriculum vitae}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\langfe1040\dbch\af14\afs16\alang1025\rtlch \ltrch\loch\fs16\lang1040\loch\f5
+}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\keepn{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+Informazioni personali}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Nome}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSS SSSSSSS}\cell\cell\row\pard\trowd\trql\trleft-108\ltrrow\trrh876\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvert`lt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\h{phmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Indirizzo}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSS S. SSSSSSSS SSSS}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40[\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSS SSSSS SSSSSS}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Telefono}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSSSS}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\langfe1040\dbch\af14\afs22\alang1025\rtlch \ltrch\loch\fs22\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+E-mail}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSSSSSSSSSSSSSSSS}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb120\sa0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Nazionalit\'e0}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSS}\cell\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Luogo e Data di nascita}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSS SSSSSSSSSS }\cell\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par }
\ No newline at end of file
diff --git a/writerfilter/qa/cppunittests/rtftok/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-108116-minimized.rtf b/writerfilter/qa/cppunittests/rtftok/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-108116-minimized.rtf
new file mode 100644
index 0000000..9576906
--- /dev/null
+++ b/writerfilter/qa/cppunittests/rtftok/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-108116-minimized.rtf
@@ -0,0 +1,62 @@
+{\rtf1\ansi\deff0\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset128 Times New Roman;}{\f4\froman\fprq2\fcharset128 Arial Narrow;}{\f5\froman\fprq0\fcharset128 Arial Narrow;}{\f6\froman\fprq2\fcharset128 Symbol;}{\f7\froman\fprq0\fcharset128 Symbol;}{\f8\froman\fprq2\fcharset128 Wingdings;}{\f9\froman\fprq0\fcharset128 Wingdings;}{\f10\froman\fprq0\fcharset128 Times New Roman;}{\f11\fnil\fprq2\fcharset0 Microsoft YaHei;}{\f12\fnil\fprq2\fcharset128 SimSun;}{\f13\fnil\fprq2\fcharset128 Times New Roman (Arabic);}{\f14\fnil\fprq0\fcharset128 Times New Roman (Arabic);}{\f15\fnil\fprq2\fcharset128 Times New Roman;}{\f16\fnil\fprq0\fcharset128 Times New Roman;}{\f17\fnil\fprq2\fcharset0 Mangal;}{\f18\fnil\fprq0\fcharset128 Mangal;}{\f19\fnil\fprq2\fcharset128 Mangal;}{\f20\fnil\fprq2\fcharset128 Cambria Math;}{\f21\fnil\fprq0\fcharset128 Cambria Math;}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red128\green128\blue128;}
+{\stylesheet{\s0\snext0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040 Predefinito;}
+{\s15\sbasedon0\snext16\sb240\sa120\keepn\hich\af11\dbch\af17\afs28\loch\f2\fs28 Intestazione;}
+{\s16\sbasedon0\snext16\sb0\sa120 Corpo testo;}
+{\s17\sbasedon16\snext17\sb0\sa120\dbch\af18 Elenco;}
+{\s18\sbasedon0\snext18\sb120\sa120\noline\i\dbch\af18\afs24\ai\fs24 Didascalia;}
+{\s19\sbasedon0\snext19\noline\dbch\af18 Indice;}
+}{\info{\creatim\yr2011\mo9\dy28\hr16\min28}{\revtim\yr2011\mo9\dy28\hr16\min29}{\printim\yr0\mo0\dy0\hr0\min0}{\comment LibreOffice}{\vern3500}}\deftab720
+
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1417\margbsxn1134\pgdscnxt0 Predefinito;}}
+\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1134\margr1134\margt1417\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1417\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx9864\pgndec\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\keepn{\scaps\b\hich\af14\langfe1040\dbch\af14\afs26\alang1025\ab\rtlch \ltrch\loch\fs26\lang1040\loch\f5
+SSSSSSS SSSSSSS curriculum vitae}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\langfe1040\dbch\af14\afs16\alang1025\rtlch \ltrch\loch\fs16\lang1040\loch\f5
+}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\keepn{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+Informazioni personali}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Nome}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSS SSSSSSS}\cell\cell\row\pard\trowd\trql\trleft-108\ltrrow\trrh876\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Indirizzo}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSS S. SSSSSSSS SSSS}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSS SSSSS SSSSSS}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Telefono}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSSSS}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\langfe1040\dbch\af14\afs22\alang1025\rtlch \ltrch\loch\fs22\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \sp\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+E-mail}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSSSSSSSSSSSSSSSS}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb120\sa0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Nazionalit\'e0}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSS}\cell\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Luogo e Data di nascita}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSS SSSSSSSSSS }\cell\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par }
\ No newline at end of file
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index b8193c7..fdf292d 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
@@ -921,6 +921,12 @@ bool lcl_emptyRow(TableSequence_t& rTableSeq, sal_Int32 nRow)
}
RowSequence_t rRowSeq = rTableSeq[nRow];
+ if (rRowSeq.getLength() == 0)
+ {
+ SAL_WARN("writerfilter", "m_aCellProperties not in sync with m_pTableSeq?");
+ return false;
+ }
+
uno::Reference<text::XTextRangeCompare> xTextRangeCompare(rRowSeq[0][0]->getText(), uno::UNO_QUERY);
try
{
@@ -931,7 +937,7 @@ bool lcl_emptyRow(TableSequence_t& rTableSeq, sal_Int32 nRow)
if (xTextRangeCompare->compareRegionStarts(rRowSeq[nCell][0], rRowSeq[nCell][1]) != 0)
return false;
}
- catch (lang::IllegalArgumentException& e)
+ catch (const lang::IllegalArgumentException& e)
{
SAL_WARN("writerfilter", "compareRegionStarts() failed: " << e.Message);
return false;
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 31ff8b8..be56161 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -5789,12 +5789,13 @@ int RTFDocumentImpl::popState()
case DESTINATION_SHAPEPROPERTYNAME:
case DESTINATION_SHAPEPROPERTYVALUE:
case DESTINATION_SHAPEPROPERTY:
- {
- m_aStates.top().aShape = aState.aShape;
- m_aStates.top().aPicture = aState.aPicture;
- m_aStates.top().aCharacterAttributes = aState.aCharacterAttributes;
- }
- break;
+ if (!m_aStates.empty())
+ {
+ m_aStates.top().aShape = aState.aShape;
+ m_aStates.top().aPicture = aState.aPicture;
+ m_aStates.top().aCharacterAttributes = aState.aCharacterAttributes;
+ }
+ break;
case DESTINATION_FLYMAINCONTENT:
case DESTINATION_SHPPICT:
case DESTINATION_SHAPE:
--
1.9.3

@ -1,4 +1,4 @@
From 84cce94c86c3357b88017f29b84b3c19bd1ab731 Mon Sep 17 00:00:00 2001
From e91ab2104b62b689dca2c565cd81a8cb40885822 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 20 Nov 2014 15:53:14 +0000
Subject: [PATCH] Resolves: fdo#86466 Wrong background color shown in format
@ -23,21 +23,16 @@ Now format color shows the expected color, and loading the sample for
bnc#882627 and selecting cells and changing the border distance (etc) doesn't
cause bulleting and paragraph alignment properties to be stripped away
(cherry picked from commit e91ab2104b62b689dca2c565cd81a8cb40885822)
Conflicts:
svx/source/table/tablecontroller.cxx
Change-Id: Id414e09faa221d151f393971654b17bbe9f46d81
---
svx/source/table/tablecontroller.cxx | 44 ++++++++++++++++++++++++++----------
1 file changed, 32 insertions(+), 12 deletions(-)
diff --git a/svx/source/table/tablecontroller.cxx b/svx/source/table/tablecontroller.cxx
index 0b239e1..f7a5468 100644
index f5b4c99..c028a2a 100644
--- a/svx/source/table/tablecontroller.cxx
+++ b/svx/source/table/tablecontroller.cxx
@@ -858,6 +858,19 @@ void SvxTableController::onSelect( sal_uInt16 nSId )
@@ -856,6 +856,19 @@ void SvxTableController::onSelect( sal_uInt16 nSId )
}
}
@ -57,15 +52,15 @@ index 0b239e1..f7a5468 100644
void SvxTableController::onFormatTable( SfxRequest& rReq )
{
@@ -872,15 +885,11 @@ void SvxTableController::onFormatTable( SfxRequest& rReq )
@@ -870,15 +883,11 @@ void SvxTableController::onFormatTable( SfxRequest& rReq )
SfxItemSet aNewAttr( pTableObj->GetModel()->GetItemPool() );
// merge drawing layer text distance items into SvxBoxItem used by the dialog
- SvxBoxItem aBoxItem( static_cast< const SvxBoxItem& >( aNewAttr.Get( SDRATTR_TABLE_BORDER ) ) );
- aBoxItem.SetDistance( sal::static_int_cast< sal_uInt16 >( ((SdrTextLeftDistItem&)(aNewAttr.Get(SDRATTR_TEXT_LEFTDIST))).GetValue()), BOX_LINE_LEFT );
- aBoxItem.SetDistance( sal::static_int_cast< sal_uInt16 >( ((SdrTextRightDistItem&)(aNewAttr.Get(SDRATTR_TEXT_RIGHTDIST))).GetValue()), BOX_LINE_RIGHT );
- aBoxItem.SetDistance( sal::static_int_cast< sal_uInt16 >( ((SdrTextUpperDistItem&)(aNewAttr.Get(SDRATTR_TEXT_UPPERDIST))).GetValue()), BOX_LINE_TOP );
- aBoxItem.SetDistance( sal::static_int_cast< sal_uInt16 >( ((SdrTextLowerDistItem&)(aNewAttr.Get(SDRATTR_TEXT_LOWERDIST))).GetValue()), BOX_LINE_BOTTOM );
- aBoxItem.SetDistance( sal::static_int_cast< sal_uInt16 >( static_cast<const SdrMetricItem&>(aNewAttr.Get(SDRATTR_TEXT_LEFTDIST)).GetValue()), BOX_LINE_LEFT );
- aBoxItem.SetDistance( sal::static_int_cast< sal_uInt16 >( static_cast<const SdrMetricItem&>(aNewAttr.Get(SDRATTR_TEXT_RIGHTDIST)).GetValue()), BOX_LINE_RIGHT );
- aBoxItem.SetDistance( sal::static_int_cast< sal_uInt16 >( static_cast<const SdrMetricItem&>(aNewAttr.Get(SDRATTR_TEXT_UPPERDIST)).GetValue()), BOX_LINE_TOP );
- aBoxItem.SetDistance( sal::static_int_cast< sal_uInt16 >( static_cast<const SdrMetricItem&>(aNewAttr.Get(SDRATTR_TEXT_LOWERDIST)).GetValue()), BOX_LINE_BOTTOM );
+ SvxBoxItem aBoxItem(mergeDrawinglayerTextDistancesAndSvxBoxItem(aNewAttr));
SvxBoxInfoItem aBoxInfoItem( static_cast< const SvxBoxInfoItem& >( aNewAttr.Get( SDRATTR_TABLE_BORDER_INNER ) ) );
@ -75,7 +70,7 @@ index 0b239e1..f7a5468 100644
FillCommonBorderAttrFromSelectedCells( aBoxItem, aBoxInfoItem );
aNewAttr.Put( aBoxItem );
aNewAttr.Put( aBoxInfoItem );
@@ -890,8 +899,21 @@ void SvxTableController::onFormatTable( SfxRequest& rReq )
@@ -888,8 +897,21 @@ void SvxTableController::onFormatTable( SfxRequest& rReq )
// Even Cancel Button is returning positive(101) value,
if( pDlg.get() && ( pDlg->Execute() == RET_OK ) )
{
@ -88,18 +83,18 @@ index 0b239e1..f7a5468 100644
+ //ones, so if they were not changed, then forcible set them back to
+ //their originals in the new result set so we can decompose that
+ //unchanged state back to their input properties
+ if (aNewSet.GetItemState(SDRATTR_TABLE_BORDER, false) != SFX_ITEM_SET)
+ if (aNewSet.GetItemState(SDRATTR_TABLE_BORDER, false) != SfxItemState::SET)
+ {
+ aNewSet.Put(aBoxItem);
+ }
+ if (aNewSet.GetItemState(SDRATTR_TABLE_BORDER_INNER, false) != SFX_ITEM_SET)
+ if (aNewSet.GetItemState(SDRATTR_TABLE_BORDER_INNER, false) != SfxItemState::SET)
+ {
+ aNewSet.Put(aBoxInfoItem);
+ }
SvxBoxItem aNewBoxItem( static_cast< const SvxBoxItem& >( aNewSet.Get( SDRATTR_TABLE_BORDER ) ) );
@@ -912,8 +934,6 @@ void SvxTableController::onFormatTable( SfxRequest& rReq )
@@ -910,8 +932,6 @@ void SvxTableController::onFormatTable( SfxRequest& rReq )
}
}
@ -108,7 +103,7 @@ index 0b239e1..f7a5468 100644
void SvxTableController::Execute( SfxRequest& rReq )
{
const sal_uInt16 nSId = rReq.GetSlot();
@@ -2951,8 +2971,8 @@ void SvxTableController::FillCommonBorderAttrFromSelectedCells( SvxBoxItem& rBox
@@ -2949,8 +2969,8 @@ void SvxTableController::FillCommonBorderAttrFromSelectedCells( SvxBoxItem& rBox
nCellFlags |= (nCol > aEnd.mnCol) ? CELL_AFTER : 0;
const SfxItemSet& rSet = xCell->GetItemSet();
@ -120,5 +115,5 @@ index 0b239e1..f7a5468 100644
}
--
1.9.3
2.1.0

@ -1,95 +0,0 @@
From a6ddf90a2c4070d9c2355b7349db9f02b2119dc4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 7 Nov 2014 14:16:58 +0000
Subject: [PATCH] Resolves: rhbz#1161238 sync PRESOBJ_OUTLINE para depths to
outline numbering
same problem as fdo#78151, except that pre-existing documents created
before the bullet/numbering toggling UI change have PRESOBJ_OUTLINEs with
paras in them with "numbering off" but the outline level they are a
preview of still have numbering enabled.
Leave the actual numbering styles alone in this case and toggle the
PRESOBJ_OUTLINEs paras back to the level they "really" are
Change-Id: I76508f88b5003afd1740feee3ec328326117f896
---
sd/source/filter/xml/sdxmlwrp.cxx | 48 +++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/sd/source/filter/xml/sdxmlwrp.cxx b/sd/source/filter/xml/sdxmlwrp.cxx
index 411e7b1..65a52ac 100644
--- a/sd/source/filter/xml/sdxmlwrp.cxx
+++ b/sd/source/filter/xml/sdxmlwrp.cxx
@@ -26,6 +26,7 @@
#include <sfx2/docfile.hxx>
#include <sfx2/docfilt.hxx>
#include "drawdoc.hxx"
+#include "Outliner.hxx"
#include <unotools/streamwrap.hxx>
#include <svx/xmlgrhlp.hxx>
@@ -415,6 +416,51 @@ sal_Int32 ReadThroughComponent(
+//PRESOBJ_OUTLINEs in master pages are the preview of the outline styles
+//numbering format. Since fdo#78151 toggling bullets on and off changes
+//the style they are a preview of, previously toggling bullets on and off
+//would only affect the preview paragraph itself without an effect on the
+//style. i.e. previews of numbering which don't match the real numbering
+//they are supposed to be a preview of.
+//
+//But there exist documents which were saved previous to that modification
+//so here we detect such cases and fix them up to ensure the previews
+//numbering level matches that of the outline level it previews
+void fixupOutlinePlaceholderNumberingDepths(SdDrawDocument* pDoc)
+{
+ for (sal_uInt16 i = 0; i < pDoc->GetMasterSdPageCount(PK_STANDARD); ++i)
+ {
+ SdPage *pMasterPage = pDoc->GetMasterSdPage(i, PK_STANDARD);
+ SdrObject* pMasterOutline = pMasterPage->GetPresObj(PRESOBJ_OUTLINE);
+ if (!pMasterOutline)
+ continue;
+ OutlinerParaObject* pOutlParaObj = pMasterOutline->GetOutlinerParaObject();
+ if (!pOutlParaObj)
+ continue;
+ ::sd::Outliner* pOutliner = pDoc->GetInternalOutliner();
+ pOutliner->Clear();
+ pOutliner->SetText(*pOutlParaObj);
+ bool bInconsistent = false;
+ const sal_Int32 nParaCount = pOutliner->GetParagraphCount();
+ for (sal_Int32 j = 0; j < nParaCount; ++j)
+ {
+ const sal_Int16 nExpectedDepth = j;
+ if (nExpectedDepth != pOutliner->GetDepth(j))
+ {
+ Paragraph* p = pOutliner->GetParagraph(j);
+ pOutliner->SetDepth(p, nExpectedDepth);
+ bInconsistent = true;
+ }
+ }
+ if (bInconsistent)
+ {
+ SAL_WARN("sd.filter", "Fixing inconsistent outline numbering placeholder preview depth");
+ pMasterOutline->SetOutlinerParaObject(pOutliner->CreateParaObject(0, nParaCount));
+ }
+ pOutliner->Clear();
+ }
+}
+
bool SdXMLFilter::Import( ErrCode& nError )
{
sal_uInt32 nRet = 0;
@@ -779,6 +825,8 @@ bool SdXMLFilter::Import( ErrCode& nError )
}
}
+ fixupOutlinePlaceholderNumberingDepths(pDoc);
+
pDoc->EnableUndo(true);
mrDocShell.ClearUndoBuffer();
return nRet == 0;
--
1.9.3

@ -20,7 +20,7 @@ index 26f1c6a..2861dfe 100644
@@ -32,6 +32,7 @@ Keywords=Data;SQL;
InitialPreference=5
StartupWMClass=libreoffice-base
X-KDE-Protocols=file,http,smb,ftp,webdav
X-KDE-Protocols=file,http,ftp,webdav
+X-TryExec=oobase
Actions=NewDocument;
@ -32,7 +32,7 @@ index fc5e241..c50f380 100644
@@ -32,6 +32,7 @@ Keywords=Accounting;Stats;OpenDocument Spreadsheet;Chart;Microsoft Excel;Microso
InitialPreference=5
StartupWMClass=libreoffice-calc
X-KDE-Protocols=file,http,smb,ftp,webdav
X-KDE-Protocols=file,http,ftp,webdav
+X-TryExec=oocalc
Actions=NewDocument;
@ -44,7 +44,7 @@ index b5d58ce..274275f 100644
@@ -32,6 +32,7 @@ Keywords=Vector;Schema;Diagram;Layout;OpenDocument Graphics;Microsoft Publisher;
InitialPreference=5
StartupWMClass=libreoffice-draw
X-KDE-Protocols=file,http,smb,ftp,webdav
X-KDE-Protocols=file,http,ftp,webdav
+X-TryExec=oodraw
Actions=NewDocument;
@ -56,7 +56,7 @@ index c1f6231..7e70bfb 100644
@@ -32,6 +32,7 @@ Keywords=Slideshow;Slides;OpenDocument Presentation;Microsoft PowerPoint;Microso
InitialPreference=5
StartupWMClass=libreoffice-impress
X-KDE-Protocols=file,http,smb,ftp,webdav
X-KDE-Protocols=file,http,ftp,webdav
+X-TryExec=ooimpress
Actions=NewDocument;
@ -68,7 +68,7 @@ index b6981f5..4d7bd3c 100644
@@ -33,6 +33,7 @@ Keywords=Equation;OpenDocument Formula;Formula;odf;MathML;
InitialPreference=5
StartupWMClass=libreoffice-math
X-KDE-Protocols=file,http,smb,ftp,webdav
X-KDE-Protocols=file,http,ftp,webdav
+X-TryExec=oomath
Actions=NewDocument;
@ -80,7 +80,7 @@ index c4cea12..6d943a9 100644
@@ -32,6 +32,7 @@ Keywords=Text;Letter;Fax;Document;OpenDocument Text;Microsoft Word;Microsoft Wor
InitialPreference=5
StartupWMClass=libreoffice-writer
X-KDE-Protocols=file,http,smb,ftp,webdav
X-KDE-Protocols=file,http,ftp,webdav
+X-TryExec=oowriter
Actions=NewDocument;

@ -1,154 +0,0 @@
From f24c60870531689d95c056037e48cd29ad1d17bb Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Mon, 20 Oct 2014 14:21:22 +0200
Subject: [PATCH] allow to build with system opencollada
Change-Id: I6101099c57d429987e06bca0652c843f4a94f8cc
---
Makefile.fetch | 2 +-
RepositoryExternal.mk | 16 ++++++++++++++++
config_host.mk.in | 4 +++-
configure.ac | 35 +++++++++++++++++++++++++++++++++++
external/Module_external.mk | 2 +-
5 files changed, 56 insertions(+), 3 deletions(-)
diff --git a/Makefile.fetch b/Makefile.fetch
index e8ccf5b..18b12be 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -184,7 +184,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR)
$(call fetch_Optional,NSS,NSS_TARBALL) \
$(call fetch_Optional_pack,NUMBERTEXT_EXTENSION_PACK) \
$(call fetch_Optional,ODFGEN,ODFGEN_TARBALL) \
- $(call fetch_Optional,COLLADA2GLTF,OPENCOLLADA_TARBALL) \
+ $(call fetch_Optional,OPENCOLLADA,OPENCOLLADA_TARBALL) \
$(call fetch_Optional,OPENLDAP,OPENLDAP_TARBALL) \
$(call fetch_Optional,OPENSSL,OPENSSL_TARBALL) \
$(call fetch_Optional,ORCUS,ORCUS_TARBALL) \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 5277aea..911dab1 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -3371,6 +3371,20 @@ endif # SYSTEN_LIBGLTF
ifeq ($(ENABLE_COLLADA),TRUE)
+ifeq ($(SYSTEM_OPENCOLLADA),TRUE)
+
+define gb_LinkTarget__use_opencollada_parser
+$(call gb_LinkTarget_set_include,$(1),\
+ $$(INCLUDE) \
+ $(OPENCOLLADA_CFLAGS) \
+)
+
+$(call gb_LinkTarget_add_libs,$(1),$(OPENCOLLADA_LIBS))
+
+endef
+
+else # !SYSTEM_OPENCOLLADA
+
define gb_LinkTarget__use_opencollada_parser
$(call gb_LinkTarget_set_include,$(1),\
-I$(call gb_UnpackedTarball_get_dir,opencollada)/COLLADABaseUtils/include \
@@ -3385,6 +3399,8 @@ $(call gb_LinkTarget_use_static_libraries,$(1),\
)
endef
+endif # SYSTEM_OPENCOLLADA
+
define gb_LinkTarget__use_collada2gltf
$(call gb_LinkTarget_set_include,$(1),\
-I$(call gb_UnpackedTarball_get_dir,collada2gltf) \
diff --git a/config_host.mk.in b/config_host.mk.in
index 0fefbb0..738c80c 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -431,6 +431,8 @@ export OOOP_SAMPLES_PACK=@OOOP_SAMPLES_PACK@
export OOO_JUNIT_JAR=@OOO_JUNIT_JAR@
export OOO_VENDOR=@OOO_VENDOR@
+export OPENCOLLADA_CFLAGS=$(gb_SPACE)@OPENCOLLADA_CFLAGS@
+export OPENCOLLADA_LIBS=$(gb_SPACE)@OPENCOLLADA_LIBS@
export OPENSSL_CFLAGS=$(gb_SPACE)@OPENSSL_CFLAGS@
export OPENSSL_LIBS=$(gb_SPACE)@OPENSSL_LIBS@
export ORCUS_CFLAGS=$(gb_SPACE)@ORCUS_CFLAGS@
export ORCUS_LIBS=$(gb_SPACE)@ORCUS_LIBS@
@@ -558,4 +559,5 @@ export SYSTEM_NPAPI_HEADERS=@SYSTEM_NPAPI_HEADERS@
export SYSTEM_ODBC_HEADERS=@SYSTEM_ODBC_HEADERS@
export SYSTEM_ODFGEN=@SYSTEM_ODFGEN@
+export SYSTEM_OPENCOLLADA=@SYSTEM_OPENCOLLADA@
export SYSTEM_OPENLDAP=@SYSTEM_OPENLDAP@
export SYSTEM_OPENSSL=@SYSTEM_OPENSSL@
diff --git a/configure.ac b/configure.ac
index 17feb1a..5d2198b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1641,6 +1641,11 @@ AC_ARG_WITH(system-ucpp,
[Use ucpp already on system.]),,
[])
+AC_ARG_WITH(system-opencollada,
+ AS_HELP_STRING([--with-system-opencollada],
+ [Use openCOLLADA already on system.]),,
+ [with_system_opencollada=no])
+
AC_ARG_WITH(system-openldap,
AS_HELP_STRING([--with-system-openldap],
[Use the OpenLDAP LDAP SDK already on system.]),,
@@ -10342,11 +10347,41 @@ if test "$enable_collada" != "no" -a "$ENABLE_GLTF" = "TRUE"; then
AC_MSG_RESULT([yes])
ENABLE_COLLADA=TRUE
AC_DEFINE(HAVE_FEATURE_COLLADA,1)
+ AC_MSG_CHECKING([which OPENCOLLADA to use])
+ if test "$with_system_opencollada" = "yes"; then
+ AC_MSG_RESULT([external])
+ SYSTEM_OPENCOLLADA=TRUE
+ AS_IF([test -n "$OPENCOLLADA_CFLAGS"],[],[AC_MSG_ERROR([export OPENCOLLADA_CFLAGS])])
+ AS_IF([test -n "$OPENCOLLADA_LIBS"],[],[AC_MSG_ERROR([export OPENCOLLADA_LIBS])])
+ AC_LANG_PUSH([C++])
+ save_CXXFLAGS=$CXXFLAGS
+ save_CPPFLAGS=$CPPFLAGS
+ CXXFLAGS="$CXXFLAGS $OPENCOLLADA_CFLAGS"
+ CPPFLAGS="$CPPFLAGS $OPENCOLLADA_CFLAGS"
+ AC_CHECK_HEADERS(
+ COLLADABU.h \
+ COLLADAFW.h \
+ COLLADASaxFWLLoader.h \
+ GeneratedSaxParser.h,
+ [],
+ [AC_MSG_ERROR([openCOLLADA headers not found. Install openCOLLADA])],
+ [])
+ CXXFLAGS=$save_CXXFLAGS
+ CPPFLAGS=$save_CPPFLAGS
+ AC_LANG_POP([C++])
+ OPENCOLLADA_CFLAGS=$(printf '%s' "$OPENCOLLADA_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
+ else
+ AC_MSG_RESULT([internal])
+ BUILD_TYPE="$BUILD_TYPE OPENCOLLADA"
+ fi
BUILD_TYPE="$BUILD_TYPE COLLADA2GLTF"
else
AC_MSG_RESULT([no])
fi
AC_SUBST(ENABLE_COLLADA)
+AC_SUBST([OPENCOLLADA_CFLAGS])
+AC_SUBST([OPENCOLLADA_LIBS])
+AC_SUBST([SYSTEM_OPENCOLLADA])
# pdf import?
AC_MSG_CHECKING([whether to build the PDF import feature])
diff --git a/external/Module_external.mk b/external/Module_external.mk
index c95ea20..688e335 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -75,7 +75,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
$(call gb_Helper_optional,NEON,neon) \
$(call gb_Helper_optional,NSS,nss) \
$(call gb_Helper_optional,ODFGEN,libodfgen) \
- $(call gb_Helper_optional,COLLADA2GLTF,opencollada) \
+ $(call gb_Helper_optional,OPENCOLLADA,opencollada) \
$(call gb_Helper_optional,OPENLDAP,openldap) \
$(call gb_Helper_optional,OPENSSL,openssl) \
$(call gb_Helper_optional,ORCUS,liborcus) \
--
1.9.3

@ -1,96 +0,0 @@
From 86c6f18c2766aad43d6e3bfcf3530e40440ebca7 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Tue, 8 Jul 2014 17:01:27 +0200
Subject: [PATCH] avoid problems detecting HTML files with .xls ext.
Change-Id: I9955223aac20f3f640fde51bb7231666c269ca70
---
filter/Configuration_filter.mk | 1 +
filter/source/config/fragments/types/calc_HTML.xcu | 35 ++++++++++++++++++++++
filter/source/textfilterdetect/filterdetect.cxx | 6 ++--
3 files changed, 38 insertions(+), 4 deletions(-)
create mode 100644 filter/source/config/fragments/types/calc_HTML.xcu
diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk
index e035464..0465f17 100644
--- a/filter/Configuration_filter.mk
+++ b/filter/Configuration_filter.mk
@@ -512,6 +512,7 @@ $(call filter_Configuration_add_ui_filters,fcfg_langpack,filter/source/config/fr
$(call filter_Configuration_add_types,fcfg_langpack,fcfg_calc_types.xcu,filter/source/config/fragments/types,\
calc_DIF \
calc_ODS_FlatXML \
+ calc_HTML \
generic_HTML \
generic_Text \
calc_Lotus \
diff --git a/filter/source/config/fragments/types/calc_HTML.xcu b/filter/source/config/fragments/types/calc_HTML.xcu
new file mode 100644
index 0000000..51bf8f1
--- /dev/null
+++ b/filter/source/config/fragments/types/calc_HTML.xcu
@@ -0,0 +1,35 @@
+<!--
+ * 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 .
+-->
+ <!-- A special case: There are tools that export HTML with .xls
+ extension. Allow to detect these early to avoid going through the
+ whole list of detectors. This also avoids the risk of misdetection
+ as something else, as there are some formats that are text files and
+ the detection is just a heuristic (e.g., wp1 or wp42 supported by
+ libwpd). -->
+ <node oor:name="calc_HTML" oor:op="replace" >
+ <prop oor:name="DetectService"><value>com.sun.star.comp.filters.PlainTextFilterDetect</value></prop>
+ <prop oor:name="URLPattern"/>
+ <prop oor:name="Extensions"><value>xls</value></prop>
+ <prop oor:name="MediaType"><value>text/html</value></prop>
+ <prop oor:name="Preferred"><value>false</value></prop>
+ <prop oor:name="PreferredFilter"/>
+ <prop oor:name="UIName">
+ <value>HTML Table</value>
+ </prop>
+ <prop oor:name="ClipboardFormat"/>
+ </node>
diff --git a/filter/source/textfilterdetect/filterdetect.cxx b/filter/source/textfilterdetect/filterdetect.cxx
index ffad7fa..1d29dd4 100644
--- a/filter/source/textfilterdetect/filterdetect.cxx
+++ b/filter/source/textfilterdetect/filterdetect.cxx
@@ -132,7 +132,7 @@ OUString SAL_CALL PlainTextFilterDetect::detect(uno::Sequence<beans::PropertyVal
OUString aExt = aParser.getExtension(INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET);
aExt = aExt.toAsciiLowerCase();
- if (aType == "generic_HTML")
+ if ((aType == "generic_HTML") || (aType == "calc_HTML"))
{
uno::Reference<io::XInputStream> xInStream(aMediaDesc[MediaDescriptor::PROP_INPUTSTREAM()], uno::UNO_QUERY);
if (!xInStream.is() || !IsHTMLStream(xInStream))
@@ -141,12 +141,10 @@ OUString SAL_CALL PlainTextFilterDetect::detect(uno::Sequence<beans::PropertyVal
// Decide which filter to use based on the document service first,
// then on extension if that's not available.
- if (aDocService == CALC_DOCSERVICE)
+ if ((aDocService == CALC_DOCSERVICE) || (aType == "calc_HTML"))
aMediaDesc[MediaDescriptor::PROP_FILTERNAME()] <<= OUString(CALC_HTML_FILTER);
else if (aDocService == WRITER_DOCSERVICE)
aMediaDesc[MediaDescriptor::PROP_FILTERNAME()] <<= OUString(WRITER_HTML_FILTER);
- else if (aExt == "xls")
- aMediaDesc[MediaDescriptor::PROP_FILTERNAME()] <<= OUString(CALC_HTML_FILTER);
else
aMediaDesc[MediaDescriptor::PROP_FILTERNAME()] <<= OUString(WEB_HTML_FILTER);
}
--
1.9.3

File diff suppressed because it is too large Load Diff

@ -1,41 +0,0 @@
From 93c47f3f0310135c5d6216de9b4d25fd7c06e7dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 18 Sep 2014 11:32:39 +0100
Subject: [PATCH] default n-up printing of notes to sensible 2 x 1 not 1 x 2
i.e. throw away the maFirstPageSize cache based on the initial slide view which
is typically in landscape mode
So that if we change to notes which are usually in portrait mode, and then
visit n-up print, we get a default layout based on the notes orientation and
not the slides orientation.
I hate printing
Change-Id: I8b7b81ce1eec0f9c5ecd7509b311cf4026958c2c
---
vcl/source/window/printdlg.cxx | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index cf9642e..d9ebf7c 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -1787,6 +1787,14 @@ IMPL_LINK( PrintDialog, UIOption_SelectHdl, ListBox*, i_pBox )
sal_Int32 nVal( i_pBox->GetSelectEntryPos() );
pVal->Value <<= nVal;
+ //If we are in impress we start in print slides mode and get a
+ //maFirstPageSize for slides which are usually landscape mode, if we
+ //change to notes which are usually in portrait mode, and then visit
+ //n-up print, we will assume notes are in landscape unless we throw
+ //away maFirstPageSize when we change page content type
+ if (pVal->Name == "PageContentType")
+ maFirstPageSize = Size();
+
checkOptionalControlDependencies();
// update preview and page settings
--
1.9.3

@ -1,71 +0,0 @@
From cb6511354b500d1b1bd8ff140fdf0ea106b174d4 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Wed, 3 Sep 2014 16:20:40 +0200
Subject: [PATCH] drop useless test for ant-apache-regexp
It has not been needed since commit
1de48c417404464ca1e34e5c5d1c82a9342349bb 4 years ago.
Change-Id: I53ceb5d8d6c02c7a13c86cdd884e4fc378a2c492
---
configure.ac | 44 --------------------------------------------
1 file changed, 44 deletions(-)
diff --git a/configure.ac b/configure.ac
index f65ab66..897cb1e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12311,50 +12311,6 @@ EOF
AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
fi
- if test "$ENABLE_MEDIAWIKI" = "TRUE"; then
- AC_MSG_CHECKING([whether Ant supports mapper type="regexp"])
- rm -rf confdir
- mkdir confdir
- cat > conftest.java << EOF
- public class conftest {
- int testmethod(int a, int b) {
- return a + b;
- }
- }
-EOF
-
- cat > conftest.xml << EOF
- <project name="conftest" default="conftest">
- <target name="conftest" depends="copytest">
- <javac srcdir="." includes="conftest.java">
- </javac>
- </target>
- <target name="copytest">
- <copy todir="confdir">
- <fileset dir="confdir" includes="**/*.abc" casesensitive="yes"/>
- <filterset/>
- <mapper type="regexp" from="^(.*[/\\])foo([/\\].*)" to="\1baa\2"/>
- </copy>
- </target>
- </project>
-EOF
-
- if test "$JAVACISGCJ" = "yes"; then
- JAVA_HOME=; export JAVA_HOME
- ant_gcj="-Dbuild.compiler=gcj"
- fi
- AC_TRY_COMMAND("$ANT" $ant_gcj -buildfile conftest.xml 1>&2)
- if test $? = 0 -a -f ./conftest.class; then
- AC_MSG_RESULT([yes])
- rm -rf confdir
- else
- echo "configure: Ant test failed" >&5
- cat conftest.java >&5
- cat conftest.xml >&5
- rm -rf confdir
- AC_MSG_ERROR([no. Did you install ant-apache-regexp?])
- fi
- fi
rm -f conftest* core core.* *.core
fi
--
1.9.3

@ -1,225 +0,0 @@
From 9bfd1aced3da2aab9df3fc6f93543a5b6b1075b6 Mon Sep 17 00:00:00 2001
From: Hideki Ikeda <hideki.ikeda@gmail.com>
Date: Thu, 17 Jul 2014 16:46:16 -0400
Subject: [PATCH] fdo#60712 - Inherits cell styles in inserting rows/columns
Add the code to copy cell styles from the caret row/column
to new rows/columns. The span is also copiedl.
Change-Id: I39596a33141ed2159ea2d09e422892cbd68cd81a
Reviewed-on: https://gerrit.libreoffice.org/10373
Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
Tested-by: Kohei Yoshida <libreoffice@kohei.us>
---
svx/source/table/cell.cxx | 20 +++++
svx/source/table/cell.hxx | 2 +
svx/source/table/tablecontroller.cxx | 142 +++++++++++++++++++++++++++++++++++
3 files changed, 164 insertions(+)
diff --git a/svx/source/table/cell.cxx b/svx/source/table/cell.cxx
index ce7a6a9..5fd38f9 100644
--- a/svx/source/table/cell.cxx
+++ b/svx/source/table/cell.cxx
@@ -525,6 +525,26 @@ void Cell::setMerged()
+void Cell::copyFormatFrom( const CellRef& xSourceCell )
+{
+ if( xSourceCell.is() && mpProperties )
+ {
+ mpProperties->SetMergedItemSet( xSourceCell->GetObjectItemSet() );
+
+ SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
+ SdrTableObj& rSourceTableObj = dynamic_cast< SdrTableObj& >( xSourceCell->GetObject() );
+
+ if(rSourceTableObj.GetModel() != rTableObj.GetModel())
+ {
+ SetStyleSheet( 0, true );
+ }
+
+ notifyModified();
+ }
+}
+
+
+
void Cell::notifyModified()
{
if( mxTable.is() )
diff --git a/svx/source/table/cell.hxx b/svx/source/table/cell.hxx
index 65fdcd0..66cc5a7 100644
--- a/svx/source/table/cell.hxx
+++ b/svx/source/table/cell.hxx
@@ -102,6 +102,8 @@ public:
SVX_DLLPRIVATE void setMerged();
+ SVX_DLLPRIVATE void copyFormatFrom( const CellRef& xSourceCell );
+
// XInterface
SVX_DLLPRIVATE virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& Type ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
SVX_DLLPRIVATE virtual void SAL_CALL acquire() throw () SAL_OVERRIDE;
diff --git a/svx/source/table/tablecontroller.cxx b/svx/source/table/tablecontroller.cxx
index 514505c..c310cb2 100644
--- a/svx/source/table/tablecontroller.cxx
+++ b/svx/source/table/tablecontroller.cxx
@@ -564,6 +564,77 @@ void SvxTableController::onInsert( sal_uInt16 nSId, const SfxItemSet* pArgs )
getPropertyValue( sSize ) );
}
+ // Copy cell properties
+ sal_Int32 nPropSrcCol = (bInsertAfter ? aEnd.mnCol : aStart.mnCol + nNewColumns);
+ sal_Int32 nRowSpan = 0;
+ bool bNewSpan = false;
+
+ for( sal_Int32 nRow = 0; nRow < mxTable->getRowCount(); ++nRow )
+ {
+ CellRef xSourceCell( dynamic_cast< Cell* >( mxTable->getCellByPosition( nPropSrcCol, nRow ).get() ) );
+
+ // When we insert new COLUMNs, we want to copy ROW spans.
+ if( nRowSpan == 0 )
+ {
+ // we are not in a span yet. Let's find out if the current cell is in a span.
+ sal_Int32 nColSpan;
+ sal_Int32 nSpanInfoCol;
+
+ if( xSourceCell->getRowSpan() > 1 )
+ {
+ // The current cell is the top-left cell in a span.
+ // Get the span info and propagate it to the target.
+ nRowSpan = xSourceCell->getRowSpan();
+ nColSpan = xSourceCell->getColumnSpan();
+ nSpanInfoCol = nPropSrcCol;
+ }
+ else if( xSourceCell->isMerged() )
+ {
+ // The current cell is a middle cell in a 2D span.
+ // Look for the top-left cell in the span.
+ for( nSpanInfoCol = nPropSrcCol - 1; nSpanInfoCol >= 0; --nSpanInfoCol )
+ {
+ CellRef xMergeInfoCell( dynamic_cast< Cell* >( mxTable->getCellByPosition( nSpanInfoCol, nRow ).get() ) );
+ if( !xMergeInfoCell->isMerged() )
+ {
+ nRowSpan = xMergeInfoCell->getRowSpan();
+ nColSpan = xMergeInfoCell->getColumnSpan();
+ break;
+ }
+ }
+ if( nRowSpan == 1 )
+ nRowSpan = 0;
+ }
+
+ // The target colomns are outside the span; Start a new span.
+ if( nRowSpan > 0 && ( nNewStartColumn < nSpanInfoCol || nSpanInfoCol + nColSpan <= nNewStartColumn ) )
+ bNewSpan = true;
+ }
+
+ // Now copy the properties from the source to the targets
+ for( sal_Int32 nOffset = 0; nOffset < nNewColumns; nOffset++ )
+ {
+ CellRef xTargetCell( dynamic_cast< Cell* >( mxTable->getCellByPosition( nNewStartColumn + nOffset, nRow ).get() ) );
+ if( xTargetCell.is() )
+ {
+ if( nRowSpan > 0 )
+ {
+ if( bNewSpan )
+ xTargetCell->merge( 1, nRowSpan );
+ else
+ xTargetCell->setMerged();
+ }
+ xTargetCell->copyFormatFrom( xSourceCell );
+ }
+ }
+
+ if( nRowSpan > 0 )
+ {
+ --nRowSpan;
+ bNewSpan = false;
+ }
+ }
+
if( bUndo )
mpModel->EndUndo();
@@ -597,6 +668,77 @@ void SvxTableController::onInsert( sal_uInt16 nSId, const SfxItemSet* pArgs )
getPropertyValue( sSize ) );
}
+ // Copy the cell properties
+ sal_Int32 nPropSrcRow = (bInsertAfter ? aEnd.mnRow : aStart.mnRow + nNewRows);
+ sal_Int32 nColSpan = 0;
+ bool bNewSpan = false;
+
+ for( sal_Int32 nCol = 0; nCol < mxTable->getColumnCount(); ++nCol )
+ {
+ CellRef xSourceCell( dynamic_cast< Cell* >( mxTable->getCellByPosition( nCol, nPropSrcRow ).get() ) );
+
+ // When we insert new ROWs, we want to copy COLUMN spans.
+ if( nColSpan == 0 )
+ {
+ // we are not in a span yet. Let's find out if the current cell is in a span.
+ sal_Int32 nRowSpan;
+ sal_Int32 nSpanInfoRow;
+
+ if( xSourceCell->getColumnSpan() > 1 )
+ {
+ // The current cell is the top-left cell in a span.
+ // Get the span info and propagate it to the target.
+ nColSpan = xSourceCell->getColumnSpan();
+ nRowSpan = xSourceCell->getRowSpan();
+ nSpanInfoRow = nPropSrcRow;
+ }
+ else if( xSourceCell->isMerged() )
+ {
+ // The current cell is a middle cell in a 2D span.
+ // Look for the top-left cell in the span.
+ for( nSpanInfoRow = nPropSrcRow - 1; nSpanInfoRow >= 0; --nSpanInfoRow )
+ {
+ CellRef xMergeInfoCell( dynamic_cast< Cell* >( mxTable->getCellByPosition( nCol, nSpanInfoRow ).get() ) );
+ if( !xMergeInfoCell->isMerged() )
+ {
+ nColSpan = xMergeInfoCell->getColumnSpan();
+ nRowSpan = xMergeInfoCell->getRowSpan();
+ break;
+ }
+ }
+ if( nColSpan == 1 )
+ nColSpan = 0;
+ }
+
+ // Inserted rows are outside the span; Start a new span.
+ if( nColSpan > 0 && ( nNewRowStart < nSpanInfoRow || nSpanInfoRow + nRowSpan <= nNewRowStart ) )
+ bNewSpan = true;
+ }
+
+ // Now copy the properties from the source to the targets
+ for( sal_Int32 nOffset = 0; nOffset < nNewRows; ++nOffset )
+ {
+ CellRef xTargetCell( dynamic_cast< Cell* >( mxTable->getCellByPosition( nCol, nNewRowStart + nOffset ).get() ) );
+ if( xTargetCell.is() )
+ {
+ if( nColSpan > 0 )
+ {
+ if( bNewSpan )
+ xTargetCell->merge( nColSpan, 1 );
+ else
+ xTargetCell->setMerged();
+ }
+ xTargetCell->copyFormatFrom( xSourceCell );
+ }
+ }
+
+ if( nColSpan > 0 )
+ {
+ --nColSpan;
+ bNewSpan = false;
+ }
+ }
+
if( bUndo )
mpModel->EndUndo();
--
1.9.3

@ -1,78 +0,0 @@
From caa08b214542fdf1bed3912b9c4fac36e5d87eb2 Mon Sep 17 00:00:00 2001
From: Jennifer Liebel <jliebel94@gmail.com>
Date: Tue, 2 Sep 2014 12:40:20 +0000
Subject: [PATCH] fdo#82496: Change picture option by rightclicking
Change-Id: I31fb1a1f89030610a9d11b9236e8cde22dbc0ca5
---
sw/sdi/_grfsh.sdi | 12 ++++++++++++
sw/source/ui/app/mn.src | 1 +
sw/source/uibase/shells/grfsh.cxx | 3 +--
3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/sw/sdi/_grfsh.sdi b/sw/sdi/_grfsh.sdi
index 15c00cc..2eb2ab2 100644
--- a/sw/sdi/_grfsh.sdi
+++ b/sw/sdi/_grfsh.sdi
@@ -62,6 +62,13 @@ interface BaseTextGraphic
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ SID_CHANGE_PICTURE
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetAttrState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
SID_EXTERNAL_EDIT
[
ExecMethod = Execute ;
@@ -224,6 +231,11 @@ interface BaseTextGraphic
StateMethod = GetAttrState ;
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ SID_CHANGE_PICTURE
+ [
+ ExecMethod = FuTemporary ;
+ StateMethod = GetMenuState ;
+ ]
SID_GRFFILTER_SOLARIZE // status(final|play|rec)
[
ExecMethod = ExecAttr ;
diff --git a/sw/source/ui/app/mn.src b/sw/source/ui/app/mn.src
index f62c8da..79b797d 100644
--- a/sw/source/ui/app/mn.src
+++ b/sw/source/ui/app/mn.src
@@ -1239,6 +1239,7 @@ Menu MN_GRF_POPUPMENU
MN_FRM_CAPTION_ITEM
SEPARATOR;
MenuItem { ITEM_SAVE_GRAPHIC };
+ MenuItem { ITEM_CHANGE_PICTURE };
MenuItem { ITEM_COMPRESS_GRAPHIC };
MenuItem { ITEM_EXTERNAL_EDIT };
diff --git a/sw/source/uibase/shells/grfsh.cxx b/sw/source/uibase/shells/grfsh.cxx
index d5ecec5..0e13b38 100644
--- a/sw/source/core/uibase/shells/grfsh.cxx
+++ b/sw/source/core/uibase/shells/grfsh.cxx
@@ -178,7 +178,6 @@ void SwGrfShell::Execute(SfxRequest &rReq)
}
}
break;
-
case SID_EXTERNAL_EDIT:
{
// When the graphic is selected to be opened via some external tool
@@ -191,7 +190,7 @@ void SwGrfShell::Execute(SfxRequest &rReq)
}
}
break;
-
+ case SID_CHANGE_PICTURE:
case SID_INSERT_GRAPHIC:
{
// #i123922# implement slot independent from the two below to
--
1.9.3

@ -1,36 +0,0 @@
From 0bab8aee77cfc2ffdbc6d3ef6a869284bc12dff4 Mon Sep 17 00:00:00 2001
From: Muthu Subramanian <muthu.subramanian.karunanidhi@ericsson.com>
Date: Thu, 23 Oct 2014 20:30:26 +0530
Subject: [PATCH] fdo#85247: copy and paste of a slide results in a blue slide
in presentation mode.
Seems like "Default" is handled specially or probably
the copy-buffer is broken
This now checks for slide 'type' as well, before cosidering it a duplicate
Change-Id: If8c472bcefb54cee72e7411f92a76b4e2db2b6ce
---
sd/source/core/drawdoc3.cxx | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx
index e379ed0..d3e92f9 100644
--- a/sd/source/core/drawdoc3.cxx
+++ b/sd/source/core/drawdoc3.cxx
@@ -106,9 +106,11 @@ void InsertBookmarkAsPage_FindDuplicateLayouts::operator()( SdDrawDocument& rDoc
OUString aTest(aFullTest);
- if (aTest == aLayout)
+ if (aTest == aLayout && pBMMPage->GetPageKind() == pTestPage->GetPageKind())
{
- if( bRenameDuplicates && pTestPage->getHash() != pBMMPage->getHash() )
+ // Ignore Layouts with "Default" these seem to be special - in the sense that there are lot of assumption all over Impress
+ // about this
+ if( bRenameDuplicates && aTest != OUString( SdResId( STR_LAYOUT_DEFAULT_NAME ) ) && pTestPage->getHash() != pBMMPage->getHash() )
{
pBookmarkDoc->RenameLayoutTemplate( pBMMPage->GetLayoutName(), OUString(pBMMPage->GetName())+=OUString("_") );
aLayout = pBMMPage->GetName();
--
1.9.3

@ -1,31 +0,0 @@
From fdb81f1a2012e558eaeb7fcf762736f1afcdeee9 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Wed, 3 Sep 2014 09:36:22 +0200
Subject: [PATCH] fix KDE4 detection on aarch64
Change-Id: Iafe65564e8c2534cb03497d82d7dd3498abdf7c8
---
configure.ac | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index c0b5658..f65ab66 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11045,9 +11045,12 @@ AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
AC_SUBST(SYSTEM_RHINO)
AC_SUBST(RHINO_JAR)
+# This is only used in KDE3/KDE4/TDE checks to determine if /usr/lib64
+# paths should be added to library search path. So lets put all 64-bit
+# platforms there.
supports_multilib=
case "$host_cpu" in
-x86_64 | powerpc64 | s390x)
+x86_64 | powerpc64 | powerpc64le | s390x | aarch64)
if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
supports_multilib="yes"
fi
--
1.9.3

@ -1,28 +0,0 @@
From 204dc59286857174306615dad4b4a0bd8d0cfe82 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 11 Nov 2014 14:10:04 +0000
Subject: [PATCH] have a stab at improving impossible question
as to whether you want to "adapt" objects or not
Change-Id: Ic4c00be480d1be632d84dfac71fe911d48eacc51
---
sd/source/ui/app/strings.src | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sd/source/ui/app/strings.src b/sd/source/ui/app/strings.src
index 2b363f6..06b0fcf 100644
--- a/sd/source/ui/app/strings.src
+++ b/sd/source/ui/app/strings.src
@@ -397,7 +397,7 @@ String STR_READ_DATA_ERROR
};
String STR_SCALE_OBJECTS
{
- Text [ en-US ] = "The format of the new pages will be adapted.\nDo you want to adapt the objects, too?" ;
+ Text [ en-US ] = "The page size of the target document is different than the source document.\n\nDo you want to scale the copied objects to fit the new page size?" ;
};
String STR_CREATE_PAGES
{
--
1.9.3

@ -1,103 +0,0 @@
From af73a28e8538f5b2df6bbfd592d8987511520d4d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 22 Aug 2014 21:08:47 +0100
Subject: [PATCH] if _CALL_ELF -> if defined(_CALL_ELF) && _CALL_ELF == 2
Change-Id: I34e9a98586b795a3fa31ae775aee7898b36e65d4
---
bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx | 10 +++++-----
bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx | 8 ++++----
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx
index 35cc16f..430999f 100644
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx
@@ -326,7 +326,7 @@ static typelib_TypeClass cpp2uno_call(
}
}
-#if _CALL_ELF == 2
+#if defined(_CALL_ELF) && _CALL_ELF == 2
# define PARAMSAVE 32
#else
# define PARAMSAVE 48
@@ -545,7 +545,7 @@ extern "C" void privateSnippetExecutor( ... )
"mr %0, 1\n\t"
: "=r" (sp) : );
-#if _CALL_ELF == 2
+#if defined(_CALL_ELF) && _CALL_ELF == 2
volatile long nRegReturn[2];
#else
volatile long nRegReturn[1];
@@ -592,7 +592,7 @@ extern "C" void privateSnippetExecutor( ... )
default:
__asm__( "ld 3,%0\n\t"
: : "m" (nRegReturn[0]) );
-#if _CALL_ELF == 2
+#if defined(_CALL_ELF) && _CALL_ELF == 2
__asm__( "ld 4,%0\n\t"
: : "m" (nRegReturn[1]) );
#endif
@@ -600,7 +600,7 @@ extern "C" void privateSnippetExecutor( ... )
}
}
-#if _CALL_ELF == 2
+#if defined(_CALL_ELF) && _CALL_ELF == 2
const int codeSnippetSize = 32;
#else
const int codeSnippetSize = 24;
@@ -618,7 +618,7 @@ unsigned char * codeSnippet( unsigned char * code, sal_Int32 nFunctionIndex, sa
if ( bHasHiddenParam )
nOffsetAndIndex |= 0x80000000;
-#if _CALL_ELF == 2
+#if defined(_CALL_ELF) && _CALL_ELF == 2
unsigned int *raw = (unsigned int *)&code[0];
raw[0] = 0xe96c0018; /* 0: ld 11,2f-0b(12) */
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
index 391ef219..cfe720d 100644
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
@@ -39,7 +39,7 @@ using namespace ::com::sun::star::uno;
namespace ppc64
{
-#if _CALL_ELF == 2
+#if defined(_CALL_ELF) && _CALL_ELF == 2
bool is_complex_struct(const typelib_TypeDescription * type)
{
const typelib_CompoundTypeDescription * p
@@ -70,7 +70,7 @@ namespace ppc64
{
if (bridges::cpp_uno::shared::isSimpleType(pTypeRef))
return false;
-#if _CALL_ELF == 2
+#if defined(_CALL_ELF) && _CALL_ELF == 2
else if (pTypeRef->eTypeClass == typelib_TypeClass_STRUCT || pTypeRef->eTypeClass == typelib_TypeClass_EXCEPTION)
{
typelib_TypeDescription * pTypeDescr = 0;
@@ -115,7 +115,7 @@ void MapReturn(long r3, long r4, double dret, typelib_TypeDescriptionReference*
case typelib_TypeClass_DOUBLE:
*reinterpret_cast<double *>( pRegisterReturn ) = dret;
break;
-#if _CALL_ELF == 2
+#if defined(_CALL_ELF) && _CALL_ELF == 2
case typelib_TypeClass_STRUCT:
case typelib_TypeClass_EXCEPTION:
if (!ppc64::return_in_hidden_param(pReturnType))
@@ -175,7 +175,7 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex,
pMethod += 8 * nVtableIndex;
pMethod = *((sal_uInt64 *)pMethod);
-#if _CALL_ELF == 2
+#if defined(_CALL_ELF) && _CALL_ELF == 2
typedef void (* FunctionCall )(...);
#else
typedef void (* FunctionCall )( sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64 );
--
1.9.3

@ -1,205 +0,0 @@
From ff0eba6c1cbf4a5816c5b9b48d4e29778f0e0869 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 6 Nov 2014 14:59:49 +0000
Subject: [PATCH] implement toggling off removeable master elements with direct
delete
i.e. selecting footers/headers/slidenumber/datetime previes placeholders in
master page view and pressing delete will toggle those master elements off.
Change-Id: I91f745703e43cbb4fdd037da4eab7c8f6bf9fbf5
(cherry picked from commit e36dae401fc8963c9a92cb2c11d9b650b943c6d3)
---
sd/inc/sdpage.hxx | 1 +
sd/source/core/sdpage.cxx | 19 +++++++++
sd/source/ui/dlg/masterlayoutdlg.cxx | 19 ++-------
sd/source/ui/inc/DrawViewShell.hxx | 1 +
sd/source/ui/view/drviewse.cxx | 74 ++++++++++++++++++++++++++++--------
5 files changed, 83 insertions(+), 31 deletions(-)
diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx
index 4cce906..0d3b138 100644
--- a/sd/inc/sdpage.hxx
+++ b/sd/inc/sdpage.hxx
@@ -176,6 +176,7 @@ public:
void EnsureMasterPageDefaultBackground();
SdrObject* CreatePresObj(PresObjKind eObjKind, bool bVertical, const Rectangle& rRect, bool bInsert=false);
SdrObject* CreateDefaultPresObj(PresObjKind eObjKind, bool bInsert);
+ void DestroyDefaultPresObj(PresObjKind eObjKind);
SdrObject* GetPresObj(PresObjKind eObjKind, int nIndex = 1, bool bFuzzySearch = false );
PresObjKind GetPresObjKind(SdrObject* pObj) const;
OUString GetPresObjText(PresObjKind eObjKind) const;
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 477ea48..fccd7cf 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -1018,6 +1018,25 @@ SdrObject* SdPage::CreateDefaultPresObj(PresObjKind eObjKind, bool bInsert)
}
}
+void SdPage::DestroyDefaultPresObj(PresObjKind eObjKind)
+{
+ SdrObject* pObject = GetPresObj( eObjKind );
+
+ if( pObject )
+ {
+ SdDrawDocument *pDoc = static_cast<SdDrawDocument*>(pModel);
+
+ const bool bUndo = pDoc->IsUndoEnabled();
+ if( bUndo )
+ pDoc->AddUndo(pDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pObject));
+ SdrObjList* pOL = pObject->GetObjList();
+ pOL->RemoveObject(pObject->GetOrdNumDirect());
+
+ if( !bUndo )
+ SdrObject::Free(pObject);
+ }
+}
+
/*************************************************************************
|*
|* return title area
diff --git a/sd/source/ui/dlg/masterlayoutdlg.cxx b/sd/source/ui/dlg/masterlayoutdlg.cxx
index 21aa64b..acfd28a 100644
--- a/sd/source/ui/dlg/masterlayoutdlg.cxx
+++ b/sd/source/ui/dlg/masterlayoutdlg.cxx
@@ -121,27 +121,14 @@ void MasterLayoutDialog::applyChanges()
mpDoc->EndUndo();
}
-void MasterLayoutDialog::create( PresObjKind eKind )
+void MasterLayoutDialog::create(PresObjKind eKind)
{
- mpCurrentPage->CreateDefaultPresObj( eKind, true );
+ mpCurrentPage->CreateDefaultPresObj(eKind, true);
}
void MasterLayoutDialog::remove( PresObjKind eKind )
{
- SdrObject* pObject = mpCurrentPage->GetPresObj( eKind );
-
- if( pObject )
- {
- const bool bUndo = mpDoc->IsUndoEnabled();
- if( bUndo )
- mpDoc->AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pObject));
- SdrObjList* pOL =pObject->GetObjList();
- sal_uInt32 nOrdNum=pObject->GetOrdNumDirect();
- pOL->RemoveObject(nOrdNum);
-
- if( !bUndo )
- SdrObject::Free(pObject);
- }
+ mpCurrentPage->DestroyDefaultPresObj(eKind);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/inc/DrawViewShell.hxx b/sd/source/ui/inc/DrawViewShell.hxx
index 96c5c9c..a6f5a13 100644
--- a/sd/source/ui/inc/DrawViewShell.hxx
+++ b/sd/source/ui/inc/DrawViewShell.hxx
@@ -216,6 +216,7 @@ public:
void FuTemporary(SfxRequest& rReq);
void FuPermanent(SfxRequest& rReq);
void FuSupport(SfxRequest& rReq);
+ void FuDeleteSelectedObjects();
void FuSupportRotate(SfxRequest& rReq);
void FuTable(SfxRequest& rReq);
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index cd643b0..6e7cb8d 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -625,6 +625,64 @@ void DrawViewShell::FuPermanent(SfxRequest& rReq)
}
}
+void DrawViewShell::FuDeleteSelectedObjects()
+{
+ bool bConsumed = false;
+
+ //if any placeholders are selected
+ if (mpDrawView->IsPresObjSelected(false, true, false, false))
+ {
+ //If there are placeholders in the list which can be toggled
+ //off in edit->master->master elements then do that here,
+ std::vector<SdrObject*> aPresMarksToRemove;
+ const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
+ for (size_t i=0; i < rMarkList.GetMarkCount(); ++i)
+ {
+ SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
+ SdPage* pPage = (SdPage*)pObj->GetPage();
+ PresObjKind eKind = pPage->GetPresObjKind(pObj);
+ if (eKind == PRESOBJ_FOOTER || eKind == PRESOBJ_HEADER ||
+ eKind == PRESOBJ_DATETIME || eKind == PRESOBJ_SLIDENUMBER)
+ {
+ aPresMarksToRemove.push_back(pObj);
+ }
+ }
+
+ for (std::vector<SdrObject*>::iterator aI = aPresMarksToRemove.begin(); aI < aPresMarksToRemove.end(); ++aI)
+ {
+ //Unmark object
+ mpDrawView->MarkObj((*aI), mpDrawView->GetSdrPageView(), true);
+ SdPage* pPage = (SdPage*)(*aI)->GetPage();
+ //remove placeholder from master page
+ pPage->DestroyDefaultPresObj(pPage->GetPresObjKind((*aI)));
+ }
+
+ bConsumed = true;
+ }
+
+ // placeholders which cannot be deleted selected
+ if (mpDrawView->IsPresObjSelected(false, true, false, true))
+ {
+ ::sd::Window* pWindow = GetActiveWindow();
+ InfoBox(pWindow, SD_RESSTR(STR_ACTION_NOTPOSSIBLE) ).Execute();
+ bConsumed = true;
+ }
+
+ if (!bConsumed)
+ {
+ KeyCode aKCode(KEY_DELETE);
+ KeyEvent aKEvt( 0, aKCode);
+
+ bConsumed = mpDrawView && mpDrawView->getSmartTags().KeyInput( aKEvt );
+
+ if( !bConsumed && HasCurrentFunction() )
+ bConsumed = GetCurrentFunction()->KeyInput(aKEvt);
+
+ if( !bConsumed && mpDrawView )
+ mpDrawView->DeleteMarked();
+ }
+}
+
void DrawViewShell::FuSupport(SfxRequest& rReq)
{
if( rReq.GetSlot() == SID_STYLE_FAMILY && rReq.GetArgs())
@@ -873,23 +931,9 @@ void DrawViewShell::FuSupport(SfxRequest& rReq)
pOLV->PostKeyEvent(aKEvt);
}
}
- else if ( mpDrawView->IsPresObjSelected(false, true, false, true) )
- {
- ::sd::Window* pWindow = GetActiveWindow();
- InfoBox(pWindow, SD_RESSTR(STR_ACTION_NOTPOSSIBLE) ).Execute();
- }
else
{
- KeyCode aKCode(KEY_DELETE);
- KeyEvent aKEvt( 0, aKCode);
-
- bool bConsumed = mpDrawView && mpDrawView->getSmartTags().KeyInput( aKEvt );
-
- if( !bConsumed && HasCurrentFunction() )
- bConsumed = GetCurrentFunction()->KeyInput(aKEvt);
-
- if( !bConsumed && mpDrawView )
- mpDrawView->DeleteMarked();
+ FuDeleteSelectedObjects();
}
rReq.Ignore ();
}
--
1.9.3

@ -1,55 +0,0 @@
From 5a958aa9d95f0c14e4980f6909550e657d87a3a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 13 Nov 2014 14:31:09 +0000
Subject: [PATCH] impress tables are not interactively growing
the optimization here stops tables growing as their text
contents change in editing mode
So, just recalculate if the table could grow and its
being interactively edited, which leaves the original
(dubious ?) load-time optimization in place
Change-Id: I894acf47d34ec8b68aaf9076b5a0cb7e29c38a17
(cherry picked from commit 22ef69b25fa60f4543dc72cb7a8d2f88b789ce43)
---
svx/source/table/svdotable.cxx | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/svx/source/table/svdotable.cxx b/svx/source/table/svdotable.cxx
index fbd532a..856a9e5 100644
--- a/svx/source/table/svdotable.cxx
+++ b/svx/source/table/svdotable.cxx
@@ -689,16 +689,17 @@ sal_Int32 SdrTableObjImpl::getRowCount() const
return mxTable.is() ? mxTable->getRowCount() : 0;
}
-
-
void SdrTableObjImpl::LayoutTable( Rectangle& rArea, bool bFitWidth, bool bFitHeight )
{
if( mpLayouter && mpTableObj->GetModel() )
{
// Optimization: SdrTableObj::SetChanged() can call this very often, repeatedly
// with the same settings, noticeably increasing load time. Skip if already done.
+ bool bInteractiveMightGrowBecauseTextChanged =
+ mpTableObj->IsRealyEdited() && (mpTableObj->IsAutoGrowHeight() || mpTableObj->IsAutoGrowWidth());
WritingMode writingMode = mpTableObj->GetWritingMode();
- if( lastLayoutTable != this || lastLayoutInputRectangle != rArea
+ if( bInteractiveMightGrowBecauseTextChanged
+ || lastLayoutTable != this || lastLayoutInputRectangle != rArea
|| lastLayoutFitWidth != bFitWidth || lastLayoutFitHeight != bFitHeight
|| lastLayoutMode != writingMode
|| lastRowCount != getRowCount()
@@ -722,8 +723,6 @@ void SdrTableObjImpl::LayoutTable( Rectangle& rArea, bool bFitWidth, bool bFitHe
}
}
-
-
void SdrTableObjImpl::UpdateCells( Rectangle& rArea )
{
if( mpLayouter && mxTable.is() )
--
1.9.3

@ -1,65 +0,0 @@
From 4d687aec3c5ea0f18ab3f01f827cc544e677bae3 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Thu, 6 Nov 2014 10:20:00 +0100
Subject: [PATCH] just use ANSI C declarations
Change-Id: Iec50f3474b97497c50522eabb4435795b3ba3b56
---
vcl/source/filter/jpeg/transupp.h | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/vcl/source/filter/jpeg/transupp.h b/vcl/source/filter/jpeg/transupp.h
index 4448c9f..4dbbc2a 100644
--- a/vcl/source/filter/jpeg/transupp.h
+++ b/vcl/source/filter/jpeg/transupp.h
@@ -164,27 +164,27 @@ typedef struct {
/* Parse a crop specification (written in X11 geometry style) */
EXTERN(boolean) jtransform_parse_crop_spec
- JPP((jpeg_transform_info *info, const char *spec));
+ (jpeg_transform_info *info, const char *spec);
/* Request any required workspace */
EXTERN(boolean) jtransform_request_workspace
- JPP((j_decompress_ptr srcinfo, jpeg_transform_info *info));
+ (j_decompress_ptr srcinfo, jpeg_transform_info *info);
/* Adjust output image parameters */
EXTERN(jvirt_barray_ptr *) jtransform_adjust_parameters
- JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
jvirt_barray_ptr *src_coef_arrays,
- jpeg_transform_info *info));
+ jpeg_transform_info *info);
/* Execute the actual transformation, if any */
EXTERN(void) jtransform_execute_transform
- JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
jvirt_barray_ptr *src_coef_arrays,
- jpeg_transform_info *info));
+ jpeg_transform_info *info);
/* Determine whether lossless transformation is perfectly
* possible for a specified image and transformation.
*/
EXTERN(boolean) jtransform_perfect_transform
- JPP((JDIMENSION image_width, JDIMENSION image_height,
+ (JDIMENSION image_width, JDIMENSION image_height,
int MCU_width, int MCU_height,
- JXFORM_CODE transform));
+ JXFORM_CODE transform);
/* jtransform_execute_transform used to be called
* jtransform_execute_transformation, but some compilers complain about
@@ -209,8 +209,8 @@ typedef enum {
/* Setup decompression object to save desired markers in memory */
EXTERN(void) jcopy_markers_setup
- JPP((j_decompress_ptr srcinfo, JCOPY_OPTION option));
+ (j_decompress_ptr srcinfo, JCOPY_OPTION option);
/* Copy markers saved in the given source object to the destination object */
EXTERN(void) jcopy_markers_execute
- JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
- JCOPY_OPTION option));
+ (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JCOPY_OPTION option);
--
2.1.0

@ -1,30 +0,0 @@
From 3cfc0933c38a9f5383042347ef659c3d982090a3 Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Wed, 8 Oct 2014 13:22:44 +0200
Subject: [PATCH] libgcrypt and gnutls are only used by our internal
external/neon
...so must not be checked for if --without-system-neon
Change-Id: If598108f98d6f94f32650feba7044224a78a4c12
(cherry picked from commit c592e7dea2e5ac326041b78b9512600c984ccced)
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 363eb2f..ed3da6c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9463,7 +9463,7 @@ dnl ===================================================================
dnl Check for building gnutls
dnl ===================================================================
AC_MSG_CHECKING([whether to use gnutls])
-if test "$WITH_WEBDAV" = "neon" && test "$enable_openssl" = "no"; then
+if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
AC_MSG_RESULT([yes])
AM_PATH_LIBGCRYPT()
PKG_CHECK_MODULES(GNUTLS, [gnutls],,
--
1.9.3

@ -1,47 +0,0 @@
From 2c37487470c7ea76d493eb0554cf2f9458ed5075 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 23 Sep 2014 10:20:06 +0100
Subject: [PATCH] n-up printing done by vcl, brochures by draw/impress
Change-Id: If38365d949ad91d50138798a0a386f9543eb4f22
---
sd/source/ui/view/DocumentRenderer.cxx | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx
index 723aa02e..1a903f7 100644
--- a/sd/source/ui/view/DocumentRenderer.cxx
+++ b/sd/source/ui/view/DocumentRenderer.cxx
@@ -1362,7 +1362,7 @@ private:
SdDrawDocument* pDocument = mrBase.GetMainViewShell()->GetDoc();
bool bIsDraw = pDocument->GetDocumentType() == DOCUMENT_TYPE_DRAW;
rInfo.meOrientation = ORIENTATION_PORTRAIT;
- bool bDoDodgyHeightWidthFit = !bIsDraw && !mpOptions->IsNotes();
+ bool bDoDodgyHeightWidthFit = mpOptions->IsBooklet() || (!bIsDraw && !mpOptions->IsNotes());
if( ! mpOptions->IsBooklet())
{
@@ -1371,7 +1371,8 @@ private:
else if (rInfo.maPageSize.Width() < rInfo.maPageSize.Height())
rInfo.meOrientation = ORIENTATION_LANDSCAPE;
- // Draw and Notes should abide by their specified paper size
+ // Draw and Notes should abide by their specified paper size, except
+ // for booklets
Size aPaperSize;
if (!bDoDodgyHeightWidthFit)
{
@@ -1448,8 +1449,8 @@ private:
if (mpOptions->IsTime())
aInfo.msTimeDate += GetSdrGlobalData().GetLocaleData()->getTime( Time( Time::SYSTEM ), false, false );
- // Draw should use specified paper size when printing
- if (mrBase.GetDocShell()->GetDocumentType() == DOCUMENT_TYPE_DRAW)
+ // Draw should use specified paper size when printing, except for booklets
+ if (!mpOptions->IsBooklet() && mrBase.GetDocShell()->GetDocumentType() == DOCUMENT_TYPE_DRAW)
{
aInfo.maPrintSize = mrBase.GetDocument()->GetSdPage(0, PK_STANDARD)->GetSize();
maPrintSize = awt::Size(aInfo.maPrintSize.Width(),
--
1.9.3

@ -12,7 +12,7 @@ index 206f5ed..14620da 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -14,7 +14,7 @@ MAKECMDGOALS?=all
SHELL=/usr/bin/env bash
SHELL := @SHELL_BASH@
SRCDIR := @SRC_ROOT@
BUILDDIR := @BUILDDIR@
-GIT_BUILD := $(if $(wildcard $(SRCDIR)/.git),T)

@ -1,31 +0,0 @@
From 81fb045eca1e3bb8760f8b8c437d01a3e56c8ce9 Mon Sep 17 00:00:00 2001
From: Michael Stahl <mstahl@redhat.com>
Date: Mon, 17 Nov 2014 15:46:23 +0100
Subject: [PATCH] officecfg: set VCL.WM.ShouldSwitchWorkspace to false
It's quite obnoxious of applications to switch virtual desktops, and
i#45160 / i#96684 indicate the main reason for this was to avoid crashes
9 years ago; let's see if we get any crash reports with it disabled.
Change-Id: Ib020380c9ad3b386c7cf00fb2144cb766d1f6c83
(cherry picked from commit d93c89ddf564d0445f28e0ba552ba94975d40f2a)
---
officecfg/registry/data/org/openoffice/VCL.xcu | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/officecfg/registry/data/org/openoffice/VCL.xcu b/officecfg/registry/data/org/openoffice/VCL.xcu
index ec48498..e5b56e8 100644
--- a/officecfg/registry/data/org/openoffice/VCL.xcu
+++ b/officecfg/registry/data/org/openoffice/VCL.xcu
@@ -51,7 +51,7 @@
</node>
<node oor:name="WM" oor:op="replace">
<prop oor:name="ShouldSwitchWorkspace" oor:op="replace" oor:type="xs:string">
- <value/>
+ <value>false</value>
</prop>
</node>
</node>
--
1.9.3

@ -1,29 +0,0 @@
From 0b793116deaf35ce67245c1106e5ed5a722c7560 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Thu, 19 Jun 2014 16:57:03 +0200
Subject: [PATCH] rhbz#1111216 allow to export an empty sheet to PDF
This is to consolidate Calc's behaviour with the other applications,
which always present at least one page for printing / PDF export.
Change-Id: Iedf438618020c1e6d8ded5ac950c8ca2b12ad439
---
sc/source/ui/unoobj/docuno.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 9aeceb7..75cabca 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -958,7 +958,7 @@ sal_Int32 SAL_CALL ScModelObj::getRendererCount(const uno::Any& aSelection,
StringRangeEnumerator aRangeEnum( aPagesStr, 0, nPages-1 );
nSelectCount = aRangeEnum.size();
}
- return nSelectCount;
+ return (nSelectCount > 0) ? nSelectCount : 1;
}
static sal_Int32 lcl_GetRendererNum( sal_Int32 nSelRenderer, const OUString& rPagesStr, sal_Int32 nTotalPages )
--
1.9.3

@ -1,139 +0,0 @@
From 52ac64848e41c6c3bba86c98361757aaf89ef3c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 15 Jul 2014 16:42:42 +0100
Subject: [PATCH] scrolling very slow in calc
even on a short spreadsheet scrolling up and down leaves
the first/last row (depending on the direction of scroll)
unchanged until the scrolling stops.
http://people.freedesktop.org/~mst/calc_4.2_scrolling.webm
On larger document there are rendering artifacts during scrolling which go away
after scrolling for me and mstahl, but a bunch of people can show us piles of
horribly broken spreadsheets after scrolling, esp wheel scrolling
Revert "fdo#75026: Sometimes we need to update grid view...
while not being active."
This reverts commit 52cc88d6191ba0c4b6477e5c4b9c5d0f0228030d.
Revert "fdo#68961: Check visible range during scrolling, and re-paint if necessary."
This reverts commit e36c8a674845ab19577fc06d44b780549757e1e7.
Revert "Repaint grid view when the visible area changes."
This reverts commit b54c1a53b4d400b1c2d282c186af1fa8f151894e.
Conflicts:
sc/source/ui/app/scmod.cxx
Revert "Update visible ranges when updating the scroll bars."
This reverts commit 391a57ef65687f2e373bac8d410e551aafa780ec.
Change-Id: Ie170308cba18a9a74c7c72daf07dfa0a4ef7bd13
---
sc/source/ui/inc/tabview.hxx | 6 ------
sc/source/ui/view/gridwin4.cxx | 2 ++
sc/source/ui/view/tabview.cxx | 4 ----
sc/source/ui/view/tabview3.cxx | 10 ----------
sc/source/ui/view/tabview4.cxx | 7 ++++++-
5 files changed, 8 insertions(+), 21 deletions(-)
diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx
index a5d7392..891af9e 100644
--- a/sc/source/ui/inc/tabview.hxx
+++ b/sc/source/ui/inc/tabview.hxx
@@ -204,12 +204,6 @@ private:
void PaintRangeFinderEntry (ScRangeFindData* pData, SCTAB nTab);
- /**
- * Check the visible grid area to see if the visible range has changed. If
- * so, update the stored visible range, and re-paint the grid area.
- */
- void UpdateGrid();
-
protected:
void UpdateHeaderWidth( const ScVSplitPos* pWhich = NULL,
const SCROW* pPosY = NULL );
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index fa697ee5..a60fb82 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -390,6 +390,8 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
OSL_ENSURE( ValidCol(nX2) && ValidRow(nY2), "GridWin Draw Bereich zu gross" );
+ UpdateVisibleRange();
+
if (nX2 < maVisibleRange.mnCol1 || nY2 < maVisibleRange.mnRow1)
return;
// unsichtbar
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index aafd114..02b99b9 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -1198,8 +1198,6 @@ void ScTabView::ScrollX( long nDeltaX, ScHSplitPos eWhich, bool bUpdBars )
if (pColOutline[eWhich]) pColOutline[eWhich]->ScrollPixel( nDiff );
if (bUpdBars)
UpdateScrollBars();
- else
- UpdateGrid();
}
if (nDeltaX==1 || nDeltaX==-1)
@@ -1285,8 +1283,6 @@ void ScTabView::ScrollY( long nDeltaY, ScVSplitPos eWhich, bool bUpdBars )
if (pRowOutline[eWhich]) pRowOutline[eWhich]->ScrollPixel( nDiff );
if (bUpdBars)
UpdateScrollBars();
- else
- UpdateGrid();
}
if (nDeltaY==1 || nDeltaY==-1)
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
index 7053037..50066ba 100644
--- a/sc/source/ui/view/tabview3.cxx
+++ b/sc/source/ui/view/tabview3.cxx
@@ -2089,16 +2089,6 @@ void ScTabView::PaintRangeFinderEntry (ScRangeFindData* pData, const SCTAB nTab)
}
}
-void ScTabView::UpdateGrid()
-{
- if (!UpdateVisibleRange())
- // Visible range hasn't changed. No need to re-paint.
- return;
-
- SC_MOD()->AnythingChanged(); // if visible area has changed
- PaintGrid();
-}
-
void ScTabView::PaintRangeFinder( long nNumber )
{
ScInputHandler* pHdl = SC_MOD()->GetInputHdl( aViewData.GetViewShell() );
diff --git a/sc/source/ui/view/tabview4.cxx b/sc/source/ui/view/tabview4.cxx
index 2f72a20..8528431 100644
--- a/sc/source/ui/view/tabview4.cxx
+++ b/sc/source/ui/view/tabview4.cxx
@@ -421,7 +421,12 @@ void ScTabView::UpdateScrollBars()
}
// set visible area for online spelling
- UpdateGrid();
+
+ if ( aViewData.IsActive() )
+ {
+ if (UpdateVisibleRange())
+ SC_MOD()->AnythingChanged(); // if visible area has changed
+ }
}
#ifndef HDR_SLIDERSIZE
--
1.9.3

@ -1,67 +0,0 @@
From 0f1fc84029475565fda1bad43d99a114391afdc7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 11 Nov 2014 13:33:53 +0000
Subject: [PATCH] strip off hard-coded numbering from outliner preview on load
how to reproduce an outline which won't update wrt the numbering style
file->new->presentation
view->master->slide master
select first entry of outliner, i.e. "Click to edit the outline text format"
make it underlined, save, reload
view->master->slide master
now use bullet and numbering
set level 1 to e.g. none, ok
nothing happens to the outliner. It remains "stuck" with its default numbering
Change-Id: I95708b1f1c9cc74ae5129dbfad8ca0d37b00fa13
---
sd/source/filter/xml/sdxmlwrp.cxx | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/sd/source/filter/xml/sdxmlwrp.cxx b/sd/source/filter/xml/sdxmlwrp.cxx
index fd8cacc..ad1cd23 100644
--- a/sd/source/filter/xml/sdxmlwrp.cxx
+++ b/sd/source/filter/xml/sdxmlwrp.cxx
@@ -55,6 +55,7 @@
#include <com/sun/star/io/XActiveDataControl.hpp>
#include <comphelper/genericpropertyset.hxx>
#include <comphelper/propertysetinfo.hxx>
+#include <editeng/eeitem.hxx>
#include <unotools/saveopt.hxx>
// include necessary for XML progress bar at load time
@@ -444,6 +445,7 @@ void fixupOutlinePlaceholderNumberingDepths(SdDrawDocument* pDoc)
const sal_Int32 nParaCount = pOutliner->GetParagraphCount();
for (sal_Int32 j = 0; j < nParaCount; ++j)
{
+ //Make sure the depth of the paragraph matches that of the outline style it previews
const sal_Int16 nExpectedDepth = j;
if (nExpectedDepth != pOutliner->GetDepth(j))
{
@@ -451,10 +453,21 @@ void fixupOutlinePlaceholderNumberingDepths(SdDrawDocument* pDoc)
pOutliner->SetDepth(p, nExpectedDepth);
bInconsistent = true;
}
+
+ //If the preview has hard-coded bullets/numbering then they must
+ //be stripped to reveal the true underlying styles attributes
+ SfxItemSet aAttrs(pOutliner->GetParaAttribs(j));
+ if (aAttrs.GetItemState(EE_PARA_NUMBULLET) == SFX_ITEM_SET)
+ {
+ aAttrs.ClearItem(EE_PARA_NUMBULLET);
+ pOutliner->SetParaAttribs(j, aAttrs);
+ bInconsistent = true;
+ }
+
}
if (bInconsistent)
{
- SAL_WARN("sd.filter", "Fixing inconsistent outline numbering placeholder preview depth");
+ SAL_WARN("sd.filter", "Fixing inconsistent outline numbering placeholder preview");
pMasterOutline->SetOutlinerParaObject(pOutliner->CreateParaObject(0, nParaCount));
}
pOutliner->Clear();
--
1.9.3

@ -1,79 +0,0 @@
From f79f3d1322b396f5f45ccd7742015749e93ac57b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 13 Nov 2014 13:32:35 +0000
Subject: [PATCH] table layout cache returns wrong rectangle
the layouter can modify its input rectangle to grow
it to the necessary size to contain the layout
but we're returning the input rectangle when the inputs are the same as the
last call, not returning the output rectangle.
cache the output rect for a given input and return that
so now insert->table in impress and tab so extra cells are added and
then select the table and the blue border contains the whole
table, not just the first two rows
Change-Id: I4f09594d82c1597204afbd059e175af9bf8e2527
(cherry picked from commit 98cd2671f0a215ced6203372ac673e2380031ac0)
---
svx/source/table/svdotable.cxx | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/svx/source/table/svdotable.cxx b/svx/source/table/svdotable.cxx
index d49cfb3..fbd532a 100644
--- a/svx/source/table/svdotable.cxx
+++ b/svx/source/table/svdotable.cxx
@@ -244,7 +244,8 @@ public:
virtual bool isInUse() SAL_OVERRIDE;
private:
static SdrTableObjImpl* lastLayoutTable;
- static Rectangle lastLayoutRectangle;
+ static Rectangle lastLayoutInputRectangle;
+ static Rectangle lastLayoutResultRectangle;
static bool lastLayoutFitWidth;
static bool lastLayoutFitHeight;
static WritingMode lastLayoutMode;
@@ -253,7 +254,8 @@ private:
};
SdrTableObjImpl* SdrTableObjImpl::lastLayoutTable = NULL;
-Rectangle SdrTableObjImpl::lastLayoutRectangle;
+Rectangle SdrTableObjImpl::lastLayoutInputRectangle;
+Rectangle SdrTableObjImpl::lastLayoutResultRectangle;
bool SdrTableObjImpl::lastLayoutFitWidth;
bool SdrTableObjImpl::lastLayoutFitHeight;
WritingMode SdrTableObjImpl::lastLayoutMode;
@@ -696,14 +698,14 @@ void SdrTableObjImpl::LayoutTable( Rectangle& rArea, bool bFitWidth, bool bFitHe
// Optimization: SdrTableObj::SetChanged() can call this very often, repeatedly
// with the same settings, noticeably increasing load time. Skip if already done.
WritingMode writingMode = mpTableObj->GetWritingMode();
- if( lastLayoutTable != this || lastLayoutRectangle != rArea
+ if( lastLayoutTable != this || lastLayoutInputRectangle != rArea
|| lastLayoutFitWidth != bFitWidth || lastLayoutFitHeight != bFitHeight
|| lastLayoutMode != writingMode
|| lastRowCount != getRowCount()
|| lastColCount != getColumnCount() )
{
lastLayoutTable = this;
- lastLayoutRectangle = rArea;
+ lastLayoutInputRectangle = rArea;
lastLayoutFitWidth = bFitWidth;
lastLayoutFitHeight = bFitHeight;
lastLayoutMode = writingMode;
@@ -711,6 +713,11 @@ void SdrTableObjImpl::LayoutTable( Rectangle& rArea, bool bFitWidth, bool bFitHe
lastColCount = getColumnCount();
TableModelNotifyGuard aGuard( mxTable.get() );
mpLayouter->LayoutTable( rArea, bFitWidth, bFitHeight );
+ lastLayoutResultRectangle = rArea;
+ }
+ else
+ {
+ rArea = lastLayoutResultRectangle;
}
}
}
--
1.9.3

@ -1,42 +0,0 @@
From 4224a7656915b20819d9eb712160565172567a04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 13 Nov 2014 10:22:08 +0000
Subject: [PATCH] valgrind: check return of convertDateTime before using fDate
Change-Id: I8b95e95218beefe19e881c9d055323d0abec49c7
---
sc/source/filter/xml/xmlcelli.cxx | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
index 7c2c190..68fb1fe 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -935,14 +935,16 @@ void ScXMLTableRowCellContext::SetAnnotation(const ScAddress& rPos)
if( pNote )
{
double fDate;
- rXMLImport.GetMM100UnitConverter().convertDateTime( fDate, mxAnnotationData->maCreateDate );
- SvNumberFormatter* pNumForm = pDoc->GetFormatTable();
- sal_uInt32 nfIndex = pNumForm->GetFormatIndex( NF_DATE_SYS_DDMMYYYY, LANGUAGE_SYSTEM );
- OUString aDate;
- Color* pColor = 0;
- Color** ppColor = &pColor;
- pNumForm->GetOutputString( fDate, nfIndex, aDate, ppColor );
- pNote->SetDate( aDate );
+ if (rXMLImport.GetMM100UnitConverter().convertDateTime(fDate, mxAnnotationData->maCreateDate))
+ {
+ SvNumberFormatter* pNumForm = pDoc->GetFormatTable();
+ sal_uInt32 nfIndex = pNumForm->GetFormatIndex( NF_DATE_SYS_DDMMYYYY, LANGUAGE_SYSTEM );
+ OUString aDate;
+ Color* pColor = 0;
+ Color** ppColor = &pColor;
+ pNumForm->GetOutputString( fDate, nfIndex, aDate, ppColor );
+ pNote->SetDate( aDate );
+ }
pNote->SetAuthor( mxAnnotationData->maAuthor );
}
--
1.9.3

File diff suppressed because it is too large Load Diff

@ -1,252 +0,0 @@
From 566300ebd57e6ff07fdb014321e23a92c9bcf5ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 19 Nov 2014 12:14:08 +0000
Subject: [PATCH 2/2] Resolves: fdo#86451 guard all the tops post pop
Change-Id: I98be6f014893dfc7cee770c44cd9d0be32b39f5c
Reviewed-on: https://gerrit.libreoffice.org/12966
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
---
writerfilter/source/rtftok/rtfdocumentimpl.cxx | 177 ++++++++++++++-----------
1 file changed, 97 insertions(+), 80 deletions(-)
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index be56161..7c5cbf1 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -5637,7 +5637,7 @@ int RTFDocumentImpl::popState()
case DESTINATION_PARAGRAPHNUMBERING:
{
RTFValue::Pointer_t pIdValue = aState.aTableAttributes.find(NS_ooxml::LN_CT_AbstractNum_nsid);
- if (pIdValue.get())
+ if (pIdValue.get() && !m_aStates.empty())
{
// Abstract numbering
RTFSprms aLeveltextAttributes;
@@ -5706,85 +5706,96 @@ int RTFDocumentImpl::popState()
}
break;
case DESTINATION_PARAGRAPHNUMBERING_TEXTAFTER:
- {
- // FIXME: don't use pDestinationText, points to popped state
- RTFValue::Pointer_t pValue(new RTFValue(aState.aDestinationText.makeStringAndClear(), true));
- m_aStates.top().aTableAttributes.set(NS_ooxml::LN_CT_LevelSuffix_val, pValue);
- }
+ if (!m_aStates.empty())
+ {
+ // FIXME: don't use pDestinationText, points to popped state
+ RTFValue::Pointer_t pValue(new RTFValue(aState.aDestinationText.makeStringAndClear(), true));
+ m_aStates.top().aTableAttributes.set(NS_ooxml::LN_CT_LevelSuffix_val, pValue);
+ }
break;
case DESTINATION_PARAGRAPHNUMBERING_TEXTBEFORE:
- {
- // FIXME: don't use pDestinationText, points to popped state
- RTFValue::Pointer_t pValue(new RTFValue(aState.aDestinationText.makeStringAndClear(), true));
- m_aStates.top().aTableAttributes.set(NS_ooxml::LN_CT_LevelText_val, pValue);
- }
+ if (!m_aStates.empty())
+ {
+ // FIXME: don't use pDestinationText, points to popped state
+ RTFValue::Pointer_t pValue(new RTFValue(aState.aDestinationText.makeStringAndClear(), true));
+ m_aStates.top().aTableAttributes.set(NS_ooxml::LN_CT_LevelText_val, pValue);
+ }
break;
case DESTINATION_LISTLEVEL:
- {
- RTFValue::Pointer_t pInnerValue(new RTFValue(m_aStates.top().nListLevelNum++));
- aState.aTableAttributes.set(NS_ooxml::LN_CT_Lvl_ilvl, pInnerValue);
+ if (!m_aStates.empty())
+ {
+ RTFValue::Pointer_t pInnerValue(new RTFValue(m_aStates.top().nListLevelNum++));
+ aState.aTableAttributes.set(NS_ooxml::LN_CT_Lvl_ilvl, pInnerValue);
- RTFValue::Pointer_t pValue(new RTFValue(aState.aTableAttributes, aState.aTableSprms));
- if (m_aStates.top().nDestinationState != DESTINATION_LFOLEVEL)
- m_aStates.top().aListLevelEntries.set(NS_ooxml::LN_CT_AbstractNum_lvl, pValue, OVERWRITE_NO_APPEND);
- else
- m_aStates.top().aTableSprms.set(NS_ooxml::LN_CT_NumLvl_lvl, pValue);
- }
+ RTFValue::Pointer_t pValue(new RTFValue(aState.aTableAttributes, aState.aTableSprms));
+ if (m_aStates.top().nDestinationState != DESTINATION_LFOLEVEL)
+ m_aStates.top().aListLevelEntries.set(NS_ooxml::LN_CT_AbstractNum_lvl, pValue, OVERWRITE_NO_APPEND);
+ else
+ m_aStates.top().aTableSprms.set(NS_ooxml::LN_CT_NumLvl_lvl, pValue);
+ }
break;
case DESTINATION_LFOLEVEL:
- {
- RTFValue::Pointer_t pInnerValue(new RTFValue(m_aStates.top().nListLevelNum++));
- aState.aTableAttributes.set(NS_ooxml::LN_CT_NumLvl_ilvl, pInnerValue);
+ if (!m_aStates.empty())
+ {
+ RTFValue::Pointer_t pInnerValue(new RTFValue(m_aStates.top().nListLevelNum++));
+ aState.aTableAttributes.set(NS_ooxml::LN_CT_NumLvl_ilvl, pInnerValue);
- RTFValue::Pointer_t pValue(new RTFValue(aState.aTableAttributes, aState.aTableSprms));
- m_aStates.top().aTableSprms.set(NS_ooxml::LN_CT_Num_lvlOverride, pValue);
- }
+ RTFValue::Pointer_t pValue(new RTFValue(aState.aTableAttributes, aState.aTableSprms));
+ m_aStates.top().aTableSprms.set(NS_ooxml::LN_CT_Num_lvlOverride, pValue);
+ }
break;
// list override table
case DESTINATION_LISTOVERRIDEENTRY:
- {
- if (m_aStates.top().nDestinationState == DESTINATION_LISTOVERRIDEENTRY)
- {
- // copy properties upwards so upper popState inserts it
- m_aStates.top().aTableAttributes = aState.aTableAttributes;
- m_aStates.top().aTableSprms = aState.aTableSprms;
- }
- else
+ if (!m_aStates.empty())
{
- RTFValue::Pointer_t pValue(new RTFValue(
- aState.aTableAttributes, aState.aTableSprms));
- m_aListTableSprms.set(NS_ooxml::LN_CT_Numbering_num, pValue, OVERWRITE_NO_APPEND);
+ if (m_aStates.top().nDestinationState == DESTINATION_LISTOVERRIDEENTRY)
+ {
+ // copy properties upwards so upper popState inserts it
+ m_aStates.top().aTableAttributes = aState.aTableAttributes;
+ m_aStates.top().aTableSprms = aState.aTableSprms;
+ }
+ else
+ {
+ RTFValue::Pointer_t pValue(new RTFValue(
+ aState.aTableAttributes, aState.aTableSprms));
+ m_aListTableSprms.set(NS_ooxml::LN_CT_Numbering_num, pValue, OVERWRITE_NO_APPEND);
+ }
}
- }
break;
case DESTINATION_LEVELTEXT:
- {
- RTFValue::Pointer_t pValue(new RTFValue(aState.aTableAttributes));
- m_aStates.top().aTableSprms.set(NS_ooxml::LN_CT_Lvl_lvlText, pValue);
- }
+ if (!m_aStates.empty())
+ {
+ RTFValue::Pointer_t pValue(new RTFValue(aState.aTableAttributes));
+ m_aStates.top().aTableSprms.set(NS_ooxml::LN_CT_Lvl_lvlText, pValue);
+ }
break;
case DESTINATION_LEVELNUMBERS:
- m_aStates.top().aTableSprms = aState.aTableSprms;
+ if (!m_aStates.empty())
+ m_aStates.top().aTableSprms = aState.aTableSprms;
break;
case DESTINATION_FIELDINSTRUCTION:
- m_aStates.top().nFieldStatus = FIELD_INSTRUCTION;
+ if (!m_aStates.empty())
+ m_aStates.top().nFieldStatus = FIELD_INSTRUCTION;
break;
case DESTINATION_FIELDRESULT:
- m_aStates.top().nFieldStatus = FIELD_RESULT;
+ if (!m_aStates.empty())
+ m_aStates.top().nFieldStatus = FIELD_RESULT;
break;
case DESTINATION_FIELD:
if (aState.nFieldStatus == FIELD_INSTRUCTION)
singleChar(0x15);
break;
case DESTINATION_SHAPEPROPERTYVALUEPICT:
- {
- m_aStates.top().aPicture = aState.aPicture;
- // both \sp and \sv are destinations, copy the text up-ward for later
- m_aStates.top().aDestinationText = aState.aDestinationText;
- }
+ if (!m_aStates.empty())
+ {
+ m_aStates.top().aPicture = aState.aPicture;
+ // both \sp and \sv are destinations, copy the text up-ward for later
+ m_aStates.top().aDestinationText = aState.aDestinationText;
+ }
break;
case DESTINATION_FALT:
- m_aStates.top().aTableSprms = aState.aTableSprms;
+ if (!m_aStates.empty())
+ m_aStates.top().aTableSprms = aState.aTableSprms;
break;
case DESTINATION_SHAPEPROPERTYNAME:
case DESTINATION_SHAPEPROPERTYVALUE:
@@ -5799,40 +5810,46 @@ int RTFDocumentImpl::popState()
case DESTINATION_FLYMAINCONTENT:
case DESTINATION_SHPPICT:
case DESTINATION_SHAPE:
- m_aStates.top().aFrame = aState.aFrame;
- if (aState.nDestinationState == DESTINATION_SHPPICT && !m_aStates.empty() && m_aStates.top().nDestinationState == DESTINATION_LISTPICTURE)
+ if (!m_aStates.empty())
{
- RTFSprms aAttributes;
- aAttributes.set(NS_ooxml::LN_CT_NumPicBullet_numPicBulletId, RTFValue::Pointer_t(new RTFValue(m_nListPictureId++)));
- RTFSprms aSprms;
- // Dummy value, real picture is already sent to dmapper.
- aSprms.set(NS_ooxml::LN_CT_NumPicBullet_pict, RTFValue::Pointer_t(new RTFValue(0)));
- RTFValue::Pointer_t pValue(new RTFValue(aAttributes, aSprms));
- m_aListTableSprms.set(NS_ooxml::LN_CT_Numbering_numPicBullet, pValue, OVERWRITE_NO_APPEND);
+ m_aStates.top().aFrame = aState.aFrame;
+ if (aState.nDestinationState == DESTINATION_SHPPICT && m_aStates.top().nDestinationState == DESTINATION_LISTPICTURE)
+ {
+ RTFSprms aAttributes;
+ aAttributes.set(NS_ooxml::LN_CT_NumPicBullet_numPicBulletId, RTFValue::Pointer_t(new RTFValue(m_nListPictureId++)));
+ RTFSprms aSprms;
+ // Dummy value, real picture is already sent to dmapper.
+ aSprms.set(NS_ooxml::LN_CT_NumPicBullet_pict, RTFValue::Pointer_t(new RTFValue(0)));
+ RTFValue::Pointer_t pValue(new RTFValue(aAttributes, aSprms));
+ m_aListTableSprms.set(NS_ooxml::LN_CT_Numbering_numPicBullet, pValue, OVERWRITE_NO_APPEND);
+ }
}
break;
case DESTINATION_SHAPETEXT:
- // If we're leaving the shapetext group (it may have nested ones) and this is a shape, not an old drawingobject.
- if (m_aStates.top().nDestinationState != DESTINATION_SHAPETEXT && !m_aStates.top().aDrawingObject.bHadShapeText)
+ if (!m_aStates.empty())
{
- m_aStates.top().bHadShapeText = true;
- if (!m_aStates.top().pCurrentBuffer)
- m_pSdrImport->close();
- else
- m_aStates.top().pCurrentBuffer->push_back(
- Buf_t(BUFFER_ENDSHAPE));
- }
-
- // It's allowed to declare these inside the the shape text, and they
- // are expected to have an effect for the whole shape.
- if (aState.aDrawingObject.nLeft)
- m_aStates.top().aDrawingObject.nLeft = aState.aDrawingObject.nLeft;
- if (aState.aDrawingObject.nTop)
- m_aStates.top().aDrawingObject.nTop = aState.aDrawingObject.nTop;
- if (aState.aDrawingObject.nRight)
- m_aStates.top().aDrawingObject.nRight = aState.aDrawingObject.nRight;
- if (aState.aDrawingObject.nBottom)
- m_aStates.top().aDrawingObject.nBottom = aState.aDrawingObject.nBottom;
+ // If we're leaving the shapetext group (it may have nested ones) and this is a shape, not an old drawingobject.
+ if (m_aStates.top().nDestinationState != DESTINATION_SHAPETEXT && !m_aStates.top().aDrawingObject.bHadShapeText)
+ {
+ m_aStates.top().bHadShapeText = true;
+ if (!m_aStates.top().pCurrentBuffer)
+ m_pSdrImport->close();
+ else
+ m_aStates.top().pCurrentBuffer->push_back(
+ Buf_t(BUFFER_ENDSHAPE));
+ }
+
+ // It's allowed to declare these inside the the shape text, and they
+ // are expected to have an effect for the whole shape.
+ if (aState.aDrawingObject.nLeft)
+ m_aStates.top().aDrawingObject.nLeft = aState.aDrawingObject.nLeft;
+ if (aState.aDrawingObject.nTop)
+ m_aStates.top().aDrawingObject.nTop = aState.aDrawingObject.nTop;
+ if (aState.aDrawingObject.nRight)
+ m_aStates.top().aDrawingObject.nRight = aState.aDrawingObject.nRight;
+ if (aState.aDrawingObject.nBottom)
+ m_aStates.top().aDrawingObject.nBottom = aState.aDrawingObject.nBottom;
+ }
break;
default:
{
--
1.9.3

@ -1,9 +1,9 @@
# download path contains version without the last (fourth) digit
%define libo_version 4.3.4
%define libo_version 4.4.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."
@ -45,8 +45,8 @@
Summary: Free Software Productivity Suite
Name: libreoffice
Epoch: 1
Version: %{libo_version}.1
Release: 6%{?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 and CC0
Group: Applications/Productivity
URL: http://www.libreoffice.org/
@ -102,17 +102,18 @@ Source30: %{external_url}/libwps-0.3.0.tar.bz2
Source31: %{external_url}/libvisio-0.1.0.tar.bz2
Source32: %{external_url}/libmspub-0.1.1.tar.bz2
Source33: %{external_url}/libodfgen-0.1.1.tar.bz2
Source34: %{external_url}/libmwaw-0.3.1.tar.bz2
Source34: %{external_url}/libmwaw-0.3.3.tar.bz2
Source35: %{external_url}/libetonyek-0.1.1.tar.bz2
Source36: %{external_url}/libfreehand-0.1.0.tar.bz2
Source37: %{external_url}/libabw-0.1.0.tar.bz2
Source38: %{external_url}/librevenge-0.0.1.tar.bz2
Source39: %{external_url}/libgltf-0.0.2.tar.bz2
Source40: %{external_url}/OpenCOLLADA-master-6509aa13af.tar.bz2
%global bundling_options %{?bundling_options} --without-system-libcdr --without-system-libwpg --without-system-libwpd --without-system-libwps --without-system-libvisio --without-system-libmspub --without-system-libodfgen --without-system-libmwaw --without-system-libetonyek --without-system-libfreehand --without-system-libabw --without-system-librevenge --without-system-libgltf --without-system-opencollada
Source41: %{external_url}/libpagemaker-0.0.1.tar.bz2
%global bundling_options %{?bundling_options} --without-system-libcdr --without-system-libwpg --without-system-libwpd --without-system-libwps --without-system-libvisio --without-system-libmspub --without-system-libodfgen --without-system-libmwaw --without-system-libetonyek --without-system-libfreehand --without-system-libabw --without-system-librevenge --without-system-libgltf --without-system-opencollada --without-system-libpagemaker
%endif
Source41: %{external_url}/4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2
Source42: %{external_url}/4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2
# build tools
BuildRequires: autoconf
@ -189,6 +190,7 @@ BuildRequires: pkgconfig(libmspub-0.1)
BuildRequires: pkgconfig(libmwaw-0.3)
BuildRequires: pkgconfig(libodfgen-0.1)
BuildRequires: pkgconfig(liborcus-0.8)
BuildRequires: pkgconfig(libpagemaker-0.0)
BuildRequires: pkgconfig(librevenge-0.0)
BuildRequires: pkgconfig(libvisio-0.1)
BuildRequires: pkgconfig(libwpd-0.10)
@ -312,43 +314,8 @@ Patch14: 0001-never-run-autogen.sh.patch
Patch15: 0001-add-X-TryExec-entries-to-desktop-files.patch
# not upstreamed
Patch16: 0001-disable-PSD-import-test-which-deadlocks-on-ARM.patch
Patch17: 0001-rhbz-1111216-allow-to-export-an-empty-sheet-to-PDF.patch
Patch18: 0001-avoid-problems-detecting-HTML-files-with-.xls-ext.patch
Patch19: 0001-scrolling-very-slow-in-calc.patch
Patch20: 0001-Related-rhbz-1117853-nStartPara-of-EE_PARA_NOT_FOUND.patch
Patch21: 0001-Resolves-fdo-81487-pasting-into-outline-view-crashes.patch
Patch22: 0001-Related-rhbz-1130264-plausible-fix-for-reported-cras.patch
Patch23: 0001-if-_CALL_ELF-if-defined-_CALL_ELF-_CALL_ELF-2.patch
Patch24: 0002-Linux-AArch64-port.patch
Patch25: 0001-fix-KDE4-detection-on-aarch64.patch
Patch26: 0001-drop-useless-test-for-ant-apache-regexp.patch
Patch27: 0001-No-fstack-protect-strong-for-gcc3_linux_aarch64-cpp2.patch
Patch28: 0001-fdo-82496-Change-picture-option-by-rightclicking.patch
Patch29: 0001-create-a-master-document-template-type.patch
Patch30: 0001-Resolves-fdo-80911-don-t-swap-notes-page-width-heigh.patch
Patch31: 0001-default-n-up-printing-of-notes-to-sensible-2-x-1-not.patch
Patch32: 0001-n-up-printing-done-by-vcl-brochures-by-draw-impress.patch
Patch33: 0001-Resolves-fdo-68967-looping-layout.patch
Patch34: 0001-Remove-smb-from-X-KDE-Protocols-lines.patch
Patch35: 0001-libgcrypt-and-gnutls-are-only-used-by-our-internal-e.patch
Patch36: 0001-allow-to-build-with-system-opencollada.patch
Patch37: 0001-Resolves-fdo-37559-revert-adding-extra-dummy-polygon.patch
Patch38: 0001-Resolves-fdo-76581-copy-and-paste-slideshow-crash-in.patch
Patch39: 0001-fdo-85247-copy-and-paste-of-a-slide-results-in-a-blu.patch
Patch40: 0001-fdo-60712-Inherits-cell-styles-in-inserting-rows-col.patch
Patch41: 0001-implement-toggling-off-removeable-master-elements-wi.patch
Patch42: 0001-Resolves-fdo-78151-change-style-on-toggling-bullets-.patch
Patch43: 0001-Resolves-rhbz-1161238-sync-PRESOBJ_OUTLINE-para-dept.patch
Patch44: 0001-strip-off-hard-coded-numbering-from-outliner-preview.patch
Patch45: 0001-have-a-stab-at-improving-impossible-question.patch
Patch46: 0001-just-use-ANSI-C-declarations.patch
Patch47: 0001-valgrind-check-return-of-convertDateTime-before-usin.patch
Patch48: 0001-table-layout-cache-returns-wrong-rectangle.patch
Patch49: 0001-impress-tables-are-not-interactively-growing.patch
Patch50: 0001-officecfg-set-VCL.WM.ShouldSwitchWorkspace-to-false.patch
Patch51: 0001-Resolves-fdo-86449-backport-rtf-fixes.patch
Patch52: 0002-Resolves-fdo-86451-guard-all-the-tops-post-pop.patch
Patch53: 0001-Resolves-fdo-86466-Wrong-background-color-shown-in-f.patch
Patch17: 0001-Resolves-fdo-37559-revert-adding-extra-dummy-polygon.patch
Patch18: 0001-Resolves-fdo-86466-Wrong-background-color-shown-in-f.patch
%define instdir %{_libdir}
%define baseinstdir %{instdir}/libreoffice
@ -1076,7 +1043,7 @@ Rules for auto-correcting common %{langname} typing errors. \
%langpack -l kk -n Kazakh -F -H
%endif
%langpack -l kn -n Kannada -F -H -Y -o kn_IN -w ka_IN
%langpack -l ko -n Korean -F -H -A -s cjk -T -c korea -X -o ko_KR -V -w ko_KR
%langpack -l ko -n Korean -F -H -A -s cjk -T -X -o ko_KR -V -w ko_KR
%langpack -l lt -n Lithuanian -F -H -Y -A -o lt_LT -V -w lt_LT -X
%if 0%{?fedora} || 0%{?rhel} >= 7
%langpack -l lv -n Latvian -F -H -Y -M
@ -1323,6 +1290,7 @@ export DESTDIR=../output
export KDEMAINDIR=/usr
export GNOMEDIR=/usr
export GNOME_MIME_THEME=hicolor
export PREFIXDIR=/usr
# TODO use empty variables? Should make the renaming hacks in %%install
# unnecessary.
. ./bin/get_config_variables PRODUCTVERSIONSHORT PRODUCTVERSION WORKDIR
@ -1648,7 +1616,6 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/program/gengal
%{baseinstdir}/program/gengal.bin
%{baseinstdir}/program/gnome-open-url
%{baseinstdir}/program/gnome-open-url.bin
%{baseinstdir}/program/kde-open-url
%{baseinstdir}/program/libi18nsearchlo.so
%{baseinstdir}/program/libldapbe2lo.so
@ -1721,6 +1688,8 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/program/libhelplinkerlo.so
%{baseinstdir}/program/libhyphenlo.so
%{baseinstdir}/program/libjdbclo.so
# TODO: move elsewhere?
%{baseinstdir}/program/liblibreofficekitgtk.so
%{baseinstdir}/program/liblnglo.so
%{baseinstdir}/program/libloglo.so
%{baseinstdir}/program/liblocaledata_en.so
@ -1794,7 +1763,6 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/program/libmigrationoo2lo.so
%{baseinstdir}/program/libmigrationoo3lo.so
%{baseinstdir}/program/libmsformslo.so
%{baseinstdir}/program/nsplugin
%{baseinstdir}/program/open-url
%{baseinstdir}/program/types/offapi.rdb
%{baseinstdir}/program/libpasswordcontainerlo.so
@ -1853,7 +1821,7 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/program/libucpexpand1lo.so
%{baseinstdir}/program/libucpextlo.so
%{baseinstdir}/program/libucptdoc1lo.so
%{baseinstdir}/program/unorc
%{baseinstdir}/program/lounorc
%{baseinstdir}/program/libupdatefeedlo.so
%{baseinstdir}/ure-link
%{baseinstdir}/program/uri-encode
@ -1868,7 +1836,6 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/share/autotext/en-US
%{baseinstdir}/share/basic
%dir %{baseinstdir}/share/config
%{baseinstdir}/share/config/images.zip
%{baseinstdir}/share/config/images_crystal.zip
%{baseinstdir}/share/config/images_galaxy.zip
%{baseinstdir}/share/config/images_hicontrast.zip
@ -1958,7 +1925,6 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/program/libucpfile1.so
%{baseinstdir}/program/libutllo.so
%{baseinstdir}/program/libvcllo.so
%{baseinstdir}/program/libvclopengllo.so
%{baseinstdir}/program/libwriterperfectlo.so
%{baseinstdir}/program/libxmlscriptlo.so
%{baseinstdir}/program/libxolo.so
@ -1985,7 +1951,6 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/program/soffice.bin
%{baseinstdir}/program/sofficerc
%{baseinstdir}/program/unoinfo
%{baseinstdir}/program/libnpsoplugin.so
%{baseinstdir}/program/oosplash
%{baseinstdir}/program/shell/
%dir %{baseinstdir}/share/filter
@ -2128,7 +2093,6 @@ 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/libwpftcalclo.so

@ -7,6 +7,6 @@ a7983f859eafb2677d7ff386a023bc40 a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.
0168229624cfac409e766913506961a8 0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz
12fb8b5b0d5132726e57b9b9fc7e22c4 libreoffice-multiliblauncher.sh
4b87018f7fff1d054939d19920b751a0 4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2
98312fcb1e1ab37321f29f64f312160a libreoffice-4.3.4.1.tar.xz
71ed47d8148dd66275bd87699b31c242 libreoffice-help-4.3.4.1.tar.xz
6e405e2b499ce28bce1e926bcb7268da libreoffice-translations-4.3.4.1.tar.xz
80061ad2bb160ab3afae214f7c67c182 libreoffice-4.4.0.0.beta1.tar.xz
3a1a6b149ded6126b87f370d95c8210d libreoffice-help-4.4.0.0.beta1.tar.xz
2753b040b5bb7155f8e7e5ec8c34ed49 libreoffice-translations-4.4.0.0.beta1.tar.xz

Loading…
Cancel
Save