[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-4.4' - 34 commits - basic/inc basic/source drawinglayer/source editeng/source external/curl filter/source i18npool/source include/editeng include/xmloff jvmfwk/distributions jvmfwk/plugins offapi/com readlicense_oo/license sc/source sd/source svl/source sw/CppunitTest_sw_rtfexport.mk sw/inc sw/qa sw/source vcl/generic vcl/source vcl/unx wizards/com writerfilter/inc writerfilter/source xmloff/inc xmloff/source
Caolán McNamara
caolanm at redhat.com
Wed Jun 3 06:13:36 PDT 2015
basic/inc/pch/precompiled_sb.hxx | 2
basic/source/runtime/methods.cxx | 46
drawinglayer/source/attribute/fillgradientattribute.cxx | 4
drawinglayer/source/attribute/fillgraphicattribute.cxx | 4
drawinglayer/source/attribute/fillhatchattribute.cxx | 4
drawinglayer/source/attribute/lineattribute.cxx | 4
drawinglayer/source/attribute/linestartendattribute.cxx | 4
drawinglayer/source/attribute/sdrfillattribute.cxx | 4
drawinglayer/source/attribute/sdrfillgraphicattribute.cxx | 4
drawinglayer/source/attribute/sdrlightingattribute3d.cxx | 4
drawinglayer/source/attribute/sdrlineattribute.cxx | 4
drawinglayer/source/attribute/sdrlinestartendattribute.cxx | 4
drawinglayer/source/attribute/sdrsceneattribute3d.cxx | 4
drawinglayer/source/attribute/sdrshadowattribute.cxx | 4
drawinglayer/source/attribute/strokeattribute.cxx | 4
editeng/source/items/flditem.cxx | 2
editeng/source/uno/unofield.cxx | 9
external/curl/ExternalProject_curl.mk | 5
filter/source/svg/svgwriter.cxx | 31
i18npool/source/breakiterator/breakiterator_th.cxx | 10
include/editeng/flditem.hxx | 2
include/xmloff/txtimp.hxx | 1
include/xmloff/xmltoken.hxx | 1
jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml | 3
jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml | 5
jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml | 3
jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx | 6
jvmfwk/plugins/sunmajor/pluginlib/vendorlist.cxx | 1
offapi/com/sun/star/text/textfield/Type.idl | 2
readlicense_oo/license/CREDITS.fodt | 2784 +++++-----
sc/source/ui/view/gridwin4.cxx | 10
sd/source/ui/app/sdmod2.cxx | 6
sd/source/ui/app/strings.src | 10
sd/source/ui/inc/strings.hrc | 2
sd/source/ui/unoidl/unomodel.cxx | 6
svl/source/numbers/zforfind.cxx | 8
sw/CppunitTest_sw_rtfexport.mk | 31
sw/inc/doc.hxx | 5
sw/inc/frmfmt.hxx | 23
sw/inc/node.hxx | 9
sw/qa/extras/htmlexport/data/tdf90905.odt |binary
sw/qa/extras/htmlexport/htmlexport.cxx | 9
sw/qa/extras/inc/swmodeltestbase.hxx | 6
sw/qa/extras/ooxmlexport/data/hyperlink-field.odt |binary
sw/qa/extras/ooxmlexport/data/tdf91261.docx |binary
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 19
sw/qa/extras/ooxmlexport/ooxmlexport5.cxx | 8
sw/qa/extras/rtfexport/data/tdf90421.fodt | 8
sw/qa/extras/rtfexport/rtfexport.cxx | 23
sw/qa/extras/rtfimport/data/copypaste-footnote-paste.rtf | 3
sw/qa/extras/rtfimport/data/tdf86814.rtf | 8
sw/qa/extras/rtfimport/data/tdf90260-nopar.rtf | 2
sw/qa/extras/rtfimport/data/tdf90260-par.rtf | 2
sw/qa/extras/rtfimport/data/tdf91074.rtf | 7
sw/qa/extras/rtfimport/rtfimport.cxx | 31
sw/source/core/doc/DocumentRedlineManager.cxx | 2
sw/source/core/doc/doclay.cxx | 18
sw/source/core/doc/docnew.cxx | 2
sw/source/core/docnode/node.cxx | 47
sw/source/core/docnode/nodes.cxx | 76
sw/source/core/layout/atrfrm.cxx | 51
sw/source/core/layout/frmtool.cxx | 9
sw/source/core/txtnode/ndtxt.cxx | 8
sw/source/core/txtnode/thints.cxx | 40
sw/source/core/undo/undoflystrattr.cxx | 1
sw/source/core/unocore/unoflatpara.cxx | 10
sw/source/core/unocore/unoframe.cxx | 14
sw/source/filter/html/wrthtml.cxx | 8
sw/source/filter/rtf/swparrtf.cxx | 25
sw/source/filter/ww8/docxattributeoutput.cxx | 10
sw/source/filter/ww8/rtfattributeoutput.cxx | 74
sw/source/filter/ww8/rtfattributeoutput.hxx | 3
sw/source/ui/fldui/fldref.cxx | 5
vcl/generic/glyphs/gcach_layout.cxx | 6
vcl/source/gdi/mapmod.cxx | 8
vcl/source/outdev/font.cxx | 5
vcl/source/outdev/map.cxx | 1
vcl/source/window/floatwin.cxx | 4
vcl/unx/generic/gdi/cairotextrender.cxx | 2
wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.py | 8
writerfilter/inc/rtftok/RTFDocument.hxx | 3
writerfilter/source/dmapper/DomainMapper.cxx | 24
writerfilter/source/dmapper/DomainMapper_Impl.cxx | 16
writerfilter/source/dmapper/PropertyIds.cxx | 2
writerfilter/source/dmapper/PropertyIds.hxx | 2
writerfilter/source/dmapper/PropertyMap.cxx | 5
writerfilter/source/dmapper/PropertyMap.hxx | 2
writerfilter/source/filter/RtfFilter.cxx | 2
writerfilter/source/rtftok/rtfdocumentfactory.cxx | 5
writerfilter/source/rtftok/rtfdocumentimpl.cxx | 76
writerfilter/source/rtftok/rtfdocumentimpl.hxx | 6
writerfilter/source/rtftok/rtfsdrimport.cxx | 45
writerfilter/source/rtftok/rtfsdrimport.hxx | 2
xmloff/inc/txtflde.hxx | 1
xmloff/inc/txtfldi.hxx | 22
xmloff/source/core/xmltoken.cxx | 1
xmloff/source/style/XMLBackgroundImageContext.cxx | 3
xmloff/source/text/txtflde.cxx | 16
xmloff/source/text/txtfldi.cxx | 31
xmloff/source/text/txtimp.cxx | 2
xmloff/source/text/txtparae.cxx | 13
101 files changed, 2261 insertions(+), 1656 deletions(-)
New commits:
commit 9149e38a06df18a7a894a8180862415797bbe263
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Apr 22 14:10:38 2015 +0100
fix assert on export of ooo63141-1.doc to odt
if bAutoStyles is true then the mbDoSomething of the SvXMLElementExport is
false, and the ctor/dtor doesn't do anything so any attributes added to the
exporter are not cleared by the SvXMLElementExport dtor
so only add the attribute if bAutoStyles if false and might as well extend the
block to cover the use of SvXMLElementExport and use the other ctor which
defaults mbDoSomething on
Change-Id: If35cd35e902372562fd7e78b3f970d91fcec3c16
(cherry picked from commit bd75327c8bc1157036ca11db8c808dc7ceb2109e)
Reviewed-on: https://gerrit.libreoffice.org/16053
Reviewed-by: Andras Timar <andras.timar at collabora.com>
Tested-by: Andras Timar <andras.timar at collabora.com>
diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx
index cdc468c..5da84e0 100644
--- a/xmloff/source/text/txtparae.cxx
+++ b/xmloff/source/text/txtparae.cxx
@@ -2208,13 +2208,16 @@ void XMLTextParagraphExport::exportTextRangeEnumeration(
}
else if ( sType.equals( sAnnotationEnd ) )
{
- Reference<XNamed> xBookmark(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
- const OUString& rName = xBookmark->getName();
- if ( rName.getLength() > 0 )
+ if (!bAutoStyles)
{
- GetExport().AddAttribute(XML_NAMESPACE_OFFICE, XML_NAME, rName);
+ Reference<XNamed> xBookmark(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
+ const OUString& rName = xBookmark->getName();
+ if (!rName.isEmpty())
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_OFFICE, XML_NAME, rName);
+ }
+ SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_OFFICE, XML_ANNOTATION_END, false, false );
}
- SvXMLElementExport aElem( GetExport(), !bAutoStyles, XML_NAMESPACE_OFFICE, XML_ANNOTATION_END, false, false );
}
else if( sType.equals( sFrame ) )
{
commit 2590070e370aef29aa8ec517fd3d23b48808361c
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon May 18 07:38:32 2015 +0200
tdf#86814 RTF import: fix sometimes lost bold style
The problem was that commit 76c0d0abc89cd8948706083c2660b71a2dad670c
(RTF import: adapt getProperties() to createStyleProperties(),
2014-09-07) only made the character style sprms/attributes a flat list,
but not the paragraph style ones. Fixing that inconsistency avoids the
tokenizer adding unwanted default sprms, which cause the bold sprms go
away in the bugdoc.
Change-Id: I86bd1b26af18cd968375c9b39be9c8e71d51271f
(cherry picked from commit cbe79789a0fc9b80b2fd14a5abfe0973a2cb69dc)
Reviewed-on: https://gerrit.libreoffice.org/16051
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/sw/qa/extras/rtfimport/data/tdf86814.rtf b/sw/qa/extras/rtfimport/data/tdf86814.rtf
new file mode 100644
index 0000000..6fb394e
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/tdf86814.rtf
@@ -0,0 +1,8 @@
+{\rtf1
+{\stylesheet
+{\s0 Normal;}
+{\s23\sbasedon0\snext23\sl288\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb100\sa100\ltrpar\b\dbch\af10\langfe1049\dbch\af11\afs20\alang1025\ab\loch\f5\fs20\lang1049 Style 23;}
+}
+\pard\plain \s23\sl288\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb100\sa100\ltrpar\b\dbch\af10\langfe1049\dbch\af11\afs20\alang1025\ab\loch\f5\fs20\lang1049\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0
+{\b\langfe1049\dbch\af11\afs20\alang1025\ab\rtlch \ltrch\loch\fs20\lang1049 hello}
+\par}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 0a57d66..bfa13c5 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -2290,6 +2290,12 @@ DECLARE_RTFIMPORT_TEST(testTdf90260Par, "hello.rtf")
CPPUNIT_ASSERT_EQUAL(2, getParagraphs());
}
+DECLARE_RTFIMPORT_TEST(testTdf86814, "tdf86814.rtf")
+{
+ // This was awt::FontWeight::NORMAL, i.e. the first run wasn't bold, when it should be bold (applied paragraph style with direct formatting).
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD, getProperty<float>(getRun(getParagraph(1), 1), "CharWeight"));
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 0941d85..75978e4 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -417,6 +417,32 @@ void RTFDocumentImpl::setNeedSect(bool bNeedSect)
}
}
+/// Copy rProps to rStyleAttributes and rStyleSprms, but in case of nested sprms, copy their children as toplevel sprms/attributes.
+static void lcl_copyFlatten(RTFReferenceProperties& rProps, RTFSprms& rStyleAttributes, RTFSprms& rStyleSprms)
+{
+ for (RTFSprms::Iterator_t it = rProps.getSprms().begin(); it != rProps.getSprms().end(); ++it)
+ {
+ // createStyleProperties() puts properties to rPr, but here we need a flat list.
+ if (it->first == NS_ooxml::LN_CT_Style_rPr)
+ {
+ // rPr can have both attributes and SPRMs, copy over both types.
+ RTFSprms& rRPrSprms = it->second->getSprms();
+ for (RTFSprms::Iterator_t itRPrSprm = rRPrSprms.begin(); itRPrSprm != rRPrSprms.end(); ++itRPrSprm)
+ rStyleSprms.set(itRPrSprm->first, itRPrSprm->second);
+
+ RTFSprms& rRPrAttributes = it->second->getAttributes();
+ for (RTFSprms::Iterator_t itRPrAttribute = rRPrAttributes.begin(); itRPrAttribute != rRPrAttributes.end(); ++itRPrAttribute)
+ rStyleAttributes.set(itRPrAttribute->first, itRPrAttribute->second);
+ }
+ else
+ rStyleSprms.set(it->first, it->second);
+ }
+
+ RTFSprms& rAttributes = rProps.getAttributes();
+ for (RTFSprms::Iterator_t itAttr = rAttributes.begin(); itAttr != rAttributes.end(); ++itAttr)
+ rStyleAttributes.set(itAttr->first, itAttr->second);
+}
+
writerfilter::Reference<Properties>::Pointer_t RTFDocumentImpl::getProperties(RTFSprms& rAttributes, RTFSprms& rSprms)
{
int nStyle = 0;
@@ -431,34 +457,17 @@ writerfilter::Reference<Properties>::Pointer_t RTFDocumentImpl::getProperties(RT
// let's merge paragraph and character style properties here.
int nCharStyle = m_aStates.top().nCurrentCharacterStyleIndex;
RTFReferenceTable::Entries_t::iterator itChar = m_aStyleTableEntries.find(nCharStyle);
- RTFSprms aStyleSprms = rProps.getSprms();
- RTFSprms aStyleAttributes = rProps.getAttributes();
+ RTFSprms aStyleSprms;
+ RTFSprms aStyleAttributes;
+
+ // Ensure the paragraph style is a flat list.
+ lcl_copyFlatten(rProps, aStyleAttributes, aStyleSprms);
+
if (itChar != m_aStyleTableEntries.end())
{
// Found active character style, then update aStyleSprms/Attributes.
RTFReferenceProperties& rCharProps = *static_cast<RTFReferenceProperties*>(itChar->second.get());
- RTFSprms& rCharStyleSprms = rCharProps.getSprms();
- for (RTFSprms::Iterator_t itSprm = rCharStyleSprms.begin(); itSprm != rCharStyleSprms.end(); ++itSprm)
- {
- // createStyleProperties() puts properties to rPr, but here we need a flat list.
- if (itSprm->first == NS_ooxml::LN_CT_Style_rPr)
- {
- // rPr can have both attributes and SPRM's, copy over both types.
- RTFSprms& rRPrSprms = itSprm->second->getSprms();
- for (RTFSprms::Iterator_t itRPrSprm = rRPrSprms.begin(); itRPrSprm != rRPrSprms.end(); ++itRPrSprm)
- aStyleSprms.set(itRPrSprm->first, itRPrSprm->second);
-
- RTFSprms& rRPrAttributes = itSprm->second->getAttributes();
- for (RTFSprms::Iterator_t itRPrAttribute = rRPrAttributes.begin(); itRPrAttribute != rRPrAttributes.end(); ++itRPrAttribute)
- aStyleAttributes.set(itRPrAttribute->first, itRPrAttribute->second);
- }
- else
- aStyleSprms.set(itSprm->first, itSprm->second);
- }
-
- RTFSprms& rCharStyleAttributes = rCharProps.getAttributes();
- for (RTFSprms::Iterator_t itAttr = rCharStyleAttributes.begin(); itAttr != rCharStyleAttributes.end(); ++itAttr)
- aStyleAttributes.set(itAttr->first, itAttr->second);
+ lcl_copyFlatten(rCharProps, aStyleAttributes, aStyleSprms);
}
// Get rid of direct formatting what is already in the style.
commit f02e48a8c9466090c5cb43d8dcc51591fb8bd517
Author: Michael Stahl <mstahl at redhat.com>
Date: Tue Jun 2 15:30:28 2015 +0200
curl: disable rtmp support
configure will add a dependency on librtmp.so.0 if the development
package happens to be installed.
(cherry picked from commit f4844a9abebcb0451161625c42a1e2b48796102d)
curl: sigh... *actually* disable rtmp support
(cherry picked from commit 805f12dd51ea72deda8f5be5839a205640ba968d)
curl: disable loads more random stuff we don't need
(cherry picked from commit 0b8b96ed515eec0a560812be73d4c9742f26e23b)
Change-Id: I0f4bcd73f9e0e7307ca0556a5f6990631eb9f2c5
(cherry picked from commit df2e19ffa8840bc2fef5d56de5d6058f2b3c5ffb)
Reviewed-on: https://gerrit.libreoffice.org/16036
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>
diff --git a/external/curl/ExternalProject_curl.mk b/external/curl/ExternalProject_curl.mk
index 1a0a0a3..9a4a045 100644
--- a/external/curl/ExternalProject_curl.mk
+++ b/external/curl/ExternalProject_curl.mk
@@ -46,9 +46,12 @@ $(call gb_ExternalProject_get_state_target,curl,build):
$(if $(filter IOS,$(OS)),--with-darwinssl) \
$(if $(filter MACOSX,$(OS)),\
--with-darwinssl) \
- --without-ssl \
+ --without-ssl --without-gnutls --without-polarssl --without-cyassl --without-axtls \
--without-libidn --enable-ftp --enable-ipv6 --enable-http --disable-gopher \
--disable-file --disable-ldap --disable-telnet --disable-dict --without-libssh2 \
+ --without-librtmp --disable-ldaps --disable-tftp --disable-pop3 \
+ --disable-imap --disable-smtp --disable-manual --without-metalink \
+ --without-nghttp2 \
$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
$(if $(ENABLE_DEBUG),--enable-debug) \
commit eed31839fbc5beb9157beedf11e263634598bc22
Author: Philippe Jung <phil.jung at free.fr>
Date: Tue Jun 2 17:43:19 2015 +0200
tdf#91228 Fix Writer crash
Start Writer, Insert Image, Anchor as character, Go after
image, press enter, writer crash
This is because m_pAnchoredFly is not updated.
JoinPrev, JoinNext and SplitContentNode all rely on CutText with calls
InsertHint. InsertHint calls SetAnchor. SetAnchor calls Modify callback
except if "LockModify"ed. This patch ensures that, whatever the value of
LockModify, the references are kept correct.
Reviewed-on: https://gerrit.libreoffice.org/16041
Reviewed-by: Michael Stahl <mstahl at redhat.com>
Tested-by: Michael Stahl <mstahl at redhat.com>
(cherry picked from commit 9f01951b858453684f2622541af0eb85d4544fc6)
Signed-off-by: Michael Stahl <mstahl at redhat.com>
Conflicts:
sw/source/core/txtnode/thints.cxx
Change-Id: Id7254784c6954db4b542b2c4228b388fb924bbc2
diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx
index a03b391a7..37b0c26 100644
--- a/sw/source/core/txtnode/thints.cxx
+++ b/sw/source/core/txtnode/thints.cxx
@@ -1277,19 +1277,44 @@ bool SwTxtNode::InsertHint( SwTxtAttr * const pAttr, const SetAttrMode nMode )
{
SwTxtFlyCnt *pFly = (SwTxtFlyCnt *)pAttr;
SwFrmFmt* pFmt = pAttr->GetFlyCnt().GetFrmFmt();
+
+ // In order to maintain data coherency, if the hint is a fly
+ // moved from a text node to another, we have to remove it from
+ // the first textnode then to add it to the new (this) textnode
+ const SwFmtAnchor* pAnchor = 0;
+ pFmt->GetItemState( RES_ANCHOR, false,
+ reinterpret_cast<const SfxPoolItem**>(&pAnchor) );
+
+ SwIndex aIdx( this, pAttr->GetStart() );
+
+ bool bChangeFlyParentNode( false );
+ if (pAnchor &&
+ pAnchor->GetAnchorId() == FLY_AS_CHAR &&
+ pAnchor->GetCntntAnchor() &&
+ pAnchor->GetCntntAnchor()->nNode != *this)
+ {
+ assert(pAnchor->GetCntntAnchor()->nNode.GetNode().IsTxtNode());
+ SwTxtNode* textNode = pAnchor->GetCntntAnchor()->nNode.GetNode().GetTxtNode();
+
+ if ( textNode->IsModifyLocked() )
+ {
+ // Fly parent has changed but the FlyFormat is locked, so it will
+ // not be updated by SetAnchor (that calls Modify that updates
+ // relationships)
+ textNode->RemoveAnchoredFly( pFmt );
+ bChangeFlyParentNode = true;
+ }
+ }
+
if( !(nsSetAttrMode::SETATTR_NOTXTATRCHR & nInsMode) )
{
+
// Wir muessen zuerst einfuegen, da in SetAnchor()
// dem FlyFrm GetStart() uebermittelt wird.
//JP 11.05.98: falls das Anker-Attribut schon richtig
// gesetzt ist, dann korrigiere dieses nach dem Einfuegen
// des Zeichens. Sonst muesste das immer ausserhalb
// erfolgen (Fehleranfaellig !)
- const SwFmtAnchor* pAnchor = 0;
- pFmt->GetItemState( RES_ANCHOR, false,
- (const SfxPoolItem**)&pAnchor );
-
- SwIndex aIdx( this, pAttr->GetStart() );
const OUString c(GetCharOfTxtAttr(*pAttr));
OUString const ins( InsertText(c, aIdx, nInsertFlags) );
if (ins.isEmpty())
@@ -1353,6 +1378,11 @@ bool SwTxtNode::InsertHint( SwTxtAttr * const pAttr, const SetAttrMode nMode )
return false;
}
}
+
+ // Finish relationships update now that SetAnchor has fixed part of it.
+ if (bChangeFlyParentNode)
+ AddAnchoredFly( pFmt );
+
break;
}
commit e45880ff4fe49e6535face75b2265b2614083762
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon May 11 23:24:22 2015 +0200
tdf#70318 tdf#90260 writerfilter: pasted RTF documents may contain no \par
This is a squash of 3 commits, as the first doesn't build without the
second one.
First commit:
sw core is not yet adapted, will be done in the next commit.
(cherry picked from commit e702c78843e387d83fd9c8fbd1597cbe27e3e656)
Second commit:
Author: Mike Kaganski <mikekaganski at hotmail.com>
tdf#70318: don't forget to clean up second fake paragraph
RTF insert is made into an empty paragraph. To do that, two splits
are made before the insert, but only one is reverted afterwards.
This patch removes the second.
Also fixes a memory leak from unreleased heap object
The corresponding unit test is corrected. It was incorrect
because \par doesn't begin new paragraph; it only ends paragraph.
If a RTF is ended with \par } then no newline is added to its end.
The old unit test only worked because of the bug fixed by this
patch. Correct way of inserting new paragraph in the end of a RTF
is \par \par}
(cherry picked from commit 0ddd9f9ff45f61013ea18763eca4c68aedce6caa)
Third commit:
tdf#90260 testcase
(cherry picked from commit 8931abc0b9fded1ee78eca6bf28e8d2438a76add)
Conflicts:
writerfilter/source/filter/RtfFilter.cxx
writerfilter/source/rtftok/rtfdocumentfactory.cxx
writerfilter/source/rtftok/rtfdocumentimpl.cxx
sw/source/filter/rtf/swparrtf.cxx
Change-Id: If8da12427e0cdaced4c1c1776b9f0b8cbde5c57c
63d50a940d7960beb35f7d774c833ed8499acbef
06a5ff604e6782863c4a2d6e002c9d67d42912fb
Reviewed-on: https://gerrit.libreoffice.org/15963
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/sw/qa/extras/rtfimport/data/copypaste-footnote-paste.rtf b/sw/qa/extras/rtfimport/data/copypaste-footnote-paste.rtf
index 1f4a75e..a7c6bb2 100644
--- a/sw/qa/extras/rtfimport/data/copypaste-footnote-paste.rtf
+++ b/sw/qa/extras/rtfimport/data/copypaste-footnote-paste.rtf
@@ -1,3 +1,2 @@
{\rtf1
-bbb
-\par }
+bbb}
diff --git a/sw/qa/extras/rtfimport/data/tdf90260-nopar.rtf b/sw/qa/extras/rtfimport/data/tdf90260-nopar.rtf
new file mode 100644
index 0000000..c54eedd
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/tdf90260-nopar.rtf
@@ -0,0 +1,2 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1035{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
+\uc1\pard\sa200\sl276\slmult1\lang11\f0\fs22 simple}
diff --git a/sw/qa/extras/rtfimport/data/tdf90260-par.rtf b/sw/qa/extras/rtfimport/data/tdf90260-par.rtf
new file mode 100644
index 0000000..e2115b6
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/tdf90260-par.rtf
@@ -0,0 +1,2 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1035{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
+\uc1\pard\sa200\sl276\slmult1\lang11\f0\fs22 simple\par}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 535687f..0a57d66 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -2272,6 +2272,24 @@ DECLARE_RTFIMPORT_TEST(testTdf91074, "tdf91074.rtf")
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(COL_LIGHTRED), getProperty<table::BorderLine2>(xShape, "TopBorder").Color);
}
+DECLARE_RTFIMPORT_TEST(testTdf90260Nopar, "hello.rtf")
+{
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xText(xTextDocument->getText(), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xEnd = xText->getEnd();
+ paste("tdf90260-nopar.rtf", xEnd);
+ CPPUNIT_ASSERT_EQUAL(1, getParagraphs());
+}
+
+DECLARE_RTFIMPORT_TEST(testTdf90260Par, "hello.rtf")
+{
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xText(xTextDocument->getText(), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xEnd = xText->getEnd();
+ paste("tdf90260-par.rtf", xEnd);
+ CPPUNIT_ASSERT_EQUAL(2, getParagraphs());
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx
index b144f0b..51ff62682 100644
--- a/sw/source/filter/rtf/swparrtf.cxx
+++ b/sw/source/filter/rtf/swparrtf.cxx
@@ -56,7 +56,7 @@ sal_uLong SwRTFReader::Read( SwDoc &rDoc, const OUString& /*rBaseURL*/, SwPaM& r
// the end position.
const uno::Reference<text::XTextRange> xInsertPosition =
SwXTextRange::CreateXTextRange(rDoc, *rPam.GetPoint(), 0);
- SwNodeIndex *pSttNdIdx = new SwNodeIndex(rDoc.GetNodes());
+ std::shared_ptr<SwNodeIndex> pSttNdIdx(new SwNodeIndex(rDoc.GetNodes()));
const SwPosition* pPos = rPam.GetPoint();
// Step 2: Split once and remember the node that has been split.
@@ -65,6 +65,8 @@ sal_uLong SwRTFReader::Read( SwDoc &rDoc, const OUString& /*rBaseURL*/, SwPaM& r
// Step 3: Split again.
rDoc.getIDocumentContentOperations().SplitNode( *pPos, false );
+ std::shared_ptr<SwNodeIndex> pSttNdIdx2(new SwNodeIndex(rDoc.GetNodes()));
+ *pSttNdIdx2 = pPos->nNode.GetIndex();
// Step 4: Insert all content into the new node
rPam.Move( fnMoveBackward );
@@ -135,6 +137,27 @@ sal_uLong SwRTFReader::Read( SwDoc &rDoc, const OUString& /*rBaseURL*/, SwPaM& r
}
}
+ if (pSttNdIdx2->GetIndex())
+ {
+ // If we are in insert mode, join the split node that is after
+ // the new content with the last new node. Or in other words:
+ // Revert the second split node.
+ SwTxtNode* pTxtNode = pSttNdIdx2->GetNode().GetTxtNode();
+ SwNodeIndex aPrevIdx(*pSttNdIdx2);
+ if (pTxtNode && pTxtNode->CanJoinPrev(&aPrevIdx) && pSttNdIdx2->GetIndex() - 1 == aPrevIdx.GetIndex())
+ {
+ // If the last new node isn't empty, convert the node's text
+ // attributes into hints. Otherwise, set the new node's
+ // paragraph style at the next (empty) node.
+ SwTxtNode* pDelNd = aPrevIdx.GetNode().GetTxtNode();
+ if (pTxtNode->GetTxt().getLength())
+ pDelNd->FmtToTxtAttr(pTxtNode);
+ else
+ pTxtNode->ChgFmtColl(pDelNd->GetTxtColl());
+ pTxtNode->JoinPrev();
+ }
+ }
+
return ret;
}
diff --git a/writerfilter/inc/rtftok/RTFDocument.hxx b/writerfilter/inc/rtftok/RTFDocument.hxx
index 7f5391c..470760a 100644
--- a/writerfilter/inc/rtftok/RTFDocument.hxx
+++ b/writerfilter/inc/rtftok/RTFDocument.hxx
@@ -43,7 +43,8 @@ public:
css::uno::Reference<css::io::XInputStream> const& xInputStream,
css::uno::Reference<css::lang::XComponent> const& xDstDoc,
css::uno::Reference<css::frame::XFrame> const& xFrame,
- css::uno::Reference<css::task::XStatusIndicator> const& xStatusIndicator);
+ css::uno::Reference<css::task::XStatusIndicator> const& xStatusIndicator,
+ bool bIsNewDoc);
};
} // namespace rtftok
} // namespace writerfilter
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index e1c5954..612b208 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -2638,7 +2638,8 @@ void DomainMapper::lcl_endSectionGroup()
m_pImpl->ExecuteFrameConversion();
// First paragraph in a footnote doesn't count: that would create
// additional paragraphs before and after the real footnote content.
- if(m_pImpl->GetIsFirstParagraphInSection() && !m_pImpl->IsInFootOrEndnote())
+ // Also, when pasting, it's fine to not have any paragraph inside the document at all.
+ if (m_pImpl->GetIsFirstParagraphInSection() && !m_pImpl->IsInFootOrEndnote() && m_pImpl->IsNewDoc())
{
// This section has no paragraph at all (e.g. they are all actually in a frame).
// If this section has a page break, there would be nothing to apply to the page
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 040e228..0f404af 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -241,7 +241,9 @@ DomainMapper_Impl::DomainMapper_Impl(
DomainMapper_Impl::~DomainMapper_Impl()
{
ChainTextFrames();
- RemoveLastParagraph( );
+ // Don't remove last paragraph when pasting, sw expects that empty paragraph.
+ if (m_bIsNewDoc)
+ RemoveLastParagraph();
getTableManager( ).endLevel();
popTableManager( );
}
diff --git a/writerfilter/source/filter/RtfFilter.cxx b/writerfilter/source/filter/RtfFilter.cxx
index 6243818..c5d088f 100644
--- a/writerfilter/source/filter/RtfFilter.cxx
+++ b/writerfilter/source/filter/RtfFilter.cxx
@@ -115,7 +115,7 @@ sal_Bool RtfFilter::filter(const uno::Sequence< beans::PropertyValue >& aDescrip
writerfilter::Stream::Pointer_t pStream(
new writerfilter::dmapper::DomainMapper(m_xContext, xInputStream, m_xDstDoc, bRepairStorage, writerfilter::dmapper::DOCUMENT_RTF, xInsertTextRange, bIsNewDoc));
writerfilter::rtftok::RTFDocument::Pointer_t const pDocument(
- writerfilter::rtftok::RTFDocumentFactory::createDocument(m_xContext, xInputStream, m_xDstDoc, xFrame, xStatusIndicator));
+ writerfilter::rtftok::RTFDocumentFactory::createDocument(m_xContext, xInputStream, m_xDstDoc, xFrame, xStatusIndicator, bIsNewDoc));
pDocument->resolve(*pStream);
bResult = true;
#ifdef DEBUG_WRITERFILTER
diff --git a/writerfilter/source/rtftok/rtfdocumentfactory.cxx b/writerfilter/source/rtftok/rtfdocumentfactory.cxx
index 63cf33f..113dc31 100644
--- a/writerfilter/source/rtftok/rtfdocumentfactory.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentfactory.cxx
@@ -18,9 +18,10 @@ RTFDocument::Pointer_t RTFDocumentFactory::createDocument(css::uno::Reference< c
css::uno::Reference< css::io::XInputStream > const& xInputStream,
css::uno::Reference< css::lang::XComponent > const& xDstDoc,
css::uno::Reference< css::frame::XFrame > const& xFrame,
- css::uno::Reference< css::task::XStatusIndicator > const& xStatusIndicator)
+ css::uno::Reference< css::task::XStatusIndicator > const& xStatusIndicator,
+ bool bIsNewDoc)
{
- return RTFDocument::Pointer_t(new RTFDocumentImpl(xContext, xInputStream, xDstDoc, xFrame, xStatusIndicator));
+ return RTFDocument::Pointer_t(new RTFDocumentImpl(xContext, xInputStream, xDstDoc, xFrame, xStatusIndicator, bIsNewDoc));
}
} // namespace rtftok
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index b039ede..0941d85 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -212,7 +212,8 @@ RTFDocumentImpl::RTFDocumentImpl(uno::Reference<uno::XComponentContext> const& x
uno::Reference<io::XInputStream> const& xInputStream,
uno::Reference<lang::XComponent> const& xDstDoc,
uno::Reference<frame::XFrame> const& xFrame,
- uno::Reference<task::XStatusIndicator> const& xStatusIndicator)
+ uno::Reference<task::XStatusIndicator> const& xStatusIndicator,
+ bool bIsNewDoc)
: m_xContext(xContext),
m_xInputStream(xInputStream),
m_xDstDoc(xDstDoc),
@@ -272,7 +273,8 @@ RTFDocumentImpl::RTFDocumentImpl(uno::Reference<uno::XComponentContext> const& x
m_bHadPicture(false),
m_bHadSect(false),
m_nCellxMax(0),
- m_nListPictureId(0)
+ m_nListPictureId(0),
+ m_bIsNewDoc(bIsNewDoc)
{
OSL_ASSERT(xInputStream.is());
m_pInStream.reset(utl::UcbStreamHelper::CreateStream(xInputStream, true));
@@ -343,7 +345,7 @@ void RTFDocumentImpl::resolveSubstream(sal_Size nPos, Id nId, OUString& rIgnoreF
{
sal_Size nCurrent = Strm().Tell();
// Seek to header position, parse, then seek back.
- RTFDocumentImpl::Pointer_t pImpl(new RTFDocumentImpl(m_xContext, m_xInputStream, m_xDstDoc, m_xFrame, m_xStatusIndicator));
+ RTFDocumentImpl::Pointer_t pImpl(new RTFDocumentImpl(m_xContext, m_xInputStream, m_xDstDoc, m_xFrame, m_xStatusIndicator, m_bIsNewDoc));
pImpl->setSuperstream(this);
pImpl->setStreamType(nId);
pImpl->setIgnoreFirst(rIgnoreFirst);
@@ -572,7 +574,8 @@ void RTFDocumentImpl::sectBreak(bool bFinal = false)
bool bContinuous = pBreak.get() && pBreak->getInt() == static_cast<sal_Int32>(NS_ooxml::LN_Value_ST_SectionMark_continuous);
// If there is no paragraph in this section, then insert a dummy one, as required by Writer,
// unless this is the end of the doc, we had nothing since the last section break and this is not a continuous one.
- if (m_bNeedPar && !(bFinal && !m_bNeedSect && !bContinuous) && !isSubstream())
+ // Also, when pasting, it's fine to not have any paragraph inside the document at all.
+ if (m_bNeedPar && !(bFinal && !m_bNeedSect && !bContinuous) && !isSubstream() && m_bIsNewDoc)
dispatchSymbol(RTF_PAR);
// It's allowed to not have a non-table paragraph at the end of an RTF doc, add it now if required.
if (m_bNeedFinalPar && bFinal)
@@ -5831,7 +5834,7 @@ int RTFDocumentImpl::popState()
{
// \par means an empty paragraph at the end of footnotes/endnotes, but
// not in case of other substreams, like headers.
- if (m_bNeedCr && !(m_nStreamType == NS_ooxml::LN_footnote || m_nStreamType == NS_ooxml::LN_endnote))
+ if (m_bNeedCr && !(m_nStreamType == NS_ooxml::LN_footnote || m_nStreamType == NS_ooxml::LN_endnote) && m_bIsNewDoc)
dispatchSymbol(RTF_PAR);
if (m_bNeedSect) // may be set by dispatchSymbol above!
sectBreak(true);
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
index 85af01f..6500eaa 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
@@ -329,7 +329,8 @@ public:
css::uno::Reference<css::io::XInputStream> const& xInputStream,
css::uno::Reference<css::lang::XComponent> const& xDstDoc,
css::uno::Reference<css::frame::XFrame> const& xFrame,
- css::uno::Reference<css::task::XStatusIndicator> const& xStatusIndicator);
+ css::uno::Reference<css::task::XStatusIndicator> const& xStatusIndicator,
+ bool bIsNewDoc);
virtual ~RTFDocumentImpl();
// RTFDocument
@@ -587,6 +588,9 @@ private:
int m_nCellxMax;
/// ID of the next \listlevel picture.
int m_nListPictureId;
+
+ /// New document means not pasting into an existing one.
+ bool m_bIsNewDoc;
};
} // namespace rtftok
} // namespace writerfilter
commit 51b0f3592f8044a42e13ede9a5aae15152182b75
Author: Eike Rathke <erack at redhat.com>
Date: Mon Jun 1 16:25:06 2015 +0200
Resolves: tdf#91420 "Jan1, 2015" is a valid date
Regression introduced with 43624d9370c4384f71c6b13fed900eaec222cf64 that
fixed tdf#34724
Change-Id: I44b5eac6e4ce5a38855148efecea5f2a987ed213
(cherry picked from commit fe2c7b25152df4c89e44c6516081d43d68075736)
Reviewed-on: https://gerrit.libreoffice.org/16018
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/svl/source/numbers/zforfind.cxx b/svl/source/numbers/zforfind.cxx
index fab73b4..ce6d0e0 100644
--- a/svl/source/numbers/zforfind.cxx
+++ b/svl/source/numbers/zforfind.cxx
@@ -2101,7 +2101,9 @@ bool ImpSvNumberInputScan::ScanStartString( const OUString& rString,
short nTempMonth = GetMonth(rString, nPos);
if ( nTempMonth ) // month (Jan 1)?
{
- if (nPos < rString.getLength()) // Jan1 without separator is not a date
+ // Jan1 without separator is not a date, unless it is followed by a
+ // separator and a (year) number.
+ if (nPos < rString.getLength() || (nAnzStrings >= 4 && nAnzNums >= 2))
{
eScannedType = NUMBERFORMAT_DATE; // !!! it IS a date !!!
nMonth = nTempMonth;
@@ -2144,7 +2146,9 @@ bool ImpSvNumberInputScan::ScanStartString( const OUString& rString,
nTempMonth = GetMonth(rString, nPos);
if ( nTempMonth ) // month (Jan 1)?
{
- if (nPos < rString.getLength()) // Jan1 without separator is not a date
+ // Jan1 without separator is not a date, unless it is followed by a
+ // separator and a (year) number.
+ if (nPos < rString.getLength() || (nAnzStrings >= 4 && nAnzNums >= 2))
{
nMonth = nTempMonth;
nMonthPos = 1; // month a the beginning
commit b80b0e52a67e16712a81bf709894157ce84a90d2
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Wed May 27 17:29:39 2015 +0200
Support Azul Zulu JRE (at least on Windows)
(<http://www.azulsystems.com/products/zulu/downloads> also offers it for Linux
and Mac OS X, so it could be added to more javavendors_*.xml if need be; I only
checked it actually works with a Windows 64-bit LO build)
Change-Id: If549a0d5bf1459eba2f6ba2bd545cfd55a20cea6
(cherry picked from commit 0f95f8ffd7a3685ca53876005a9c96f2e2e7bc99)
Reviewed-on: https://gerrit.libreoffice.org/15971
Reviewed-by: Michael Stahl <mstahl at redhat.com>
Tested-by: Michael Stahl <mstahl at redhat.com>
diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml
index 4f76089..b1ad4e4 100644
--- a/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml
+++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml
@@ -32,6 +32,9 @@
<vendor name="IBM Corporation">
<minVersion>1.5.0</minVersion>
</vendor>
+ <vendor name="Azul Systems, Inc.">
+ <minVersion>1.6.0</minVersion>
+ </vendor>
</vendorInfos>
</javaSelection>
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx b/jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx
index 549f7d5..5809522 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx
@@ -55,7 +55,8 @@ char const* const* OtherInfo::getRuntimePaths(int * size)
"/bin/client/jvm.dll",
"/bin/hotspot/jvm.dll",
"/bin/classic/jvm.dll",
- "/bin/jrockit/jvm.dll"
+ "/bin/jrockit/jvm.dll",
+ "/bin/server/jvm.dll" // needed by Azul
#elif defined UNX
#ifdef MACOSX
"/../../../../../Frameworks/JavaVM.framework/JavaVM", //as of 1.6.0_22
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/vendorlist.cxx b/jvmfwk/plugins/sunmajor/pluginlib/vendorlist.cxx
index ee4d6d0..a1ee9ff 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/vendorlist.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/vendorlist.cxx
@@ -50,6 +50,7 @@ BEGIN_VENDOR_MAP()
VENDOR_MAP_ENTRY("Free Software Foundation, Inc.", GnuInfo)
VENDOR_MAP_ENTRY("The FreeBSD Foundation", OtherInfo)
#endif
+ VENDOR_MAP_ENTRY("Azul Systems, Inc.", OtherInfo)
END_VENDOR_MAP()
commit c10b41456976b0d18a8cf73cf681ff3df9f19bc4
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri May 29 14:25:23 2015 +0200
Support Azul Zulu JRE on Linux and Mac OS X, too
Change-Id: I317506319b91daf006a0ba79874ff265ba6ed4da
(cherry picked from commit 8541b178f4155c8d72a876245433a1aaf3d2634f)
Reviewed-on: https://gerrit.libreoffice.org/15972
Reviewed-by: Michael Stahl <mstahl at redhat.com>
Tested-by: Michael Stahl <mstahl at redhat.com>
diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml
index 1c8c8bd..943b2ce 100644
--- a/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml
+++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml
@@ -41,6 +41,9 @@
<vendor name="BEA Systems, Inc.">
<minVersion>1.5.0</minVersion>
</vendor>
+ <vendor name="Azul Systems, Inc.">
+ <minVersion>1.6.0</minVersion>
+ </vendor>
</vendorInfos>
</javaSelection>
diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml
index e2925ee..ee5d093 100644
--- a/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml
+++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml
@@ -32,6 +32,9 @@
<vendor name="Oracle Corporation">
<minVersion>1.7.0</minVersion>
</vendor>
- </vendorInfos>
+ <vendor name="Azul Systems, Inc.">
+ <minVersion>1.6.0</minVersion>
+ </vendor>
+</vendorInfos>
</javaSelection>
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx b/jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx
index 07f9c0c..549f7d5 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx
@@ -58,7 +58,8 @@ char const* const* OtherInfo::getRuntimePaths(int * size)
"/bin/jrockit/jvm.dll"
#elif defined UNX
#ifdef MACOSX
- "/../../../../../Frameworks/JavaVM.framework/JavaVM" //as of 1.6.0_22
+ "/../../../../../Frameworks/JavaVM.framework/JavaVM", //as of 1.6.0_22
+ "/lib/server/libjvm.dylib" // needed by Azul
#else
"/lib/" JFW_PLUGIN_ARCH "/client/libjvm.so", // for Blackdown PPC
"/lib/" JFW_PLUGIN_ARCH "/server/libjvm.so", // for Blackdown AMD64
commit e9eaf2bdab783d0a13de0d2a35df155770d73a42
Author: Chr. Rossmanith <ChrRossmanith at gmx.de>
Date: Tue Feb 3 22:29:31 2015 +0100
tdf#65788: svg export - put transform attribute into text element
if transform is put into an inner tspan element rotated text isn't rendered rotated
Reviewed-on: https://gerrit.libreoffice.org/14314
Reviewed-by: Katarina Behrens <bubli at bubli.org>
Tested-by: Katarina Behrens <bubli at bubli.org>
(cherry picked from commit cacc3a0e7f7b04240daf63b45e457428388f4929)
Change-Id: I6fcab1db0e213c65fe8ba88a7694fd10c902bfec
Reviewed-on: https://gerrit.libreoffice.org/15994
Tested-by: David Tardon <dtardon at redhat.com>
Reviewed-by: David Tardon <dtardon at redhat.com>
diff --git a/filter/source/svg/svgwriter.cxx b/filter/source/svg/svgwriter.cxx
index 89ae3e3..a63210d 100644
--- a/filter/source/svg/svgwriter.cxx
+++ b/filter/source/svg/svgwriter.cxx
@@ -1157,6 +1157,22 @@ void SVGTextWriter::startTextShape()
mbIsTextShapeStarted = true;
maParentFont = vcl::Font();
mrExport.AddAttribute( XML_NAMESPACE_NONE, "class", "TextShape" );
+
+ // if text is rotated, set transform matrix at text element
+ const vcl::Font& rFont = mpVDev->GetFont();
+ if( rFont.GetOrientation() )
+ {
+ Point aRot( maTextPos );
+ OUString aTransform =
+ "translate(" + OUString::number( aRot.X() ) +
+ "," + OUString::number( aRot.Y() ) + ") rotate(" +
+ OUString::number( rFont.GetOrientation() * -0.1 ) +
+ ") translate(" + OUString::number( -aRot.X() ) +
+ "," + OUString::number( -aRot.Y() ) + ")";
+
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrTransform, aTransform );
+ }
+
mpTextShapeElem = new SvXMLElementExport( mrExport, XML_NAMESPACE_NONE, aXMLElemText, true, mbIWS );
startTextParagraph();
}
@@ -1245,21 +1261,6 @@ void SVGTextWriter::startTextPosition( bool bExportX, bool bExportY )
if( bExportY )
mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY, OUString::number( maTextPos.Y() ) );
- // if text is rotated, set transform matrix at new tspan element
- const vcl::Font& rFont = mpVDev->GetFont();
- if( rFont.GetOrientation() )
- {
- Point aRot( maTextPos );
- OUString aTransform =
- OUString("translate(") + OUString::number( aRot.X() ) +
- "," + OUString::number( aRot.Y() ) + ") rotate(" +
- OUString::number( rFont.GetOrientation() * -0.1 ) +
- ") translate(" + OUString::number( -aRot.X() ) +
- "," + OUString::number( -aRot.Y() ) + ")";
-
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrTransform, aTransform );
- }
-
mpTextPositionElem = new SvXMLElementExport( mrExport, XML_NAMESPACE_NONE, aXMLElemTspan, mbIWS, mbIWS );
}
commit 4d85b6009835be6c8e131ee124de63a986ff0032
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon May 11 09:05:12 2015 +0200
tdf#91074 RTF import: handle \dplineco* for text frames
RTFSdrImport::resolve() already had the logic to use the relevant API
depending on if the shape is a text frame or not -- extract that to a
separate member function and use it from RTFDocumentImpl::popState(),
too.
(cherry picked from commit ec1a96e79e3e6225706151cb72eb3df763b0598d)
Conflicts:
sw/qa/extras/rtfimport/rtfimport.cxx
writerfilter/source/rtftok/rtfsdrimport.cxx
writerfilter/source/rtftok/rtfsdrimport.hxx
Change-Id: I663b372244f09f002447ece62587143b2a575795
Reviewed-on: https://gerrit.libreoffice.org/15939
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/sw/qa/extras/rtfimport/data/tdf91074.rtf b/sw/qa/extras/rtfimport/data/tdf91074.rtf
new file mode 100644
index 0000000..ff3fe9b
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/tdf91074.rtf
@@ -0,0 +1,7 @@
+{\rtf1\ansi\ansicpg1252\deff0\deftab720
+{\*\do\dobxpage\dobypage\dodhgt8192\dptxbx
+{\dptxbxtext\pard\plain
+inner\par }
+\dpx674\dpy725\dpxsize1875\dpysize1020\dplinecor255\dplinecog0\dplinecob0\dplinew40\dpfillfgcr0\dpfillfgcg0\dpfillfgcb0\dpfillbgcr0\dpfillbgcg0\dpfillbgcb0\dpfillpat0}
+\par
+outer\par}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 6c52362..535687f 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -2265,6 +2265,13 @@ DECLARE_RTFIMPORT_TEST(testTdf86182, "tdf86182.rtf")
CPPUNIT_ASSERT_EQUAL(text::WritingMode2::RL_TB, getProperty<sal_Int16>(getParagraph(1), "WritingMode"));
}
+DECLARE_RTFIMPORT_TEST(testTdf91074, "tdf91074.rtf")
+{
+ // The file failed to load, as the border color was imported using the LineColor UNO property.
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(COL_LIGHTRED), getProperty<table::BorderLine2>(xShape, "TopBorder").Color);
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index ad9954b..b039ede 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -5541,7 +5541,11 @@ int RTFDocumentImpl::popState()
xShape->setSize(awt::Size(rDrawing.nRight, rDrawing.nBottom));
if (rDrawing.bHasLineColor)
- xPropertySet->setPropertyValue("LineColor", uno::makeAny(sal_uInt32((rDrawing.nLineColorR<<16) + (rDrawing.nLineColorG<<8) + rDrawing.nLineColorB)));
+ {
+ uno::Any aLineColor = uno::makeAny(sal_uInt32((rDrawing.nLineColorR<<16) + (rDrawing.nLineColorG<<8) + rDrawing.nLineColorB));
+ uno::Any aLineWidth;
+ RTFSdrImport::resolveLineColorAndWidth(bTextFrame, xPropertySet, aLineColor, aLineWidth);
+ }
if (rDrawing.bHasFillColor)
xPropertySet->setPropertyValue("FillColor", uno::makeAny(sal_uInt32((rDrawing.nFillColorR<<16) + (rDrawing.nFillColorG<<8) + rDrawing.nFillColorB)));
else if (!bTextFrame)
diff --git a/writerfilter/source/rtftok/rtfsdrimport.cxx b/writerfilter/source/rtftok/rtfsdrimport.cxx
index 7969b0b..1ebaf46 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.cxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.cxx
@@ -128,6 +128,31 @@ void RTFSdrImport::resolveDhgt(uno::Reference<beans::XPropertySet> const& xPrope
pHelper->addItem(xPropertySet, nZOrder);
}
+void RTFSdrImport::resolveLineColorAndWidth(bool bTextFrame, const uno::Reference<beans::XPropertySet>& xPropertySet, uno::Any& rLineColor, uno::Any& rLineWidth)
+{
+ if (!bTextFrame)
+ {
+ xPropertySet->setPropertyValue("LineColor", rLineColor);
+ xPropertySet->setPropertyValue("LineWidth", rLineWidth);
+ }
+ else
+ {
+ static const char* aBorders[] =
+ {
+ "TopBorder", "LeftBorder", "BottomBorder", "RightBorder"
+ };
+ for (unsigned int i = 0; i < SAL_N_ELEMENTS(aBorders); ++i)
+ {
+ table::BorderLine2 aBorderLine = xPropertySet->getPropertyValue(OUString::createFromAscii(aBorders[i])).get<table::BorderLine2>();
+ if (rLineColor.hasValue())
+ aBorderLine.Color = rLineColor.get<sal_Int32>();
+ if (rLineWidth.hasValue())
+ aBorderLine.LineWidth = rLineWidth.get<sal_Int32>();
+ xPropertySet->setPropertyValue(OUString::createFromAscii(aBorders[i]), uno::makeAny(aBorderLine));
+ }
+ }
+}
+
void RTFSdrImport::resolveFLine(uno::Reference<beans::XPropertySet> const& xPropertySet,
sal_Int32 const nFLine)
{
@@ -752,25 +777,7 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose, ShapeOrPict const shap
if (xPropertySet.is())
{
- if (!m_bTextFrame)
- {
- xPropertySet->setPropertyValue("LineColor", aLineColor);
- xPropertySet->setPropertyValue("LineWidth", aLineWidth);
- }
- else
- {
- static const OUString aBorders[] =
- {
- OUString("TopBorder"), OUString("LeftBorder"), OUString("BottomBorder"), OUString("RightBorder")
- };
- for (unsigned int i = 0; i < SAL_N_ELEMENTS(aBorders); ++i)
- {
- table::BorderLine2 aBorderLine = xPropertySet->getPropertyValue(aBorders[i]).get<table::BorderLine2>();
- aBorderLine.Color = aLineColor.get<sal_Int32>();
- aBorderLine.LineWidth = aLineWidth.get<sal_Int32>();
- xPropertySet->setPropertyValue(aBorders[i], uno::makeAny(aBorderLine));
- }
- }
+ resolveLineColorAndWidth(m_bTextFrame, xPropertySet, aLineColor, aLineWidth);
if (rShape.oZ)
resolveDhgt(xPropertySet, *rShape.oZ, /*bOldStyle=*/false);
if (m_bTextFrame)
diff --git a/writerfilter/source/rtftok/rtfsdrimport.hxx b/writerfilter/source/rtftok/rtfsdrimport.hxx
index 8135ada..53da0ee 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.hxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.hxx
@@ -32,6 +32,8 @@ public:
/// Append property on the current parent.
void appendGroupProperty(const OUString& aKey, const OUString& aValue);
void resolveDhgt(css::uno::Reference<css::beans::XPropertySet> const& xPropertySet, sal_Int32 nZOrder, bool bOldStyle);
+ /// Set line color and line width on the shape, using the relevant API depending on if the shape is a text frame or not.
+ static void resolveLineColorAndWidth(bool bTextFrame, const css::uno::Reference<css::beans::XPropertySet>& xPropertySet, css::uno::Any& rLineColor, css::uno::Any& rLineWidth);
void resolveFLine(css::uno::Reference<css::beans::XPropertySet> const& xPropertySet, sal_Int32 nFLine);
/**
* These are the default in Word, but not in Writer.
commit 76920b35083e96053ba1fc661dfd7b25af373836
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 27 17:24:13 2015 +0100
Resolves: tdf#91403 no wrtshell during initial layout
(cherry picked from commit ff44502d836880d2bdb057e7fdfd9b5abeb87842)
(cherry picked from commit cf851cda7c943548d0ce60d0b4836ccbf6e76698)
Change-Id: I0d0b8027e07f9dc2dfff584abd026d1b496d93dd
Reviewed-on: https://gerrit.libreoffice.org/15933
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>
diff --git a/sw/source/ui/fldui/fldref.cxx b/sw/source/ui/fldui/fldref.cxx
index 360c080c..1244308 100644
--- a/sw/source/ui/fldui/fldref.cxx
+++ b/sw/source/ui/fldui/fldref.cxx
@@ -183,9 +183,12 @@ void SwFldRefPage::Reset(const SfxItemSet* )
// fill up with the sequence types
SwWrtShell *pSh = GetWrtShell();
- if(!pSh)
+ if (!pSh)
pSh = ::GetActiveWrtShell();
+ if (!pSh)
+ return;
+
const sal_uInt16 nFldTypeCnt = pSh->GetFldTypeCount(RES_SETEXPFLD);
for (sal_uInt16 n = 0; n < nFldTypeCnt; ++n)
commit dde2af2aaa81eacf25bb535d1d67d9ee7ebd62ce
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 27 16:20:34 2015 +0100
Resolves: tdf#89731 numberingChange feature not available in writer
Change-Id: Ie779e78fc3c7ccf717117513d9187697c22cc51a
(cherry picked from commit 0123bbbc4d07fd7d6c233f67139984ab3cd4555d)
Reviewed-on: https://gerrit.libreoffice.org/15932
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 3e7e4af..040e228 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -4700,8 +4700,10 @@ void DomainMapper_Impl::SetCurrentRedlineAuthor( const OUString& sAuthor )
{
if (!m_xAnnotationField.is())
{
- assert( m_currentRedline.get());
- m_currentRedline->m_sAuthor = sAuthor;
+ if (m_currentRedline.get())
+ m_currentRedline->m_sAuthor = sAuthor;
+ else
+ SAL_INFO("writerfilter.dmapper", "numberingChange not implemented");
}
else
m_xAnnotationField->setPropertyValue("Author", uno::makeAny(sAuthor));
@@ -4717,8 +4719,10 @@ void DomainMapper_Impl::SetCurrentRedlineDate( const OUString& sDate )
{
if (!m_xAnnotationField.is())
{
- assert( m_currentRedline.get());
- m_currentRedline->m_sDate = sDate;
+ if (m_currentRedline.get())
+ m_currentRedline->m_sDate = sDate;
+ else
+ SAL_INFO("writerfilter.dmapper", "numberingChange not implemented");
}
else
m_xAnnotationField->setPropertyValue("DateTimeValue", uno::makeAny(ConversionHelper::ConvertDateStringToDateTime(sDate)));
commit 887295c121ac31c928f56599c2444abd259e5658
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 27 15:39:12 2015 +0100
wrong comparison in letter wizard
the file name widget is empty when it shouldn't be.
the other wizards get this right
Change-Id: Icdb629e676a73fcf8d8be4352818abbef455bbaf
(cherry picked from commit a3727ad62b7c1a30f9b0531042cce5ce5b8c6089)
Reviewed-on: https://gerrit.libreoffice.org/15931
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>
diff --git a/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.py b/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.py
index d8598ff..f4a16e2 100644
--- a/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.py
+++ b/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.py
@@ -123,7 +123,7 @@ class LetterWizardDialogImpl(LetterWizardDialog):
self.myConfig.cp_PrivateLetter.cp_Salutation = \
self.resources.SalutationLabels[2]
- if self.myPathSelection.xSaveTextBox.Text.lower():
+ if self.myPathSelection.xSaveTextBox.Text.lower() == "":
self.myPathSelection.initializePath()
xContainerWindow = self.myLetterDoc.xFrame.ContainerWindow
@@ -256,7 +256,7 @@ class LetterWizardDialogImpl(LetterWizardDialog):
self.lstBusinessStyleItemChanged()
self.enableSenderReceiver()
self.setPossibleFooter(True)
- if self.myPathSelection.xSaveTextBox.Text.lower():
+ if self.myPathSelection.xSaveTextBox.Text.lower() == "":
self.myPathSelection.initializePath()
def optPrivOfficialLetterItemChanged(self):
@@ -273,7 +273,7 @@ class LetterWizardDialogImpl(LetterWizardDialog):
self.disableBusinessPaper()
self.disableSenderReceiver()
self.setPossibleFooter(True)
- if self.myPathSelection.xSaveTextBox.Text.lower():
+ if self.myPathSelection.xSaveTextBox.Text.lower() == "":
self.myPathSelection.initializePath()
self.myLetterDoc.fillSenderWithUserData()
@@ -291,7 +291,7 @@ class LetterWizardDialogImpl(LetterWizardDialog):
self.disableBusinessPaper()
self.disableSenderReceiver()
self.setPossibleFooter(False)
- if self.myPathSelection.xSaveTextBox.Text.lower():
+ if self.myPathSelection.xSaveTextBox.Text.lower() == "":
self.myPathSelection.initializePath()
def optSenderPlaceholderItemChanged(self):
commit 1387858899a0710fbc25886c5a3924a14250c42b
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 27 12:06:36 2015 +0100
fix build
Change-Id: Ie620107c7ce3ca7a3235adc296daf964a78f0540
diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx
index c51ee4a..af9830c 100644
--- a/vcl/generic/glyphs/gcach_layout.cxx
+++ b/vcl/generic/glyphs/gcach_layout.cxx
@@ -446,7 +446,7 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
int32_t nCharPos = pHbGlyphInfos[i].cluster;
// tdf#89231 if it's just a missing non-breaking space, then use a normal space
- if (!nGlyphIndex && (SalLayoutFlags::ForFallback & rArgs.mnFlags) && nCharPos >= 0 && rArgs.mpStr[nCharPos] == 0x202F)
+ if (!nGlyphIndex && (SAL_LAYOUT_FOR_FALLBACK & rArgs.mnFlags) && nCharPos >= 0 && rArgs.mpStr[nCharPos] == 0x202F)
{
nGlyphIndex = rFont.GetGlyphIndex(' ');
}
commit 338e12b3ada80063b4be876dd87b7b2f5587824d
Author: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Date: Sun May 24 11:53:59 2015 +0200
Fix tdf#87509 - default sdr attribute is special object.
The drawinglayer attributes signal defaultness by object identity, not
value equalness. That should fix a number of subtle cache and redraw
problems.
Change-Id: I049ffda228a48db71cef108571805c6e41e4b149
(cherry picked from commit 551c204740a37c8dbc7acd35bc9fe683ade3fe80)
Reviewed-on: https://gerrit.libreoffice.org/15922
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
Tested-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
diff --git a/drawinglayer/source/attribute/fillgradientattribute.cxx b/drawinglayer/source/attribute/fillgradientattribute.cxx
index 2689d07..497817e 100644
--- a/drawinglayer/source/attribute/fillgradientattribute.cxx
+++ b/drawinglayer/source/attribute/fillgradientattribute.cxx
@@ -142,6 +142,10 @@ namespace drawinglayer
bool FillGradientAttribute::operator==(const FillGradientAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpFillGradientAttribute == mpFillGradientAttribute;
}
diff --git a/drawinglayer/source/attribute/fillgraphicattribute.cxx b/drawinglayer/source/attribute/fillgraphicattribute.cxx
index bd7b98e..89422be 100644
--- a/drawinglayer/source/attribute/fillgraphicattribute.cxx
+++ b/drawinglayer/source/attribute/fillgraphicattribute.cxx
@@ -120,6 +120,10 @@ namespace drawinglayer
bool FillGraphicAttribute::operator==(const FillGraphicAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpFillGraphicAttribute == mpFillGraphicAttribute;
}
diff --git a/drawinglayer/source/attribute/fillhatchattribute.cxx b/drawinglayer/source/attribute/fillhatchattribute.cxx
index 9e3adc7..f54db08 100644
--- a/drawinglayer/source/attribute/fillhatchattribute.cxx
+++ b/drawinglayer/source/attribute/fillhatchattribute.cxx
@@ -131,6 +131,10 @@ namespace drawinglayer
bool FillHatchAttribute::operator==(const FillHatchAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpFillHatchAttribute == mpFillHatchAttribute;
}
diff --git a/drawinglayer/source/attribute/lineattribute.cxx b/drawinglayer/source/attribute/lineattribute.cxx
index 6cf96e1..6d22e56 100644
--- a/drawinglayer/source/attribute/lineattribute.cxx
+++ b/drawinglayer/source/attribute/lineattribute.cxx
@@ -118,6 +118,10 @@ namespace drawinglayer
bool LineAttribute::operator==(const LineAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpLineAttribute == mpLineAttribute;
}
diff --git a/drawinglayer/source/attribute/linestartendattribute.cxx b/drawinglayer/source/attribute/linestartendattribute.cxx
index f11e66f..f3a0822 100644
--- a/drawinglayer/source/attribute/linestartendattribute.cxx
+++ b/drawinglayer/source/attribute/linestartendattribute.cxx
@@ -110,6 +110,10 @@ namespace drawinglayer
bool LineStartEndAttribute::operator==(const LineStartEndAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpLineStartEndAttribute == mpLineStartEndAttribute;
}
diff --git a/drawinglayer/source/attribute/sdrfillattribute.cxx b/drawinglayer/source/attribute/sdrfillattribute.cxx
index aacfa87..2ad96fe 100644
--- a/drawinglayer/source/attribute/sdrfillattribute.cxx
+++ b/drawinglayer/source/attribute/sdrfillattribute.cxx
@@ -126,6 +126,10 @@ namespace drawinglayer
bool SdrFillAttribute::operator==(const SdrFillAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpSdrFillAttribute == mpSdrFillAttribute;
}
diff --git a/drawinglayer/source/attribute/sdrfillgraphicattribute.cxx b/drawinglayer/source/attribute/sdrfillgraphicattribute.cxx
index 2e7f05e..a2f7576 100644
--- a/drawinglayer/source/attribute/sdrfillgraphicattribute.cxx
+++ b/drawinglayer/source/attribute/sdrfillgraphicattribute.cxx
@@ -161,6 +161,10 @@ namespace drawinglayer
bool SdrFillGraphicAttribute::operator==(const SdrFillGraphicAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpSdrFillGraphicAttribute == mpSdrFillGraphicAttribute;
}
diff --git a/drawinglayer/source/attribute/sdrlightingattribute3d.cxx b/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
index 9e3f809..43b4b94 100644
--- a/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
+++ b/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
@@ -102,6 +102,10 @@ namespace drawinglayer
bool SdrLightingAttribute::operator==(const SdrLightingAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpSdrLightingAttribute == mpSdrLightingAttribute;
}
diff --git a/drawinglayer/source/attribute/sdrlineattribute.cxx b/drawinglayer/source/attribute/sdrlineattribute.cxx
index 5afcac0..f1842fa 100644
--- a/drawinglayer/source/attribute/sdrlineattribute.cxx
+++ b/drawinglayer/source/attribute/sdrlineattribute.cxx
@@ -142,6 +142,10 @@ namespace drawinglayer
bool SdrLineAttribute::operator==(const SdrLineAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpSdrLineAttribute == mpSdrLineAttribute;
}
diff --git a/drawinglayer/source/attribute/sdrlinestartendattribute.cxx b/drawinglayer/source/attribute/sdrlinestartendattribute.cxx
index 20aa45d..b64f98c 100644
--- a/drawinglayer/source/attribute/sdrlinestartendattribute.cxx
+++ b/drawinglayer/source/attribute/sdrlinestartendattribute.cxx
@@ -144,6 +144,10 @@ namespace drawinglayer
bool SdrLineStartEndAttribute::operator==(const SdrLineStartEndAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpSdrLineStartEndAttribute == mpSdrLineStartEndAttribute;
}
diff --git a/drawinglayer/source/attribute/sdrsceneattribute3d.cxx b/drawinglayer/source/attribute/sdrsceneattribute3d.cxx
index 5776d20..a873440 100644
--- a/drawinglayer/source/attribute/sdrsceneattribute3d.cxx
+++ b/drawinglayer/source/attribute/sdrsceneattribute3d.cxx
@@ -123,6 +123,10 @@ namespace drawinglayer
bool SdrSceneAttribute::operator==(const SdrSceneAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpSdrSceneAttribute == mpSdrSceneAttribute;
}
diff --git a/drawinglayer/source/attribute/sdrshadowattribute.cxx b/drawinglayer/source/attribute/sdrshadowattribute.cxx
index 9630593..907423a 100644
--- a/drawinglayer/source/attribute/sdrshadowattribute.cxx
+++ b/drawinglayer/source/attribute/sdrshadowattribute.cxx
@@ -109,6 +109,10 @@ namespace drawinglayer
bool SdrShadowAttribute::operator==(const SdrShadowAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return mpSdrShadowAttribute == rCandidate.mpSdrShadowAttribute;
}
diff --git a/drawinglayer/source/attribute/strokeattribute.cxx b/drawinglayer/source/attribute/strokeattribute.cxx
index 08445b0..efbcc5d 100644
--- a/drawinglayer/source/attribute/strokeattribute.cxx
+++ b/drawinglayer/source/attribute/strokeattribute.cxx
@@ -110,6 +110,10 @@ namespace drawinglayer
bool StrokeAttribute::operator==(const StrokeAttribute& rCandidate) const
{
+ // tdf#87509 default attr is always != non-default attr, even with same values
+ if(rCandidate.isDefault() != isDefault())
+ return false;
+
return rCandidate.mpStrokeAttribute == mpStrokeAttribute;
}
commit ac250f5ce5a1edd3789efe8242236bdb979f64cc
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue May 26 15:45:30 2015 +0100
Resolves: tdf#89231 if no font has 0x202F fallback to a normal space
Change-Id: I2325c0b09ccf66ee15597251ad027b295de5502f
(cherry picked from commit f76ecc3e9ce51b35fc18db55b808270079a3652b)
Reviewed-on: https://gerrit.libreoffice.org/15912
Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx
index b29627d..c51ee4a 100644
--- a/vcl/generic/glyphs/gcach_layout.cxx
+++ b/vcl/generic/glyphs/gcach_layout.cxx
@@ -445,6 +445,12 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
int32_t nGlyphIndex = pHbGlyphInfos[i].codepoint;
int32_t nCharPos = pHbGlyphInfos[i].cluster;
+ // tdf#89231 if it's just a missing non-breaking space, then use a normal space
+ if (!nGlyphIndex && (SalLayoutFlags::ForFallback & rArgs.mnFlags) && nCharPos >= 0 && rArgs.mpStr[nCharPos] == 0x202F)
+ {
+ nGlyphIndex = rFont.GetGlyphIndex(' ');
+ }
+
// if needed request glyph fallback by updating LayoutArgs
if (!nGlyphIndex)
{
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index b04a318..068b2bb 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -2080,7 +2080,10 @@ SalLayout* OutputDevice::ImplGlyphFallbackLayout( SalLayout* pSalLayout, ImplLay
if( nFallbackLevel < MAX_FALLBACK-1)
{
// ignore fallback font if it is the same as the original font
- if( mpFontEntry->maFontSelData.mpFontData == aFontSelData.mpFontData )
+ // unless we are looking for a substituion for 0x202F, in which
+ // case we'll just use a normal space
+ if( mpFontEntry->maFontSelData.mpFontData == aFontSelData.mpFontData &&
+ aMissingCodes.indexOf(0x202F) == -1 )
{
mpFontCache->Release( pFallbackFont );
continue;
commit 810818e5b4f0f3fec2f555217ae1499bd8cd15ef
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Apr 21 17:00:57 2015 +0200
tdf#90421 RTF export: ignore hyperlinks without an URL
Commit fe444d1f74abe417962be0bcd3340f40f2446b58 (fdo#62536: sw: fix
AutoCorrect bold/underline on existing AUTOFMT, 2013-06-20) adds an
empty inet format hint on the text node during autocorrection, on export
we can safely ignore that to provide well-formed output.
(cherry picked from commit 7d42346ba77c9c4df241ea40eaf550993ca18783)
Change-Id: Iafae941a13e29dcc7d8b4bade5ce94a486b59638
Reviewed-on: https://gerrit.libreoffice.org/15906
Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
diff --git a/sw/CppunitTest_sw_rtfexport.mk b/sw/CppunitTest_sw_rtfexport.mk
index 88f371b..b47c906 100644
--- a/sw/CppunitTest_sw_rtfexport.mk
+++ b/sw/CppunitTest_sw_rtfexport.mk
@@ -48,36 +48,7 @@ $(eval $(call gb_CppunitTest_use_api,sw_rtfexport,\
$(eval $(call gb_CppunitTest_use_ure,sw_rtfexport))
$(eval $(call gb_CppunitTest_use_vcl,sw_rtfexport))
-$(eval $(call gb_CppunitTest_use_components,sw_rtfexport,\
- basic/util/sb \
- comphelper/util/comphelp \
- configmgr/source/configmgr \
- embeddedobj/util/embobj \
- filter/source/config/cache/filterconfig1 \
- filter/source/storagefilterdetect/storagefd \
- framework/util/fwk \
- i18npool/util/i18npool \
- linguistic/source/lng \
- package/source/xstor/xstor \
- package/util/package2 \
- sax/source/expatwrap/expwrap \
- sfx2/util/sfx \
- starmath/util/sm \
- svl/source/fsstor/fsstorage \
- svtools/util/svt \
- sw/util/msword \
- sw/util/sw \
- sw/util/swd \
- toolkit/util/tk \
- ucb/source/core/ucb1 \
- ucb/source/ucp/file/ucpfile1 \
- unotools/util/utl \
- unoxml/source/service/unoxml \
- uui/util/uui \
- writerfilter/util/writerfilter \
- xmloff/util/xo \
- oox/util/oox \
-))
+$(eval $(call gb_CppunitTest_use_rdb,sw_rtfexport,services))
$(eval $(call gb_CppunitTest_use_configuration,sw_rtfexport))
diff --git a/sw/qa/extras/inc/swmodeltestbase.hxx b/sw/qa/extras/inc/swmodeltestbase.hxx
index 760afc2..4cd9919 100644
--- a/sw/qa/extras/inc/swmodeltestbase.hxx
+++ b/sw/qa/extras/inc/swmodeltestbase.hxx
@@ -264,6 +264,7 @@ protected:
header();
preTest(filename);
load(mpTestDocumentPath, filename);
+ postLoad(filename);
reload(mpFilter, filename);
postTest(filename);
verify();
@@ -313,6 +314,11 @@ protected:
{
}
+ /// Override this function if some special file-specific setup is needed during export test: after load, but before save.
+ virtual void postLoad(const char* /*pFilename*/)
+ {
+ }
+
/**
* Override this function if some special filename-specific teardown is needed
*/
diff --git a/sw/qa/extras/rtfexport/data/tdf90421.fodt b/sw/qa/extras/rtfexport/data/tdf90421.fodt
new file mode 100644
index 0000000..a0da4b8
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/tdf90421.fodt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oas
is:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:
experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:body>
+ <office:text>
+ <text:p text:style-name="P1">A <text:a xlink:type="simple" xlink:href="http://s/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">http://s/</text:a> B</text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 2a13b4b..9bc57d5 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -76,6 +76,16 @@ public:
return false;
}
+
+ virtual void postLoad(const char* pFilename) SAL_OVERRIDE
+ {
+ if (OString(pFilename) == "tdf90421.fodt")
+ {
+ // Change the hyperlink, so its URL is empty.
+ uno::Reference<beans::XPropertySet> xRun(getRun(getParagraph(1), 2), uno::UNO_QUERY);
+ xRun->setPropertyValue("HyperLinkURL", uno::makeAny(OUString()));
+ }
+ }
};
DECLARE_RTFEXPORT_TEST(testZoom, "zoom.rtf")
@@ -869,6 +879,19 @@ DECLARE_RTFEXPORT_TEST(testTdf80708, "tdf80708.rtf")
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators").getLength());
}
+DECLARE_RTFEXPORT_TEST(testTdf90421, "tdf90421.fodt")
+{
+ if (mbExported)
+ {
+ SvMemoryStream aMemoryStream;
+ SvFileStream aStream(maTempFile.GetURL(), STREAM_READ);
+ aStream.ReadStream(aMemoryStream);
+ OString aData(static_cast<const char*>(aMemoryStream.GetData()), aMemoryStream.GetSize());
+ // This was some positive number, i.e. we exported a hyperlink with an empty URL.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(-1), aData.indexOf("HYPERLINK"));
+ }
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 7071e7b..da8f01f 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -437,52 +437,58 @@ void RtfAttributeOutput::EndRuby()
bool RtfAttributeOutput::StartURL(const OUString& rUrl, const OUString& rTarget)
{
- m_aStyles.append('{');
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_FIELD);
- m_aStyles.append('{');
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_IGNORE);
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_FLDINST);
- m_aStyles.append(" HYPERLINK ");
-
- OUString sURL(rUrl);
- if (!sURL.isEmpty())
+ m_sURL = rUrl;
+ // Ignore hyperlink without an URL.
+ if (!rUrl.isEmpty())
{
+ m_aStyles.append('{');
+ m_aStyles.append(OOO_STRING_SVTOOLS_RTF_FIELD);
+ m_aStyles.append('{');
+ m_aStyles.append(OOO_STRING_SVTOOLS_RTF_IGNORE);
+ m_aStyles.append(OOO_STRING_SVTOOLS_RTF_FLDINST);
+ m_aStyles.append(" HYPERLINK ");
+
+ OUString sURL(rUrl);
m_aStyles.append("\"");
m_aStyles.append(msfilter::rtfutil::OutString(sURL, m_rExport.eCurrentEncoding));
m_aStyles.append("\" ");
- }
- if (!rTarget.isEmpty())
- {
- m_aStyles.append("\\\\t \"");
- m_aStyles.append(msfilter::rtfutil::OutString(rTarget, m_rExport.eCurrentEncoding));
- m_aStyles.append("\" ");
- }
+ if (!rTarget.isEmpty())
+ {
+ m_aStyles.append("\\\\t \"");
+ m_aStyles.append(msfilter::rtfutil::OutString(rTarget, m_rExport.eCurrentEncoding));
+ m_aStyles.append("\" ");
+ }
- m_aStyles.append("}");
- m_aStyles.append("{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " {");
+ m_aStyles.append("}");
+ m_aStyles.append("{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " {");
+ }
return true;
}
bool RtfAttributeOutput::EndURL(bool const isAtEndOfParagraph)
{
- // UGLY: usually EndRun is called earlier, but there is an extra
- // call to OutAttrWithRange() when at the end of the paragraph,
- // so in that special case the output needs to be appended to the
- // new run's text instead of the previous run
- if (isAtEndOfParagraph)
+ if (!m_sURL.isEmpty())
{
- // close the fldrslt group
- m_aRunText->append("}}");
- // close the field group
- m_aRunText->append('}');
- }
- else
- {
- // close the fldrslt group
- m_aRun->append("}}");
- // close the field group
- m_aRun->append('}');
+ // UGLY: usually EndRun is called earlier, but there is an extra
+ // call to OutAttrWithRange() when at the end of the paragraph,
+ // so in that special case the output needs to be appended to the
+ // new run's text instead of the previous run
+ if (isAtEndOfParagraph)
+ {
+ // close the fldrslt group
+ m_aRunText->append("}}");
+ // close the field group
+ m_aRunText->append('}');
+ }
+ else
+ {
+ // close the fldrslt group
+ m_aRun->append("}}");
+ // close the field group
+ m_aRun->append('}');
+ }
+ m_sURL.clear();
}
return true;
}
diff --git a/sw/source/filter/ww8/rtfattributeoutput.hxx b/sw/source/filter/ww8/rtfattributeoutput.hxx
index a056849..72d07cc 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.hxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.hxx
@@ -596,6 +596,9 @@ private:
boost::optional<css::drawing::FillStyle> m_oFillStyle;
+ /// If we're in the process of exporting a hyperlink, then its URL.
+ OUString m_sURL;
+
public:
RtfAttributeOutput(RtfExport& rExport);
commit 02a0842406e6b6dda5dea44e11a9358832ecdfd6
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date: Wed Apr 22 23:31:43 2015 +0200
tdf#88056: Implement ODF import/export of page title field
to/from loext namespace, since new tag's needed for the new field
and it isn't approved by ODF-TC yet
Change-Id: I70ceb4e16e1199663520dbdf3beae31423bc81d0
Reviewed-on: https://gerrit.libreoffice.org/15485
Tested-by: Michael Stahl <mstahl at redhat.com>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
diff --git a/editeng/source/items/flditem.cxx b/editeng/source/items/flditem.cxx
index 57f1e2a..4e144ed 100644
--- a/editeng/source/items/flditem.cxx
+++ b/editeng/source/items/flditem.cxx
@@ -117,7 +117,7 @@ SvxFieldData* SvxFieldData::Create(const uno::Reference<text::XTextContent>& xTe
return new SvxPageField();
case text::textfield::Type::PAGES:
return new SvxPagesField();
- case text::textfield::Type::PAGE_TITLE:
+ case text::textfield::Type::PAGE_NAME:
return new SvxPageTitleField();
case text::textfield::Type::DOCINFO_TITLE:
return new SvxFileField();
diff --git a/editeng/source/uno/unofield.cxx b/editeng/source/uno/unofield.cxx
index 7c7cae9..b507d3b 100644
--- a/editeng/source/uno/unofield.cxx
+++ b/editeng/source/uno/unofield.cxx
@@ -504,6 +504,9 @@ SvxFieldData* SvxUnoTextField::CreateFieldData() const throw()
case text::textfield::Type::PRESENTATION_DATE_TIME:
pData = new SvxDateTimeField();
break;
+ case text::textfield::Type::PAGE_NAME:
+ pData = new SvxPageTitleField();
+ break;
};
return pData;
@@ -606,6 +609,8 @@ OUString SAL_CALL SvxUnoTextField::getPresentation( sal_Bool bShowCommand )
return OUString("Footer");
case text::textfield::Type::PRESENTATION_DATE_TIME:
return OUString("DateTime");
+ case text::textfield::Type::PAGE_NAME:
+ return OUString("PageName");
default:
return OUString("Unknown");
}
@@ -853,6 +858,10 @@ uno::Sequence< OUString > SAL_CALL SvxUnoTextField::getSupportedServiceNames()
pServices[2] = "com.sun.star.presentation.TextField.DateTime";
pServices[3] = "com.sun.star.presentation.textfield.DateTime";
break;
+ case text::textfield::Type::PAGE_NAME:
+ pServices[2] = "com.sun.star.text.TextField.PageName";
+ pServices[3] = "com.sun.star.text.textfield.PageName";
+ break;
default:
aSeq.realloc(0);
}
diff --git a/include/editeng/flditem.hxx b/include/editeng/flditem.hxx
index e35e503..554a2b1 100644
--- a/include/editeng/flditem.hxx
+++ b/include/editeng/flditem.hxx
@@ -194,7 +194,7 @@ public:
class EDITENG_DLLPUBLIC SvxPageTitleField : public SvxFieldData
{
public:
- SV_DECL_PERSIST1( SvxPageTitleField, SvxFieldData, com::sun::star::text::textfield::Type::PAGE_TITLE )
+ SV_DECL_PERSIST1( SvxPageTitleField, SvxFieldData, com::sun::star::text::textfield::Type::PAGE_NAME )
SvxPageTitleField();
virtual SvxFieldData* Clone() const SAL_OVERRIDE;
diff --git a/include/xmloff/txtimp.hxx b/include/xmloff/txtimp.hxx
index 592c834..96df6f1 100644
--- a/include/xmloff/txtimp.hxx
+++ b/include/xmloff/txtimp.hxx
@@ -210,6 +210,7 @@ enum XMLTextPElemTokens
XML_TOK_TEXT_SEQUENCE_REF,
XML_TOK_TEXT_NOTE_REF,
XML_TOK_TEXT_SHEET_NAME,
+ XML_TOK_TEXT_PAGE_NAME,
XML_TOK_TEXT_BIBLIOGRAPHY_MARK,
XML_TOK_TEXT_ANNOTATION,
XML_TOK_TEXT_ANNOTATION_END,
diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx
index 9639326..21b584d 100644
--- a/include/xmloff/xmltoken.hxx
+++ b/include/xmloff/xmltoken.hxx
@@ -1368,6 +1368,7 @@ namespace xmloff { namespace token {
XML_PAGE_HEIGHT,
XML_PAGE_MASTER,
XML_PAGE_MASTER_NAME,
+ XML_PAGE_NAME,
XML_PAGE_NUMBER,
XML_PAGE_START_MARGIN,
XML_PAGE_STYLE_NAME,
diff --git a/offapi/com/sun/star/text/textfield/Type.idl b/offapi/com/sun/star/text/textfield/Type.idl
index 42fcb8b..d2fa81f 100644
--- a/offapi/com/sun/star/text/textfield/Type.idl
+++ b/offapi/com/sun/star/text/textfield/Type.idl
@@ -42,7 +42,7 @@ constants Type
const long PRESENTATION_HEADER = 11;
const long PRESENTATION_FOOTER = 12;
const long PRESENTATION_DATE_TIME = 13;
- const long PAGE_TITLE = 14;
+ const long PAGE_NAME = 14;
};
}; }; }; }; };
diff --git a/sd/source/ui/app/sdmod2.cxx b/sd/source/ui/app/sdmod2.cxx
index dd5c666..8f2d3a2 100644
--- a/sd/source/ui/app/sdmod2.cxx
+++ b/sd/source/ui/app/sdmod2.cxx
@@ -268,6 +268,12 @@ IMPL_LINK(SdModule, CalcFieldValueHdl, EditFieldInfo*, pInfo)
{
aRepresentation = pPage->GetName();
}
+ else
+ {
+ aRepresentation = ( ( pDoc->GetDocumentType() == DOCUMENT_TYPE_IMPRESS )
+ ? SdResId(STR_FIELD_PLACEHOLDER_SLIDENAME).toString()
+ : SdResId(STR_FIELD_PLACEHOLDER_PAGENAME).toString() );
+ }
pInfo->SetRepresentation( aRepresentation );
}
diff --git a/sd/source/ui/app/strings.src b/sd/source/ui/app/strings.src
index 06b0fcf..c46b5ef 100644
--- a/sd/source/ui/app/strings.src
+++ b/sd/source/ui/app/strings.src
@@ -1066,6 +1066,16 @@ String STR_FIELD_PLACEHOLDER_COUNT
Text [ en-US ] = "<count>" ;
};
+String STR_FIELD_PLACEHOLDER_SLIDENAME
+{
+ Text [ en-US ] = "<slide-name>" ;
+};
+
+String STR_FIELD_PLACEHOLDER_PAGENAME
+{
+ Text [ en-US ] = "<page-name>" ;
+};
+
String STR_PLACEHOLDER_DESCRIPTION_NOTES
{
Text [ en-US ] = "Notes Area";
diff --git a/sd/source/ui/inc/strings.hrc b/sd/source/ui/inc/strings.hrc
index 1fa282c..2c4c79e 100644
--- a/sd/source/ui/inc/strings.hrc
+++ b/sd/source/ui/inc/strings.hrc
@@ -367,6 +367,8 @@
#define STR_UNDO_HANGULHANJACONVERSION (RID_APP_START+696)
#define STR_FIELD_PLACEHOLDER_COUNT (RID_APP_START+697)
+#define STR_FIELD_PLACEHOLDER_SLIDENAME (RID_APP_START+698)
+#define STR_FIELD_PLACEHOLDER_PAGENAME (RID_APP_START+699)
#define STR_LEFT_PANE_DRAW_TITLE (RID_APP_START+700)
#define STR_LEFT_PANE_IMPRESS_TITLE (RID_APP_START+701)
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index b461f87..2d72378 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -929,6 +929,12 @@ css::uno::Reference<css::uno::XInterface> SdXImpressDocument::create(
return (::cppu::OWeakObject * )new SvxUnoTextField( text::textfield::Type::PRESENTATION_DATE_TIME );
}
+ if( aServiceSpecifier == "com.sun.star.text.TextField.PageName" ||
+ aServiceSpecifier == "com.sun.star.text.textfield.PageName" )
+ {
+ return (::cppu::OWeakObject * )new SvxUnoTextField( text::textfield::Type::PAGE_NAME );
+ }
+
if( aServiceSpecifier == "com.sun.star.xml.NamespaceMap" )
{
static sal_uInt16 aWhichIds[] = { SDRATTR_XMLATTRIBUTES, EE_CHAR_XMLATTRIBS, EE_PARA_XMLATTRIBS, 0 };
diff --git a/xmloff/inc/txtflde.hxx b/xmloff/inc/txtflde.hxx
index 5061477..79014b6 100644
--- a/xmloff/inc/txtflde.hxx
+++ b/xmloff/inc/txtflde.hxx
@@ -57,6 +57,7 @@ enum FieldIdEnum {
FIELD_ID_AUTHOR,
FIELD_ID_DATE, // current date
FIELD_ID_TIME, // current time (+date)
+ FIELD_ID_PAGENAME, // page/slide name
FIELD_ID_PAGENUMBER, // page number
FIELD_ID_PAGESTRING, // page contination string (page number string)
FIELD_ID_REFPAGE_SET, // set reference page
diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx
index 4023aac..42a3263 100644
--- a/xmloff/inc/txtfldi.hxx
+++ b/xmloff/inc/txtfldi.hxx
@@ -1131,6 +1131,28 @@ protected:
::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
};
+/** import page|slide name fields (<text:page-name>) */
+class XMLPageNameFieldImportContext : public XMLTextFieldImportContext
+{
+public:
+ TYPEINFO_OVERRIDE();
+
+ XMLPageNameFieldImportContext(
+ SvXMLImport& rImport, /// XML Import
+ XMLTextImportHelper& rHlp, /// Text import helper
+ sal_uInt16 nPrfx, /// namespace prefix
+ const OUString& sLocalName); /// element name w/o prefix
+
+ /// process attribute values
+ virtual void ProcessAttribute( sal_uInt16 nAttrToken,
+ const OUString& sAttrValue ) SAL_OVERRIDE;
+
+ /// prepare XTextField for insertion into document
+ virtual void PrepareField(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
+};
+
/** import hyperlinks as URL fields (Calc, Impress, Draw) (<office:a>) */
class XMLUrlFieldImportContext : public XMLTextFieldImportContext
{
diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx
index 323e073..e15cf96 100644
--- a/xmloff/source/core/xmltoken.cxx
+++ b/xmloff/source/core/xmltoken.cxx
@@ -1373,6 +1373,7 @@ namespace xmloff { namespace token {
TOKEN( "page-height", XML_PAGE_HEIGHT ),
TOKEN( "page-master", XML_PAGE_MASTER ),
TOKEN( "page-master-name", XML_PAGE_MASTER_NAME ),
+ TOKEN( "page-name", XML_PAGE_NAME ),
TOKEN( "page-number", XML_PAGE_NUMBER ),
TOKEN( "page-start-margin", XML_PAGE_START_MARGIN ),
TOKEN( "page-style-name", XML_PAGE_STYLE_NAME ),
diff --git a/xmloff/source/text/txtflde.cxx b/xmloff/source/text/txtflde.cxx
index f1f8442..7c20b5c 100644
--- a/xmloff/source/text/txtflde.cxx
+++ b/xmloff/source/text/txtflde.cxx
@@ -141,6 +141,7 @@ static sal_Char const FIELD_SERVICE_OBJECT_COUNT[] = "EmbeddedObjectCount";
static sal_Char const FIELD_SERVICE_REFERENCE_PAGE_SET[] = "ReferencePageSet";
static sal_Char const FIELD_SERVICE_REFERENCE_PAGE_GET[] = "ReferencePageGet";
static sal_Char const FIELD_SERVICE_SHEET_NAME[] = "SheetName";
+static sal_Char const FIELD_SERVICE_PAGE_NAME[] = "PageName";
static sal_Char const FIELD_SERVICE_MACRO[] = "Macro";
static sal_Char const FIELD_SERVICE_GET_REFERENCE[] = "GetReference";
static sal_Char const FIELD_SERVICE_DDE[] = "DDE";
@@ -234,6 +235,7 @@ SvXMLEnumStringMapEntry const aFieldServiceNameMapping[] =
// non-writer fields
ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_SHEET_NAME, FIELD_ID_SHEET_NAME ),
+ ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_PAGE_NAME, FIELD_ID_PAGENAME ),
ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_URL, FIELD_ID_URL ),
ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_MEASURE, FIELD_ID_MEASURE ),
@@ -611,6 +613,7 @@ enum FieldIdEnum XMLTextFieldExport::MapFieldName(
case FIELD_ID_FILE_NAME:
case FIELD_ID_META:
case FIELD_ID_SHEET_NAME:
+ case FIELD_ID_PAGENAME:
case FIELD_ID_MEASURE:
case FIELD_ID_URL:
case FIELD_ID_TABLE_FORMULA:
@@ -718,6 +721,7 @@ bool XMLTextFieldExport::IsStringField(
case FIELD_ID_TEXT_INPUT:
case FIELD_ID_SENDER:
case FIELD_ID_AUTHOR:
+ case FIELD_ID_PAGENAME:
case FIELD_ID_PAGESTRING:
case FIELD_ID_SHEET_NAME:
case FIELD_ID_MEASURE:
@@ -932,6 +936,7 @@ void XMLTextFieldExport::ExportFieldAutoStyle(
case FIELD_ID_DOCINFO_REVISION:
case FIELD_ID_DOCINFO_SAVE_AUTHOR:
case FIELD_ID_SEQUENCE:
+ case FIELD_ID_PAGENAME:
case FIELD_ID_PAGENUMBER:
case FIELD_ID_PAGESTRING:
case FIELD_ID_AUTHOR:
@@ -1669,6 +1674,16 @@ void XMLTextFieldExport::ExportFieldHelper(
ExportElement(XML_SHEET_NAME, sPresentation);
break;
+ case FIELD_ID_PAGENAME:
+ {
+ if (SvtSaveOptions().GetODFDefaultVersion() > SvtSaveOptions::ODFVER_012)
+ {
+ SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_LO_EXT, XML_PAGE_NAME, false, false );
+ GetExport().Characters( sPresentation );
+ }
+ break;
+ }
+
case FIELD_ID_URL:
{
// this field is a special case because it gets mapped onto a
@@ -1848,6 +1863,7 @@ void XMLTextFieldExport::ExportFieldHelper(
}
break;
+
case FIELD_ID_UNKNOWN:
default:
OSL_FAIL("unknown field type encountered!");
diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx
index 6b7c9ad..274ff52 100644
--- a/xmloff/source/text/txtfldi.cxx
+++ b/xmloff/source/text/txtfldi.cxx
@@ -129,6 +129,7 @@ const sal_Char sAPI_macro[] = "Macro";
const sal_Char sAPI_dde[] = "DDE";
const sal_Char sAPI_get_reference[] = "GetReference";
const sal_Char sAPI_sheet_name[] = "SheetName";
+const sal_Char sAPI_pagename[] = "PageName";
const sal_Char sAPI_url[] = "URL";
const sal_Char sAPI_bibliography[] = "Bibliography";
const sal_Char sAPI_annotation[] = "Annotation";
@@ -538,6 +539,11 @@ XMLTextFieldImportContext::CreateTextFieldImportContext(
nPrefix, rName );
break;
+ case XML_TOK_TEXT_PAGE_NAME:
+ pContext = new XMLPageNameFieldImportContext( rImport, rHlp,
+ nPrefix, rName );
+ break;
+
case XML_TOK_TEXT_BIBLIOGRAPHY_MARK:
pContext = new XMLBibliographyFieldImportContext( rImport, rHlp,
nPrefix, rName );
@@ -3267,6 +3273,31 @@ void XMLSheetNameImportContext::PrepareField(
// no attributes -> nothing to be done
}
+/** import page|slide name fields (<text:page-name>) */
+TYPEINIT1( XMLPageNameFieldImportContext, XMLTextFieldImportContext );
+
+XMLPageNameFieldImportContext::XMLPageNameFieldImportContext(
+ SvXMLImport& rImport, /// XML Import
+ XMLTextImportHelper& rHlp, /// Text import helper
+ sal_uInt16 nPrfx, /// namespace prefix
+ const OUString& sLocalName) /// element name w/o prefix
+: XMLTextFieldImportContext(rImport, rHlp, sAPI_pagename, nPrfx, sLocalName )
+{
+ bValid = true;
+}
+
+/// process attribute values
+void XMLPageNameFieldImportContext::ProcessAttribute( sal_uInt16,
+ const OUString& )
+{
+}
+
+/// prepare XTextField for insertion into document
+void XMLPageNameFieldImportContext::PrepareField(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet> &)
+{
+}
// URL fields (Calc, Impress, Draw)
diff --git a/xmloff/source/text/txtimp.cxx b/xmloff/source/text/txtimp.cxx
index 6c74084..2ea64ce 100644
--- a/xmloff/source/text/txtimp.cxx
+++ b/xmloff/source/text/txtimp.cxx
@@ -269,6 +269,8 @@ static const SvXMLTokenMapEntry aTextPElemTokenMap[] =
// draw fields
{ XML_NAMESPACE_TEXT, XML_MEASURE, XML_TOK_TEXT_MEASURE },
+ { XML_NAMESPACE_LO_EXT, XML_PAGE_NAME, XML_TOK_TEXT_PAGE_NAME },
+ { XML_NAMESPACE_TEXT, XML_PAGE_NAME, XML_TOK_TEXT_PAGE_NAME },
// RDF metadata
{ XML_NAMESPACE_TEXT, XML_META, XML_TOK_TEXT_META },
commit 8a2589dff9e3b8bc127bfa1db9c3b9801ab009e9
Author: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
Date: Tue May 26 23:18:49 2015 +0200
update credits
Change-Id: I5faeceb0d0d3ed16d9c6e4474720c24a8dd95f85
diff --git a/readlicense_oo/license/CREDITS.fodt b/readlicense_oo/license/CREDITS.fodt
index c89e96a..0e53f0e 100644
--- a/readlicense_oo/license/CREDITS.fodt
+++ b/readlicense_oo/license/CREDITS.fodt
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oas
is:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:
experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
- <office:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/4.4.2.2$Linux_X86_64 LibreOffice_project/c4c7d32d0d49397cad38d62472b0bc8acff48dd6</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="3166" meta:word-count="11230" meta:character-count="81181" meta:non-whitespace-character-count="71062"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
+ <office:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/4.4.3.2$Linux_X86_64 LibreOffice_project/88805f81e9fe61362df02b9941de8e38a9b5fd16</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="3192" meta:word-count="11299" meta:character-count="81656" meta:non-whitespace-character-count="71471"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
<office:settings>
<config:config-item-set config:name="ooo:view-settings">
- <config:config-item config:name="ViewAreaTop" config:type="long">660</config:config-item>
+ <config:config-item config:name="ViewAreaTop" config:type="long">739</config:config-item>
<config:config-item config:name="ViewAreaLeft" config:type="long">501</config:config-item>
- <config:config-item config:name="ViewAreaWidth" config:type="long">23629</config:config-item>
- <config:config-item config:name="ViewAreaHeight" config:type="long">15215</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">30058</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">9077</config:config-item>
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
<config:config-item config:name="InBrowseMode" config:type="boolean">true</config:config-item>
<config:config-item-map-indexed config:name="Views">
@@ -16,9 +16,9 @@
<config:config-item config:name="ViewLeft" config:type="long">3676</config:config-item>
<config:config-item config:name="ViewTop" config:type="long">3471</config:config-item>
<config:config-item config:name="VisibleLeft" config:type="long">501</config:config-item>
- <config:config-item config:name="VisibleTop" config:type="long">660</config:config-item>
- <config:config-item config:name="VisibleRight" config:type="long">24128</config:config-item>
- <config:config-item config:name="VisibleBottom" config:type="long">15873</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">739</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">30558</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">9814</config:config-item>
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
<config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item>
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
@@ -36,6 +36,7 @@
<config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">true</config:config-item>
<config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list