summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2019-03-13 17:51:07 +0100
committerMiklos Vajna <vmiklos@collabora.com>2019-06-18 15:43:11 +0200
commit15395a58feec2e2b00dc3186cbc5713376c796bd (patch)
tree6896b0216b7ef49da8bdff22d8818ce7b93151bd /writerfilter
parentc7239345e707a36dbebe7dcb100974b6898cf293 (diff)
DOCX import: fix unexpected page break on autotext insert at end of doc
The problem was that the page style was set on the first paragraph, which means a page break on the UI. So if you used a multi-paragraph autotext twice (insert autotext, press enter, insert autotext again) then you ended up with 2 pages instead of just 1. Fix the problem by tracking when we are in autotext import mode, and similar to pasting, don't set the page style in autotext import mode. Change-Id: I4fc551b3c1b999687eb80242e261f186fd1b6f13 Reviewed-on: https://gerrit.libreoffice.org/69214 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins (cherry picked from commit adcf656bb56e09fbb638a44b0cccc96f8cfced7f)
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx1
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx4
-rw-r--r--writerfilter/source/dmapper/PropertyMap.cxx11
3 files changed, 12 insertions, 4 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 4a700758a574..5d2272cdc5bc 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -239,6 +239,7 @@ DomainMapper_Impl::DomainMapper_Impl(
m_aSmartTagHandler(m_xComponentContext, m_xTextDocument),
m_xInsertTextRange(rMediaDesc.getUnpackedValueOrDefault("TextInsertModeRange", uno::Reference<text::XTextRange>())),
m_bIsNewDoc(!rMediaDesc.getUnpackedValueOrDefault("InsertMode", false)),
+ m_bIsReadGlossaries(rMediaDesc.getUnpackedValueOrDefault("ReadGlossaries", false)),
m_bInTableStyleRunProps(false),
m_nTableDepth(0),
m_nTableCellDepth(0),
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 5d6f634bad10..52aeb82ab378 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -550,6 +550,7 @@ public:
css::uno::Reference<css::text::XTextRange> m_xInsertTextRange;
private:
bool const m_bIsNewDoc;
+ bool const m_bIsReadGlossaries;
public:
DomainMapper_Impl(
DomainMapper& rDMapper,
@@ -918,6 +919,9 @@ public:
/// If we're importing into a new document, or just pasting to an existing one.
bool IsNewDoc() { return m_bIsNewDoc;}
+ /// If we're importing autotext.
+ bool IsReadGlossaries() { return m_bIsReadGlossaries;}
+
/// If we're inside <w:rPr>, inside <w:style w:type="table">
bool m_bInTableStyleRunProps;
diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx
index e965db4f919b..9bc6e3a8780c 100644
--- a/writerfilter/source/dmapper/PropertyMap.cxx
+++ b/writerfilter/source/dmapper/PropertyMap.cxx
@@ -1585,10 +1585,13 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl )
if ( xRangeProperties.is() && rDM_Impl.IsNewDoc() )
{
- xRangeProperties->setPropertyValue(
- getPropertyName( PROP_PAGE_DESC_NAME ),
- uno::makeAny( m_bTitlePage ? m_sFirstPageStyleName
- : m_sFollowPageStyleName ) );
+ // Avoid setting page style in case of autotext: so inserting the autotext at the
+ // end of the document does not introduce an unwanted page break.
+ if (!rDM_Impl.IsReadGlossaries())
+ xRangeProperties->setPropertyValue(
+ getPropertyName( PROP_PAGE_DESC_NAME ),
+ uno::makeAny( m_bTitlePage ? m_sFirstPageStyleName
+ : m_sFollowPageStyleName ) );
if (0 <= m_nPageNumber)
{