bin/merge-app-bundles | 2 comphelper/source/misc/storagehelper.cxx | 13 drawinglayer/source/processor2d/vclprocessor2d.cxx | 5 package/inc/ZipFile.hxx | 4 package/source/zipapi/ZipFile.cxx | 30 package/source/zippackage/ZipPackage.cxx | 6 readlicense_oo/license/CREDITS.fodt | 3586 +++++++++---------- sc/source/ui/undo/undobase.cxx | 6 svgio/qa/cppunit/SvgImportTest.cxx | 13 svgio/qa/cppunit/data/tdf161985.svg | 14 svgio/source/svgreader/svgstyleattributes.cxx | 37 sw/qa/core/text/data/tdf161990-subscripts.fodt | 44 sw/qa/core/text/text.cxx | 58 sw/qa/extras/layout/data/field_hide_section.fodt | 193 + sw/qa/extras/layout/data/fly_hidden_paragraph.fodt | 127 sw/qa/extras/layout/layout.cxx | 105 sw/source/core/layout/trvlfrm.cxx | 6 ucb/source/ucp/tdoc/tdoc_datasupplier.cxx | 4 vcl/osx/DataFlavorMapping.cxx | 4 vcl/osx/a11yrolehelper.mm | 6 vcl/osx/a11ywrapper.mm | 9 vcl/osx/salmenu.cxx | 6 vcl/source/filter/ieps/ieps.cxx | 12 wizards/source/sfdocuments/SF_Document.xba | 4 writerfilter/qa/cppunittests/dmapper/PropertyMap.cxx | 37 writerfilter/source/dmapper/DomainMapper_Impl.cxx | 22 writerfilter/source/dmapper/PropertyMap.cxx | 5 27 files changed, 2536 insertions(+), 1822 deletions(-)
New commits: commit e598a34ed14eaf0ada5edf664547d9484844a987 Author: Justin Luth <jl...@mail.com> AuthorDate: Wed Jul 10 19:26:20 2024 -0400 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:43 2024 +0200 tdf#160139 sw RTF paste: don't empty headers/footers Regression from quikee's 24.2 commit 4b0fa253a4540f5461397815d290586f9ddabe61 tdf#136472 adjust ooxml import to handle first header/footer RTF paste is particularly nasty because it calls CloseSectionGroup, which is rather strange for just pasting some characters... Fix the problem by leaving the paste alone: we already omit a number of actions in this case, and was similarly done initially by quikee in copyHeaderFooter. setHeaderFooterProperties() was newly added by quikee, so relatively safe to start avoiding on paste. make CppunitTest_sw_writerfilter_dmapper \ CPPUNIT_TEST_NAME=testPasteHeaderEmptied Change-Id: Iad997481a75bb971f9e71373175134cbec9aa7d9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170328 Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> Tested-by: Jenkins (cherry picked from commit aaf93cd9629acd476284a4933a656ddd188a80aa) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170349 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170386 Reviewed-by: Justin Luth <jl...@mail.com> diff --git a/writerfilter/qa/cppunittests/dmapper/PropertyMap.cxx b/writerfilter/qa/cppunittests/dmapper/PropertyMap.cxx index 2952f1f93302..e06ee5236e0d 100644 --- a/writerfilter/qa/cppunittests/dmapper/PropertyMap.cxx +++ b/writerfilter/qa/cppunittests/dmapper/PropertyMap.cxx @@ -175,6 +175,43 @@ CPPUNIT_TEST_FIXTURE(Test, testPasteHeaderDisable) // Then make sure the header stays on: CPPUNIT_ASSERT(xStyle->getPropertyValue("HeaderIsOn").get<bool>()); } + +CPPUNIT_TEST_FIXTURE(Test, testPasteHeaderEmptied) +{ + // Given an empty document with a turned on footer with content: + loadFromFile(u"page-break-footer-table.docx"); + uno::Reference<style::XStyleFamiliesSupplier> xStyleFamiliesSupplier(mxComponent, + uno::UNO_QUERY); + uno::Reference<container::XNameAccess> xStyleFamilies + = xStyleFamiliesSupplier->getStyleFamilies(); + uno::Reference<container::XNameAccess> xStyleFamily( + xStyleFamilies->getByName(u"PageStyles"_ustr), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xStyle(xStyleFamily->getByName(u"Standard"_ustr), + uno::UNO_QUERY); + + // When pasting RTF content: + uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference<text::XTextRange> xText = xTextDocument->getText(); + uno::Reference<text::XTextRange> xBodyEnd = xText->getEnd(); + uno::Reference<document::XFilter> xFilter( + m_xSFactory->createInstance(u"com.sun.star.comp.Writer.RtfFilter"_ustr), uno::UNO_QUERY); + uno::Reference<document::XImporter> xImporter(xFilter, uno::UNO_QUERY); + xImporter->setTargetDocument(mxComponent); + std::unique_ptr<SvStream> pStream(new SvMemoryStream); + pStream->WriteOString("{\rtf1 paste}"); + pStream->Seek(0); + uno::Reference<io::XStream> xStream(new utl::OStreamWrapper(std::move(pStream))); + uno::Sequence aDescriptor{ comphelper::makePropertyValue(u"InputStream"_ustr, xStream), + comphelper::makePropertyValue(u"InsertMode"_ustr, true), + comphelper::makePropertyValue(u"TextInsertModeRange"_ustr, + xBodyEnd) }; + CPPUNIT_ASSERT(xFilter->filter(aDescriptor)); + + // Then make sure the header retains its contents: + uno::Reference<text::XTextRange> xFooterText(xStyle->getPropertyValue(u"FooterText"_ustr), + uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(u"Odd page footer"_ustr, xFooterText->getString()); +} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx index d3263ac5ba55..62707f2c4d10 100644 --- a/writerfilter/source/dmapper/PropertyMap.cxx +++ b/writerfilter/source/dmapper/PropertyMap.cxx @@ -520,7 +520,8 @@ void SectionPropertyMap::removeXTextContent(uno::Reference<text::XText> const& r */ void SectionPropertyMap::setHeaderFooterProperties(DomainMapper_Impl& rDM_Impl) { - if (!m_aPageStyle.is()) + // do not alter header/footer during copy/paste + if (!m_aPageStyle.is() || !rDM_Impl.IsNewDoc()) return; bool bHasHeader = false; @@ -583,7 +584,7 @@ void SectionPropertyMap::setHeaderFooterProperties(DomainMapper_Impl& rDM_Impl) m_aPageStyle->setPropertyValue(sFirstIsShared, uno::Any(!m_bTitlePage)); bool bHadFirstHeader = m_bHadFirstHeader && m_bTitlePage; - if (bHasHeader && !bHadFirstHeader && !m_bHadLeftHeader && !m_bHadRightHeader && rDM_Impl.IsNewDoc()) + if (bHasHeader && !bHadFirstHeader && !m_bHadLeftHeader && !m_bHadRightHeader) { m_aPageStyle->setPropertyValue(sHeaderIsOn, uno::Any(false)); } commit c4c1848bd686685755714925a54c52f6d8d0a7bc Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Thu Jul 11 14:55:26 2024 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:43 2024 +0200 sw: layout: ShrinkFrame() may do nothing for layout frames... ... which may cause empty pages, so explicitly set the height to 0. (regression from commit 2dce213ce9f399c6ce1a3e928f34fa27988fa833) Change-Id: Ife5c2873b375431d2dd90c9b7e8b3b8c40a9cf7f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170383 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit e2d82681a8055d0d4e7007b8dacf38f5675bc70f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170356 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/sw/qa/extras/layout/data/field_hide_section.fodt b/sw/qa/extras/layout/data/field_hide_section.fodt new file mode 100644 index 000000000000..9d00bf6f8c4c --- /dev/null +++ b/sw/qa/extras/layout/data/field_hide_section.fodt @@ -0,0 +1,193 @@ +<?xml version='1.0' encoding='UTF-8'?> +<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:dc="http://purl.org/dc/eleme nts/1.1/" xmlns:ooo="http://openoffice.org/2004/office" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext: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:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:meta><meta:creation-date>2024-07-11T15:14:52.010777485</meta:creation-date><meta:editing-duration>PT2M3S</meta:editing-duration><meta:editing-cycles>2</meta:editing-cycles><meta:generator>CIB_OfficeDev/6.4.0.26$Linux_X86_64 LibreOffice_project/c02dfb55f9962adebc1d2eb5248abd10c63e7bbe</meta:generator><dc:date>2024-07-11T15:16:53.863806593</dc:date><meta:document-statistic meta:table-count="1" meta:image-count="0" meta:object-count="0" meta:page-count="3" meta:paragraph-count="1" meta:word-count="1" meta:character-count="1" meta:non-whitespace-character-count="1"/></office:meta> + <office:font-face-decls> + <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/> + <style:font-face style:name="Arial Unicode MS" svg:font-family="'Arial Unicode MS'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Noto Serif CJK SC" svg:font-family="'Noto Serif CJK SC'" style:font-family-generic="system" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="graphic"> + <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false"> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Arial Unicode MS" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/> + </style:default-style> + <style:default-style style:family="paragraph"> + <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/> + <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Arial Unicode MS" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/> + </style:default-style> + <style:default-style style:family="table"> + <style:table-properties table:border-model="collapsing"/> + </style:default-style> + <style:default-style style:family="table-row"> + <style:table-row-properties fo:keep-together="auto"/> + </style:default-style> + <style:style style:name="Standard" style:family="paragraph" style:class="text"/> + <style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"> + <style:paragraph-properties fo:orphans="0" fo:widows="0" text:number-lines="false" text:line-number="0"/> + </style:style> + <text:outline-style style:name="Outline"> + <text:outline-level-style text:level="1" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="2" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="3" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="4" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="5" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="6" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="7" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="8" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="9" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="10" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + </text:outline-style> + <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/> + <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/> + <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/> + </office:styles> + <office:automatic-styles> + <style:style style:name="Table1" style:family="table"> + <style:table-properties style:width="6.5cm" table:align="margins"/> + </style:style> + <style:style style:name="Table1.A" style:family="table-column"> + <style:table-column-properties style:column-width="3.249cm" style:rel-column-width="32767*"/> + </style:style> + <style:style style:name="Table1.B" style:family="table-column"> + <style:table-column-properties style:column-width="3.251cm" style:rel-column-width="32768*"/> + </style:style> + <style:style style:name="Table1.A1" style:family="table-cell"> + <style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.5pt solid #000000" fo:border-right="none" fo:border-top="0.5pt solid #000000" fo:border-bottom="0.5pt solid #000000"/> + </style:style> + <style:style style:name="Table1.B1" style:family="table-cell"> + <style:table-cell-properties fo:padding="0.097cm" fo:border="0.5pt solid #000000"/> + </style:style> + <style:style style:name="Table1.A2" style:family="table-cell"> + <style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.5pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.5pt solid #000000"/> + </style:style> + <style:style style:name="Table1.B2" style:family="table-cell"> + <style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.5pt solid #000000" fo:border-right="0.5pt solid #000000" fo:border-top="none" fo:border-bottom="0.5pt solid #000000"/> + </style:style> + <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard"> + <style:text-properties/> + </style:style> + <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Table_20_Contents"> + <style:text-properties/> + </style:style> + <style:style style:name="Sect1" style:family="section"> + <style:section-properties style:editable="false"> + <style:columns fo:column-count="1" fo:column-gap="0cm"/> + </style:section-properties> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="10.5cm" fo:page-height="14.801cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm"> + <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/> + </style:page-layout-properties> + <style:header-style/> + <style:footer-style/> + </style:page-layout> + <number:number-style style:name="N0"> + <number:number number:min-integer-digits="1"/> + </number:number-style> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1"/> + </office:master-styles> + <office:body> + <office:text text:use-soft-page-breaks="true"> + <text:variable-decls> + <text:variable-decl office:value-type="float" text:name="Foo"/> + </text:variable-decls> + <text:sequence-decls> + <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/> + <text:sequence-decl text:display-outline-level="0" text:name="Table"/> + <text:sequence-decl text:display-outline-level="0" text:name="Text"/> + <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/> + <text:sequence-decl text:display-outline-level="0" text:name="Figure"/> + </text:sequence-decls> + <text:p text:style-name="Standard"><text:variable-set text:name="Foo" office:value-type="float" office:value="0" style:data-style-name="N0">0</text:variable-set></text:p> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:p text:style-name="Standard"/> + <text:section text:style-name="Sect1" text:name="Section1" text:condition="ooow:Foo EQ 1" text:is-hidden="false" text:display="condition"> + <text:p text:style-name="P1">Abc</text:p> + <table:table table:name="Table1" table:style-name="Table1"> + <table:table-column table:style-name="Table1.A"/> + <table:table-column table:style-name="Table1.B"/> + <text:soft-page-break/> + <table:table-row> + <table:table-cell table:style-name="Table1.A1" office:value-type="string"> + <text:p text:style-name="P2">d</text:p> + </table:table-cell> + <table:table-cell table:style-name="Table1.B1" office:value-type="string"> + <text:p text:style-name="P2">e</text:p> + </table:table-cell> + </table:table-row> + <table:table-row> + <table:table-cell table:style-name="Table1.A2" office:value-type="string"> + <text:p text:style-name="P2">f</text:p> + </table:table-cell> + <table:table-cell table:style-name="Table1.B2" office:value-type="string"> + <text:p text:style-name="P2">g</text:p> + </table:table-cell> + </table:table-row> + </table:table> + <text:p text:style-name="P1"><text:soft-page-break/>xyz</text:p> + </text:section> + <text:p text:style-name="P1"/> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx index 25d07c7348e3..f877d672b0b0 100644 --- a/sw/qa/extras/layout/layout.cxx +++ b/sw/qa/extras/layout/layout.cxx @@ -21,6 +21,7 @@ #include <IDocumentLayoutAccess.hxx> #include <IDocumentRedlineAccess.hxx> #include <unoframe.hxx> +#include <fldmgr.hxx> /// Test to assert layout / rendering result of Writer. class SwLayoutWriter : public SwModelTestBase @@ -805,6 +806,50 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testFlyHiddenParagraph) Scheduler::ProcessEventsToIdle(); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testFieldHideSection) +{ + createSwDoc("field_hide_section.fodt"); + SwDoc* pDoc = getSwDoc(); + CPPUNIT_ASSERT(pDoc); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "/root/page[1]/body/section/tab/row"_ostr, 1); + assertXPath(pXmlDoc, "/root/page[2]/body/section/tab/row"_ostr, 1); + assertXPath(pXmlDoc, "/root/page"_ostr, 2); + discardDumpedLayout(); + + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + ::std::unique_ptr<SwField> pField(pWrtShell->GetCurField()->CopyField()); + SwFieldMgr manager(pWrtShell); + + pWrtShell->StartAllAction(); + manager.UpdateCurField(10000 /*(?)*/, "Foo", "1", std::move(pField)); + pWrtShell->EndAllAction(); + Scheduler::ProcessEventsToIdle(); + + pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "/root/page[1]/body/section/tab/row"_ostr, 2); + assertXPath(pXmlDoc, "/root/page[1]/body/section/tab/row[1]/infos/bounds"_ostr, "height"_ostr, + "0"); + assertXPath(pXmlDoc, "/root/page[1]/body/section/tab/row[2]/infos/bounds"_ostr, "height"_ostr, + "0"); + assertXPath(pXmlDoc, "/root/page[1]/body/section/infos/bounds"_ostr, "height"_ostr, "0"); + // the problem was that there were 3 pages now + assertXPath(pXmlDoc, "/root/page"_ostr, 1); + discardDumpedLayout(); + + pWrtShell->StartAllAction(); + manager.UpdateCurField(10000 /*(?)*/, "Foo", "0", std::move(pField)); + pWrtShell->EndAllAction(); + Scheduler::ProcessEventsToIdle(); + + pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "/root/page[1]/body/section/tab/row"_ostr, 1); + assertXPath(pXmlDoc, "/root/page[2]/body/section/tab/row"_ostr, 1); + assertXPath(pXmlDoc, "/root/page"_ostr, 2); + discardDumpedLayout(); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter, TestTdf134272) { createSwDoc("tdf134472.odt"); diff --git a/sw/source/core/layout/trvlfrm.cxx b/sw/source/core/layout/trvlfrm.cxx index 9e2466c2ff38..c7a74a4bc359 100644 --- a/sw/source/core/layout/trvlfrm.cxx +++ b/sw/source/core/layout/trvlfrm.cxx @@ -1745,6 +1745,11 @@ void SwFrame::MakeValidZeroHeight() aRectFnSet.SetHeight(area, 0); } ShrinkFrame(aRectFnSet.GetHeight(getFrameArea())); + if (IsLayoutFrame()) // ShrinkFrame might do nothing! + { + SwFrameAreaDefinition::FrameAreaWriteAccess area(*this); + aRectFnSet.SetHeight(area, 0); + } setFrameAreaSizeValid(true); setFramePrintAreaValid(true); setFrameAreaPositionValid(false); commit c4a2d9e06dbc87efa37b7f71b7542b086fba6fcc Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Wed Jul 10 14:19:56 2024 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 sw: layout: invalidate upper when hiding frame If a text frame is in a fly frame, and View->Field Names is turned off, the text frame is hidden but the fly frame is still the same size as before. Call ShrinkFrame() to do some invalidations. (regression from commit fc1e6a64bd0517a7e67f08860c29b44d030220eb) Change-Id: I154551ebaa2370d088b12e178954f92d33056711 (cherry picked from commit b77ebc93844f1b54c74ae5db9253a1d3ff618968) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170323 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 2dce213ce9f399c6ce1a3e928f34fa27988fa833) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170347 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/sw/qa/extras/layout/data/fly_hidden_paragraph.fodt b/sw/qa/extras/layout/data/fly_hidden_paragraph.fodt new file mode 100644 index 000000000000..51731a6b368a --- /dev/null +++ b/sw/qa/extras/layout/data/fly_hidden_paragraph.fodt @@ -0,0 +1,127 @@ +<?xml version='1.0' encoding='UTF-8'?> +<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:dc="http://purl.org/dc/eleme nts/1.1/" xmlns:ooo="http://openoffice.org/2004/office" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext: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:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:font-face-decls> + <style:font-face style:name="Times New Roman" svg:font-family="'Times New Roman'" style:font-family-generic="roman"/> + <style:font-face style:name="Lucida Sans" svg:font-family="'Lucida Sans'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="NSimSun" svg:font-family="NSimSun" style:font-family-generic="system" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="graphic"> + <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false"> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties style:use-window-font-color="true" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="NSimSun" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/> + </style:default-style> + <style:default-style style:family="paragraph"> + <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/> + <style:text-properties style:use-window-font-color="true" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="NSimSun" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/> + </style:default-style> + <style:default-style style:family="table"> + <style:table-properties table:border-model="collapsing"/> + </style:default-style> + <style:default-style style:family="table-row"> + <style:table-row-properties fo:keep-together="auto"/> + </style:default-style> + <style:style style:name="Standard" style:family="paragraph" style:class="text"/> + <style:style style:name="Frame_20_contents" style:display-name="Frame contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"/> + <style:style style:name="Frame" style:family="graphic"> + <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" fo:margin-left="0.201cm" fo:margin-right="0.201cm" fo:margin-top="0.201cm" fo:margin-bottom="0.201cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:padding="0.15cm" fo:border="0.06pt solid #000000"/> + </style:style> + <text:outline-style style:name="Outline"> + <text:outline-level-style text:level="1" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="2" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="3" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="4" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="5" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="6" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="7" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="8" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="9" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="10" style:num-format=""> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab"/> + </style:list-level-properties> + </text:outline-level-style> + </text:outline-style> + <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/> + <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/> + <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/> + </office:styles> + <office:automatic-styles> + <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Frame_20_contents"> + <style:text-properties/> + </style:style> + <style:style style:name="T1" style:family="text"> + <style:text-properties/> + </style:style> + <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame"> + <style:graphic-properties style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph"/> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm"> + <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/> + </style:page-layout-properties> + <style:header-style/> + <style:footer-style/> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1"/> + </office:master-styles> + <office:body> + <office:text> + <text:sequence-decls> + <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/> + <text:sequence-decl text:display-outline-level="0" text:name="Table"/> + <text:sequence-decl text:display-outline-level="0" text:name="Text"/> + <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/> + <text:sequence-decl text:display-outline-level="0" text:name="Figure"/> + </text:sequence-decls> + <text:user-field-decls> + <text:user-field-decl office:value-type="string" office:string-value="" text:name="Test"/> + </text:user-field-decls> + <text:p text:style-name="Standard"><draw:frame draw:style-name="fr1" draw:name="Rahmen1" text:anchor-type="paragraph" svg:width="5.893cm" draw:z-index="0"> + <draw:text-box fo:min-height="0.79cm"> + <text:p text:style-name="P1"><text:span text:style-name="T1">invisible<text:line-break/><text:line-break/></text:span><text:hidden-paragraph text:condition="ooow:Test EQ """ text:is-hidden="true"/></text:p> + </draw:text-box> + </draw:frame></text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx index 668f61f99088..25d07c7348e3 100644 --- a/sw/qa/extras/layout/layout.cxx +++ b/sw/qa/extras/layout/layout.cxx @@ -745,6 +745,66 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testRedlineFlysInBody) } } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testFlyHiddenParagraph) +{ + createSwDoc("fly_hidden_paragraph.fodt"); + + // first, disable both so para gets hidden + uno::Sequence<beans::PropertyValue> argsSH( + comphelper::InitPropertySequence({ { "ShowHiddenParagraphs", uno::Any(false) } })); + dispatchCommand(mxComponent, ".uno:ShowHiddenParagraphs", argsSH); + + uno::Sequence<beans::PropertyValue> args( + comphelper::InitPropertySequence({ { "Fieldnames", uno::Any(false) } })); + + dispatchCommand(mxComponent, ".uno:Fieldnames", args); + Scheduler::ProcessEventsToIdle(); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/anchored/fly/txt/infos/bounds"_ostr, + "height"_ostr, "0"); + assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/anchored/fly/infos/bounds"_ostr, "height"_ostr, + "448"); + discardDumpedLayout(); + + // the problem was that now the fly was the same height as before hiding + dispatchCommand(mxComponent, ".uno:Fieldnames", {}); + Scheduler::ProcessEventsToIdle(); + + pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/anchored/fly/txt/infos/bounds"_ostr, + "height"_ostr, "828"); + assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/anchored/fly/infos/bounds"_ostr, "height"_ostr, + "1000"); + discardDumpedLayout(); + + dispatchCommand(mxComponent, ".uno:Fieldnames", {}); + Scheduler::ProcessEventsToIdle(); + + pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/anchored/fly/txt/infos/bounds"_ostr, + "height"_ostr, "0"); + assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/anchored/fly/infos/bounds"_ostr, "height"_ostr, + "448"); + discardDumpedLayout(); + + dispatchCommand(mxComponent, ".uno:Fieldnames", {}); + Scheduler::ProcessEventsToIdle(); + + pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/anchored/fly/txt/infos/bounds"_ostr, + "height"_ostr, "828"); + assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/anchored/fly/infos/bounds"_ostr, "height"_ostr, + "1000"); + discardDumpedLayout(); + + // other test like testTdf143239 and testTdf159101 depend on this; + // seems getting the previous value is only possible with a listener + // so just hardcode it... + dispatchCommand(mxComponent, ".uno:Fieldnames", args); + Scheduler::ProcessEventsToIdle(); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter, TestTdf134272) { createSwDoc("tdf134472.odt"); diff --git a/sw/source/core/layout/trvlfrm.cxx b/sw/source/core/layout/trvlfrm.cxx index b9e05dd30a40..9e2466c2ff38 100644 --- a/sw/source/core/layout/trvlfrm.cxx +++ b/sw/source/core/layout/trvlfrm.cxx @@ -1740,14 +1740,11 @@ bool SwFrame::IsHiddenNow() const void SwFrame::MakeValidZeroHeight() { SwRectFnSet aRectFnSet(this); - { - SwFrameAreaDefinition::FrameAreaWriteAccess area(*this); - aRectFnSet.SetHeight(area, 0); - } { SwFrameAreaDefinition::FramePrintAreaWriteAccess area(*this); aRectFnSet.SetHeight(area, 0); } + ShrinkFrame(aRectFnSet.GetHeight(getFrameArea())); setFrameAreaSizeValid(true); setFramePrintAreaValid(true); setFrameAreaPositionValid(false); commit c39e163029ac3cc5e3113ab7754566b319045a79 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Sat Jul 13 22:54:05 2024 +0500 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 tdf#161990: take MapMode's origin point into account Regression from commit cc3663bbaed4f65d64154e5f9abb51a5f622f710 (tdf#160702: improve text positioning, 2024-04-20). Change-Id: I03f461d7f03c3e67ccdb8c4376720feb69903d6b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170432 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> (cherry picked from commit ccc3996cfcbebe14e9d5f3511906cfc64ddf3452) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170466 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx index 0b6314e95928..45127a454008 100644 --- a/drawinglayer/source/processor2d/vclprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx @@ -426,13 +426,14 @@ void VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D( MapMode aMapMode = mpOutputDevice->GetMapMode(); aMapMode.SetScaleX(aMapMode.GetScaleX() * nFontScalingFixX); aMapMode.SetScaleY(aMapMode.GetScaleY() * nFontScalingFixY); + Point origin = aMapMode.GetOrigin(); mpOutputDevice->Push(vcl::PushFlags::MAPMODE); mpOutputDevice->SetRelativeMapMode(aMapMode); bChangeMapMode = true; - aPointX /= nFontScalingFixX; - aPointY /= nFontScalingFixY; + aPointX = (aPointX + origin.X()) / nFontScalingFixX - origin.X(); + aPointY = (aPointY + origin.Y()) / nFontScalingFixY - origin.Y(); } } diff --git a/sw/qa/core/text/data/tdf161990-subscripts.fodt b/sw/qa/core/text/data/tdf161990-subscripts.fodt new file mode 100644 index 000000000000..c9f172aa6d56 --- /dev/null +++ b/sw/qa/core/text/data/tdf161990-subscripts.fodt @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible: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:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:font-face-decls> + <style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="graphic"> + <style:graphic-properties draw:start-line-spacing-horizontal="2.83mm" draw:start-line-spacing-vertical="2.83mm" draw:end-line-spacing-horizontal="2.83mm" draw:end-line-spacing-vertical="2.83mm" style:writing-mode="lr-tb" style:flow-with-text="false"/> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false"/> + <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Sans" fo:font-size="12pt" style:letter-kerning="true"/> + </style:default-style> + </office:styles> + <office:automatic-styles> + <style:style style:name="T1" style:family="text"> + <style:text-properties style:text-position="-33% 58%" fo:font-size="11pt"/> + </style:style> + <style:style style:name="gr1" style:family="graphic"> + <style:graphic-properties draw:stroke="none" draw:fill="none" draw:textarea-horizontal-align="left" draw:auto-grow-height="true" draw:auto-grow-width="true" fo:min-height="5mm" fo:min-width="4mm" fo:padding-top="0" fo:padding-bottom="0" fo:padding-left="0" fo:padding-right="0" fo:wrap-option="wrap" draw:shadow="hidden" style:run-through="foreground" style:vertical-pos="top" style:vertical-rel="page-content" style:horizontal-pos="left" style:horizontal-rel="page-content"/> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties fo:page-width="210mm" fo:page-height="297mm" style:print-orientation="portrait" fo:margin-top="20mm" fo:margin-bottom="20mm" fo:margin-left="20mm" fo:margin-right="20mm" style:writing-mode="lr-tb"/> + </style:page-layout> + <style:style style:name="dp1" style:family="drawing-page"/> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/> + </office:master-styles> + <office:body> + <office:text> + <draw:frame text:anchor-type="page" text:anchor-page-number="1" draw:name="Shape_p1" draw:style-name="gr1" svg:width="9.16mm" svg:height="8.4mm" svg:x="0" svg:y="0"> + <draw:text-box> + <text:p>P<text:span text:style-name="T1">1</text:span></text:p> + </draw:text-box> + </draw:frame> + <draw:frame text:anchor-type="page" text:anchor-page-number="6" draw:name="Shape_p6" draw:style-name="gr1" svg:width="9.16mm" svg:height="8.4mm" svg:x="0" svg:y="0"> + <draw:text-box> + <text:p>P<text:span text:style-name="T1">1</text:span></text:p> + </draw:text-box> + </draw:frame> + <text:p/> + </office:text> + </office:body> +</office:document> \ No newline at end of file diff --git a/sw/qa/core/text/text.cxx b/sw/qa/core/text/text.cxx index f18c4fd531f8..722ca5ccd1d0 100644 --- a/sw/qa/core/text/text.cxx +++ b/sw/qa/core/text/text.cxx @@ -1660,6 +1660,64 @@ CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testTdf112594) u"\u202F\u1824"_ustr); } +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testTdf161990) +{ + auto pPDFium = vcl::pdf::PDFiumLibrary::get(); + if (!pPDFium) + return; + + // Given a file with two frames, each having a subscript run, on pages 1 and 6: + createSwDoc("tdf161990-subscripts.fodt"); + + // When exporting to PDF: + save(u"writer_pdf_Export"_ustr); + auto pPdfDocument = parsePDFExport(); + + // Check that both subscripts are positioned correctly relative to the non-subscript runs + double expectedOffset = 0; + + // Page 1 + { + auto pPage = pPdfDocument->openPage(0); + auto pTextPage = pPage->getTextPage(); + + CPPUNIT_ASSERT_EQUAL(2, pPage->getObjectCount()); + + auto pObject = pPage->getObject(0); + CPPUNIT_ASSERT_EQUAL(u"P"_ustr, pObject->getText(pTextPage)); + auto textPPos = pObject->getBounds(); + pObject = pPage->getObject(1); + CPPUNIT_ASSERT_EQUAL(u"1"_ustr, pObject->getText(pTextPage)); + auto text1Pos = pObject->getBounds(); + expectedOffset = textPPos.getMaxY() - text1Pos.getMaxY(); + // Without the fix, this would fail with + // - Expected: 7.49 + // - Actual : 7.54150390625 + // But if it fails in some configurations because of different page units, then this + // check is not as important as that this value is the same as on the 6th page below. + CPPUNIT_ASSERT_DOUBLES_EQUAL(7.49, expectedOffset, 0.01); + } + + // Page 6 + { + auto pPage = pPdfDocument->openPage(5); + auto pTextPage = pPage->getTextPage(); + + CPPUNIT_ASSERT_EQUAL(2, pPage->getObjectCount()); + + auto pObject = pPage->getObject(0); + CPPUNIT_ASSERT_EQUAL(u"P"_ustr, pObject->getText(pTextPage)); + auto textPPos = pObject->getBounds(); + pObject = pPage->getObject(1); + CPPUNIT_ASSERT_EQUAL(u"1"_ustr, pObject->getText(pTextPage)); + auto text1Pos = pObject->getBounds(); + // Without the fix, this would fail with + // - Expected: 7.4925537109375 + // - Actual : 20.9005126953125 + CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedOffset, textPPos.getMaxY() - text1Pos.getMaxY(), 0.01); + } +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 7dbc5804e513fa94cc2e13b30d50215a27e8dfc1 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Thu Jul 11 14:22:58 2024 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 tdf#161985: getOpacity is also called from other places Partially revert 56039daae4a436d7ea1b093a02cf0e8ad3bda4a9 "tdf#149673: only check opacity from parent..." to make getOpacity behave as before and move the new behaviour of getOpacity inside add_postProcess Change-Id: If475cddbc4967308fa06adacda621cb3790c6f70 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170351 Reviewed-by: Aron Budea <aron.bu...@collabora.com> Tested-by: Jenkins diff --git a/svgio/qa/cppunit/SvgImportTest.cxx b/svgio/qa/cppunit/SvgImportTest.cxx index 3dd819f6522b..54410685107b 100644 --- a/svgio/qa/cppunit/SvgImportTest.cxx +++ b/svgio/qa/cppunit/SvgImportTest.cxx @@ -422,6 +422,19 @@ CPPUNIT_TEST_FIXTURE(Test, testFontsizeRelative) assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[2]"_ostr, "familyname"_ostr, "DejaVu Serif"); } +CPPUNIT_TEST_FIXTURE(Test, testTdf161985) +{ + xmlDocUniquePtr pDocument = dumpAndParseSvg(u"/svgio/qa/cppunit/data/tdf161985.svg"); + + // Without the fix in place, this test would have failed with + // - Expected: 0 + // - Actual : 1 + assertXPath(pDocument, "/primitive2D/transform/polypolygoncolor"_ostr, 0); + + assertXPath(pDocument, "/primitive2D/transform/textsimpleportion"_ostr, 1); + assertXPath(pDocument, "/primitive2D/transform/textsimpleportion"_ostr, "text"_ostr, u"This is a test file."_ustr); +} + CPPUNIT_TEST_FIXTURE(Test, testTdf160386) { xmlDocUniquePtr pDocument = dumpAndParseSvg(u"/svgio/qa/cppunit/data/tdf160386.svg"); diff --git a/svgio/qa/cppunit/data/tdf161985.svg b/svgio/qa/cppunit/data/tdf161985.svg new file mode 100644 index 000000000000..781811b15dbf --- /dev/null +++ b/svgio/qa/cppunit/data/tdf161985.svg @@ -0,0 +1,14 @@ +<svg viewBox="0 0 630 550" xmlns="http://www.w3.org/2000/svg"> + <style type="text/css"> + #help { font-size:12px; } + </style> + <g> + <g id="help" opacity="0"> + <path + d="M16 50 c-16 0 -16 -8 -16 -16 v-18 c0 -16 8 -16 16 -16 h300 c16 0 16 5 16 16 v18 c0 16 -8 16 -16 16 H60 L0 70 L36 50 H16"/> + </g> + <text> + <tspan x="101.0625" y="222.22849">This is a test file.</tspan> + </text> + </g> +</svg> diff --git a/svgio/source/svgreader/svgstyleattributes.cxx b/svgio/source/svgreader/svgstyleattributes.cxx index bb15fbfdc0a3..6c36c306ce24 100644 --- a/svgio/source/svgreader/svgstyleattributes.cxx +++ b/svgio/source/svgreader/svgstyleattributes.cxx @@ -1175,7 +1175,24 @@ namespace svgio::svgreader drawinglayer::primitive2d::Primitive2DContainer&& rSource, const std::optional<basegfx::B2DHomMatrix>& pTransform) const { - const double fOpacity(getOpacity().solve(mrOwner)); + // default is 1 + double fOpacity(1.0); + + if(maOpacity.isSet()) + { + fOpacity = maOpacity.solve(mrOwner); + } + else + { + // if opacity is not set, check the css style + if (const SvgStyleAttributes* pSvgStyleAttributes = getCssStyleParent()) + { + if (pSvgStyleAttributes->maOpacity.isSet()) + { + fOpacity = pSvgStyleAttributes->maOpacity.solve(mrOwner); + } + } + } if(basegfx::fTools::equalZero(fOpacity)) { @@ -1297,7 +1314,7 @@ namespace svgio::svgreader maBaselineShift(BaselineShift::Baseline), maBaselineShiftNumber(0), maDominantBaseline(DominantBaseline::Auto), - maResolvingParent(34, 0), + maResolvingParent(35, 0), mbStrokeDasharraySet(false), mbContextFill(false), mbContextStroke(false), @@ -2405,16 +2422,14 @@ namespace svgio::svgreader return maOpacity; } - // This is called from add_postProcess so only check the parent style - // if it has a local css style, because it's the first in the stack - if(mrOwner.hasLocalCssStyle()) - { - const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle(); + const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle(); - if (pSvgStyleAttributes && pSvgStyleAttributes->maOpacity.isSet()) - { - return pSvgStyleAttributes->maOpacity; - } + if (pSvgStyleAttributes && maResolvingParent[34] < nStyleDepthLimit) + { + ++maResolvingParent[34]; + auto ret = pSvgStyleAttributes->getOpacity(); + --maResolvingParent[34]; + return ret; } // default is 1 commit 06b97811454e2124642e40f7f27c1ae621319368 Author: Patrick Luby <guibmac...@gmail.com> AuthorDate: Thu Jul 11 20:44:55 2024 -0400 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 tdf#67943 tabs must have radio button role and tab button subrole Also, reimplement -[AquaA11yWrapper tabsAttribute] to return children for tab bars. This will cause VoiceOver to announce that the currently selected tab is "X of Y" tabs in the tab bar. Change-Id: I2c3b890fd445c22842b90d60170a71e4e8aa91ff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170389 Reviewed-by: Patrick Luby <guibomac...@gmail.com> Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> (cherry picked from commit c2061f21b1a88c9692a4e081280ed2c52e0b9141) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170358 diff --git a/vcl/osx/a11yrolehelper.mm b/vcl/osx/a11yrolehelper.mm index 5b621a74e23a..7a8ef5adcbf6 100644 --- a/vcl/osx/a11yrolehelper.mm +++ b/vcl/osx/a11yrolehelper.mm @@ -83,7 +83,8 @@ using namespace ::com::sun::star::uno; MAP( AccessibleRole::MENU_BAR, NSAccessibilityMenuBarRole ); MAP( AccessibleRole::MENU_ITEM, NSAccessibilityMenuItemRole ); MAP( AccessibleRole::OPTION_PANE, NSAccessibilityUnknownRole ); // FIXME - MAP( AccessibleRole::PAGE_TAB, NSAccessibilityButtonRole ); + // tdf#67943 tabs must have radio button role and tab button subrole + MAP( AccessibleRole::PAGE_TAB, NSAccessibilityRadioButtonRole ); MAP( AccessibleRole::PAGE_TAB_LIST, NSAccessibilityTabGroupRole ); MAP( AccessibleRole::PANEL, NSAccessibilityGroupRole ); MAP( AccessibleRole::PARAGRAPH, NSAccessibilityTextAreaRole ); @@ -220,7 +221,8 @@ using namespace ::com::sun::star::uno; MAP( AccessibleRole::MENU_BAR, @"" ); MAP( AccessibleRole::MENU_ITEM, @"" ); MAP( AccessibleRole::OPTION_PANE, @"" ); - MAP( AccessibleRole::PAGE_TAB, @"" ); + // tdf#67943 tabs must have radio button role and tab button subrole + MAP( AccessibleRole::PAGE_TAB, NSAccessibilityTabButtonSubrole ); MAP( AccessibleRole::PAGE_TAB_LIST, @"" ); MAP( AccessibleRole::PANEL, @"" ); MAP( AccessibleRole::PARAGRAPH, @"" ); diff --git a/vcl/osx/a11ywrapper.mm b/vcl/osx/a11ywrapper.mm index 9ad6f0d473bc..ec8be4afdfef 100644 --- a/vcl/osx/a11ywrapper.mm +++ b/vcl/osx/a11ywrapper.mm @@ -560,7 +560,14 @@ static std::ostream &operator<<(std::ostream &s, NSObject *obj) { } -(id)tabsAttribute { - return self; // TODO ??? + // Related tdf#67943: return children if this is a tab bar + // This will cause VoiceOver to announce that the currently selected tab + // is "X of Y" tabs in the tab bar. + if ( [ self accessibleContext ] -> getAccessibleRole() == AccessibleRole::PAGE_TAB_LIST ) { + return [ self childrenAttribute ]; + } else { + return nil; + } } -(id)sharedTextUIElementsAttribute { commit 3ed8874df97abe2dde8ca4174b2cea40bce38c39 Author: Patrick Luby <guibmac...@gmail.com> AuthorDate: Wed Jul 10 08:27:01 2024 -0400 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 tdf#160427 native menu changes can only be done on the main thread Change-Id: I7dbe9913eaa087e143acb95bdae625c69888c3dd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170308 Reviewed-by: Patrick Luby <guibomac...@gmail.com> Tested-by: Jenkins (cherry picked from commit 8e8036491ff0a6c2df2075af66609df17ee594cd) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170297 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx index 800affc060ef..dcac168f7e53 100644 --- a/vcl/osx/salmenu.cxx +++ b/vcl/osx/salmenu.cxx @@ -385,6 +385,9 @@ void AquaSalMenu::setMainMenu() void AquaSalMenu::setDefaultMenu() { + // tdf#160427 native menu changes can only be done on the main thread + OSX_SALDATA_RUNINMAIN(AquaSalMenu::setDefaultMenu()) + NSMenu* pMenu = [NSApp mainMenu]; unsetMainMenu(); @@ -498,6 +501,9 @@ void AquaSalMenu::InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) void AquaSalMenu::RemoveItem( unsigned nPos ) { + // tdf#160427 native menu changes can only be done on the main thread + OSX_SALDATA_RUNINMAIN(RemoveItem(nPos)) + AquaSalMenuItem* pRemoveItem = nullptr; if( nPos == MENU_APPEND || nPos == (maItems.size()-1) ) { commit 8cdf1e07e8130b84c714398c00c598f6316fce57 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Wed Jul 10 16:49:24 2024 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 merge-app-bundles: fix _ctypes.cpython path Change-Id: I247c9674de88c9b97297d01b24232a562bcade01 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170318 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Tested-by: Jenkins (cherry picked from commit a7f64217aad6375ea07e260ad2a6bd1e7900af6c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170301 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/bin/merge-app-bundles b/bin/merge-app-bundles index b92c90b5a0c9..34f84274ec5d 100755 --- a/bin/merge-app-bundles +++ b/bin/merge-app-bundles @@ -110,7 +110,7 @@ OUT=$(cd "$3" && /bin/pwd) else # We ignore some files that can't be built for macOS on arm64 for now case "$fname" in - ./Contents/Frameworks/LibreOfficePython.framework/Versions/3.7/lib/python*/lib-dynload/_ctypes.cpython-*m.so) + ./Contents/Frameworks/LibreOfficePython.framework/Versions/3.*/lib/python*/lib-dynload/_ctypes.cpython-*m.so) ;; *) echo "$fname does not exist in $TWO" >&2 commit 4b21973befb89b1c8b8ecd11d5dde4bed8aafc59 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Wed Jul 10 11:14:38 2024 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 cid#1608592 Double lock since: commit 9301f4d486b13dac2a66b797d5e24eb6dc9f7582 Date: Thu Feb 16 14:31:25 2023 +0200 osl::Mutex->std::mutex in ResultSetDataSupplier Change-Id: I6be50541e00f8f8de3bdebe1690e14e805bee14e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170281 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> (cherry picked from commit 3374417097edcee8c8951fd1df6044e2d24b74a6) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170293 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/ucb/source/ucp/tdoc/tdoc_datasupplier.cxx b/ucb/source/ucp/tdoc/tdoc_datasupplier.cxx index 9930f80d6e3c..272349bd6e46 100644 --- a/ucb/source/ucp/tdoc/tdoc_datasupplier.cxx +++ b/ucb/source/ucp/tdoc/tdoc_datasupplier.cxx @@ -77,7 +77,7 @@ ResultSetDataSupplier::queryContentIdentifierString( sal_uInt32 nIndex ) } OUString -ResultSetDataSupplier::queryContentIdentifierStringImpl( std::unique_lock<std::mutex>& /*rGuard*/, sal_uInt32 nIndex ) +ResultSetDataSupplier::queryContentIdentifierStringImpl( std::unique_lock<std::mutex>& rGuard, sal_uInt32 nIndex ) { if ( nIndex < m_aResults.size() ) { @@ -89,7 +89,7 @@ ResultSetDataSupplier::queryContentIdentifierStringImpl( std::unique_lock<std::m } } - if ( getResult( nIndex ) ) + if ( getResultImpl(rGuard, nIndex) ) { // Note: getResult fills m_pImpl->m_aResults[ nIndex ]->aURL. return m_aResults[ nIndex ].aURL; commit e8049f0b4be2cfda55ff3a97728733a1dcf6691c Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Tue Jul 9 17:22:15 2024 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 package: ZipFile: don't accept duplicate entries (case insensitive) This is required for OOXML, but not for ODF. Unclear if there are use cases for this with ODF, can add some conditions if it turns out to be a problem. Change-Id: I3810da5c2273574135d133b4a9bbad98dc97af44 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170223 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 4833f131243bdb409ddfaff8b4db87d4ed2af98f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170282 Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com> diff --git a/package/inc/ZipFile.hxx b/package/inc/ZipFile.hxx index 8bc726af8457..d9910fde92a9 100644 --- a/package/inc/ZipFile.hxx +++ b/package/inc/ZipFile.hxx @@ -29,6 +29,8 @@ #include "HashMaps.hxx" #include "EncryptionData.hxx" +#include <unordered_set> + class MemoryByteGrabber; namespace com::sun::star { namespace uno { class XComponentContext; } @@ -52,6 +54,8 @@ class ZipFile { rtl::Reference<comphelper::RefCountedMutex> m_aMutexHolder; + std::unordered_set<OUString> m_EntriesInsensitive; + EntryHash aEntries; ByteGrabber aGrabber; ZipUtils::Inflater aInflater; diff --git a/package/source/zipapi/ZipFile.cxx b/package/source/zipapi/ZipFile.cxx index c7e10cb06e39..1e1ab575dcfe 100644 --- a/package/source/zipapi/ZipFile.cxx +++ b/package/source/zipapi/ZipFile.cxx @@ -94,6 +94,7 @@ ZipFile::ZipFile( rtl::Reference<comphelper::RefCountedMutex> aMutexHolder, if (bInitialise && readCEN() == -1 ) { aEntries.clear(); + m_EntriesInsensitive.clear(); throw ZipException( "stream data looks to be broken" ); } } @@ -118,6 +119,7 @@ ZipFile::ZipFile( rtl::Reference< comphelper::RefCountedMutex > aMutexHolder, else if ( readCEN() == -1 ) { aEntries.clear(); + m_EntriesInsensitive.clear(); throw ZipException("stream data looks to be broken" ); } } @@ -1156,15 +1158,19 @@ sal_Int32 ZipFile::readCEN() continue; // This is a directory entry, not a stream - skip it } - if (auto it = aEntries.find(aEntry.sPath); it == aEntries.end()) - { - aEntries[aEntry.sPath] = aEntry; - } - else + if (aEntries.find(aEntry.sPath) != aEntries.end()) { SAL_INFO("package", "Duplicate CEN entry: \"" << aEntry.sPath << "\""); throw ZipException(u"Duplicate CEN entry"_ustr); } + // this is required for OOXML, but not for ODF + auto const lowerPath(aEntry.sPath.toAsciiLowerCase()); + if (!m_EntriesInsensitive.insert(lowerPath).second) + { + SAL_INFO("package", "Duplicate CEN entry (case insensitive): \"" << aEntry.sPath << "\""); + throw ZipException(u"Duplicate CEN entry (case insensitive)"_ustr); + } + aEntries[aEntry.sPath] = aEntry; } if (nCount != nTotal) @@ -1373,7 +1379,13 @@ void ZipFile::recover() nPos += 4; continue; } - + auto const lowerPath(aEntry.sPath.toAsciiLowerCase()); + if (m_EntriesInsensitive.find(lowerPath) != m_EntriesInsensitive.end()) + { // this is required for OOXML, but not for ODF + nPos += 4; + continue; + } + m_EntriesInsensitive.insert(lowerPath); aEntries.emplace( aEntry.sPath, aEntry ); // Drop any "directory" entry corresponding to this one's path; commit 3c6dc6b629c51530fb4531e60c0c599128f33c18 Author: Patrick Luby <guibmac...@gmail.com> AuthorDate: Tue Jul 9 15:47:24 2024 -0400 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 tdf#161712 invoke ScSimpleUndo::EndUndo() before ShowBlock() If this is an instance of ScUndoAutoFill, ShowBlock() will invoke ScTabViewShell::MoveCursorAbs() which will delete this instance so invoke ScSimpleUndo::EndUndo() first. Change-Id: I7ef6dfa0444c38974e1d8c5af6672144f045d22d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170254 Tested-by: Jenkins Reviewed-by: Patrick Luby <guibomac...@gmail.com> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> (cherry picked from commit 99fda8da4e0a1b24c9aaecacfeeba0fe593fe730) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170288 Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com> Tested-by: Patrick Luby <guibomac...@gmail.com> diff --git a/sc/source/ui/undo/undobase.cxx b/sc/source/ui/undo/undobase.cxx index 9c7f5571dd71..71a0bfe957f4 100644 --- a/sc/source/ui/undo/undobase.cxx +++ b/sc/source/ui/undo/undobase.cxx @@ -270,8 +270,12 @@ void ScBlockUndo::EndUndo() EnableDrawAdjust( &pDocShell->GetDocument(), true ); DoSdrUndoAction( pDrawUndo.get(), &pDocShell->GetDocument() ); - ShowBlock(); + // tdf#161712 invoke ScSimpleUndo::EndUndo() before ShowBlock() + // If this is an instance of ScUndoAutoFill, ShowBlock() will invoke + // ScTabViewShell::MoveCursorAbs() which will delete this instance + // so invoke ScSimpleUndo::EndUndo() first. ScSimpleUndo::EndUndo(); + ShowBlock(); } void ScBlockUndo::EndRedo() commit 505ec552894030ceb9cbb16173999237ccbf3bc1 Author: Christian Lohmaier <lohmaier+libreoff...@googlemail.com> AuthorDate: Wed Jul 10 13:39:59 2024 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Jul 16 10:27:42 2024 +0200 update credits Change-Id: If9db88d33699c5cd3c48dca42bc3c86e6f3eea3b (cherry picked from commit d35deb92f8029a40fa1cc579c4481a5c5eaf2791) diff --git a/readlicense_oo/license/CREDITS.fodt b/readlicense_oo/license/CREDITS.fodt index 7b2c705d9bde..2b36596b6033 100644 --- a/readlicense_oo/license/CREDITS.fodt +++ b/readlicense_oo/license/CREDITS.fodt @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:c alcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext: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:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form: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:officeooo="http://openoffice.org/2009/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns: meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.3" 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/24.2.3.2$Linux_X86_64 LibreOffice_project/433d9c2ded56988e8a90e6b2e771ee4e6a5ab2ba</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="4940" meta:word-count="18491" meta:character-count="133884" meta:non-whitespace-character-count="117446"/><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/24.2.4.2$Linux_X86_64 LibreOffice_project/51a6219feb6075d9a4c46691dcfe0cd9c4fff3c2</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="4949" meta:word-count="18519" meta:character-count="134125" meta:non-whitespace-character-count="117661"/><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">656</config:config-item> + <config:config-item config:name="ViewAreaTop" config:type="long">635</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">55167</config:config-item> <config:config-item config:name="ViewAreaHeight" config:type="long">26963</config:config-item> @@ -16,9 +16,9 @@ <config:config-item config:name="ViewLeft" config:type="long">3623</config:config-item> <config:config-item config:name="ViewTop" config:type="long">3434</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">656</config:config-item> + <config:config-item config:name="VisibleTop" config:type="long">635</config:config-item> <config:config-item config:name="VisibleRight" config:type="long">55667</config:config-item> - <config:config-item config:name="VisibleBottom" config:type="long">27617</config:config-item> + <config:config-item config:name="VisibleBottom" config:type="long">27596</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> @@ -59,6 +59,7 @@ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item> <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item> <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item> + <config:config-item config:name="ApplyTextAttrToEmptyLineAtEndOfParagraph" config:type="boolean">false</config:config-item> <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item> <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item> <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">true</config:config-item> @@ -146,7 +147,7 @@ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item> <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/> <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item> - <config:config-item config:name="Rsid" config:type="int">13597256</config:config-item> + <config:config-item config:name="Rsid" config:type="int">13654134</config:config-item> <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item> <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item> <config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item> @@ -176,7 +177,7 @@ <office:styles> <style:default-style style:family="graphic"> <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" style:flow-with-text="true"/> - <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:font-independent-line-spacing="false"> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="lr-tb" style:font-independent-line-spacing="false"> <style:tab-stops/> </style:paragraph-properties> <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="hu" fo:country="HU" style:letter-kerning="true" style:font-name-asian="SimSun" style:font-size-asian="12pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Mangal1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/> @@ -370,23 +371,20 @@ </office:styles> <office:automatic-styles> <style:style style:name="Tabelle1" style:family="table"> - <style:table-properties style:width="26.386cm" table:align="left"/> + <style:table-properties style:width="25.963cm" table:align="left"/> </style:style> <style:style style:name="Tabelle1.A" style:family="table-column"> - <style:table-column-properties style:column-width="6.722cm"/> + <style:table-column-properties style:column-width="6.828cm"/> </style:style> <style:style style:name="Tabelle1.B" style:family="table-column"> - <style:table-column-properties style:column-width="6.14cm"/> + <style:table-column-properties style:column-width="6.219cm"/> </style:style> <style:style style:name="Tabelle1.C" style:family="table-column"> - <style:table-column-properties style:column-width="6.802cm"/> + <style:table-column-properties style:column-width="6.696cm"/> </style:style> <style:style style:name="Tabelle1.A1" style:family="table-cell"> <style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/> </style:style> - <style:style style:name="Tabelle1.C461" style:family="table-cell"> - <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/> - </style:style> <style:style style:name="Tabelle2" style:family="table"> <style:table-properties style:width="18.078cm" table:align="left"/> </style:style> @@ -448,16 +446,16 @@ <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/> </style:style> <style:style style:name="Tabelle5" style:family="table"> - <style:table-properties style:width="32.075cm" table:align="left"/> + <style:table-properties style:width="32.683cm" table:align="left"/> </style:style> <style:style style:name="Tabelle5.A" style:family="table-column"> - <style:table-column-properties style:column-width="5.743cm"/> + <style:table-column-properties style:column-width="6.722cm"/> </style:style> <style:style style:name="Tabelle5.B" style:family="table-column"> - <style:table-column-properties style:column-width="11.696cm"/> + <style:table-column-properties style:column-width="6.219cm"/> </style:style> <style:style style:name="Tabelle5.C" style:family="table-column"> - <style:table-column-properties style:column-width="6.59cm"/> + <style:table-column-properties style:column-width="11.696cm"/> </style:style> <style:style style:name="Tabelle5.D" style:family="table-column"> <style:table-column-properties style:column-width="8.045cm"/> @@ -465,7 +463,7 @@ <style:style style:name="Tabelle5.A1" style:family="table-cell"> <style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/> </style:style> - <style:style style:name="Tabelle5.D728" style:family="table-cell"> + <style:style style:name="Tabelle5.C730" style:family="table-cell"> <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/> </style:style> <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents"> @@ -1163,20 +1161,20 @@ </draw:frame> <text:section text:style-name="Sect1" text:name="BgContainer"> <text:p text:style-name="P32">Credits</text:p> - <text:p text:style-name="Text_20_body">1972 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2024-05-28 14:34:40.</text:p> + <text:p text:style-name="Text_20_body">1974 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2024-07-10 13:20:35.</text:p> <text:p text:style-name="Text_20_body"><text:span text:style-name="T1">*</text:span> marks developers whose first contributions happened after 2010-09-28.</text:p> <text:h text:style-name="Heading_20_2" text:outline-level="2">Developers committing code since 2010-09-28</text:h> <table:table table:name="Tabelle1" table:style-name="Tabelle1"> <table:table-column table:style-name="Tabelle1.A"/> <table:table-column table:style-name="Tabelle1.B"/> <table:table-column table:style-name="Tabelle1.C"/> - <table:table-column table:style-name="Tabelle1.A"/> + <table:table-column table:style-name="Tabelle1.B"/> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Ruediger Timm<text:line-break/>Commits: 82464<text:line-break/>Joined: 2000-10-10</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 35504<text:line-break/>Joined: 2000-10-10</text:p> + <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 35643<text:line-break/>Joined: 2000-10-10</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Kurt Zenker<text:line-break/>Commits: 31752<text:line-break/>Joined: 2000-09-25</text:p> @@ -1193,15 +1191,15 @@ <text:p text:style-name="Table_20_Contents">Vladimir Glazunov<text:line-break/>Commits: 25434<text:line-break/>Joined: 2000-12-04</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 21201<text:line-break/>Joined: 2000-10-04</text:p> + <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 21231<text:line-break/>Joined: 2000-10-04</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 18814<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 18998<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 9965<text:line-break/>Joined: 2010-07-29</text:p> + <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 10002<text:line-break/>Joined: 2010-07-29</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Ivo Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined: 2002-09-09</text:p> @@ -1210,7 +1208,7 @@ <text:p text:style-name="Table_20_Contents">Tor Lillqvist<text:line-break/>Commits: 9160<text:line-break/>Joined: 2010-03-23</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 8485<text:line-break/>Joined: 2008-06-16</text:p> + <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 8522<text:line-break/>Joined: 2008-06-16</text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1218,7 +1216,7 @@ <text:p text:style-name="Table_20_Contents">Kohei Yoshida<text:line-break/>Commits: 5571<text:line-break/>Joined: 2009-06-19</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 5356<text:line-break/>Joined: 2000-10-11</text:p> + <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 5359<text:line-break/>Joined: 2000-10-11</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Markus Mohrhard<text:line-break/>Commits: 5203<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-17</text:span></text:p> @@ -1229,21 +1227,21 @@ </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits: 3973<text:line-break/>Joined: <text:span text:style-name="T2">2014-10-30</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits: 4090<text:line-break/>Joined: <text:span text:style-name="T2">2014-10-30</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 3894<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 3903<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">David Tardon<text:line-break/>Commits: 3648<text:line-break/>Joined: 2009-11-12</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits: 3485<text:line-break/>Joined: <text:span text:style-name="T2">2012-06-02</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits: 3533<text:line-break/>Joined: <text:span text:style-name="T2">2012-06-02</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits: 3412<text:line-break/>Joined: <text:span text:style-name="T2">2015-04-26</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits: 3480<text:line-break/>Joined: <text:span text:style-name="T2">2015-04-26</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Luboš Luňák<text:line-break/>Commits: 3201<text:line-break/>Joined: 2010-09-21</text:p> @@ -1252,7 +1250,7 @@ <text:p text:style-name="Table_20_Contents">Hans-Joachim Lankenau<text:line-break/>Commits: 3007<text:line-break/>Joined: 2000-09-19</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits: 2915<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-06</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits: 2986<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-06</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1263,7 +1261,7 @@ <text:p text:style-name="Table_20_Contents">Jan Holesovsky<text:line-break/>Commits: 2672<text:line-break/>Joined: 2009-06-23</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Oliver Specht<text:line-break/>Commits: 2601<text:line-break/>Joined: 2000-09-21</text:p> + <text:p text:style-name="Table_20_Contents">Oliver Specht<text:line-break/>Commits: 2605<text:line-break/>Joined: 2000-09-21</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Mathias Bauer<text:line-break/>Commits: 2580<text:line-break/>Joined: 2000-09-20</text:p> @@ -1271,7 +1269,7 @@ </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Michael Meeks<text:line-break/>Commits: 2513<text:line-break/>Joined: 2004-08-05</text:p> + <text:p text:style-name="Table_20_Contents">Michael Meeks<text:line-break/>Commits: 2515<text:line-break/>Joined: 2004-08-05</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Bjoern Michaelsen<text:line-break/>Commits: 2493<text:line-break/>Joined: 2009-10-14</text:p> @@ -1285,13 +1283,13 @@ </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Olivier Hallot<text:line-break/>Commits: 2124<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-25</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Olivier Hallot<text:line-break/>Commits: 2142<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-25</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Philipp Lohmann [pl]<text:line-break/>Commits: 2089<text:line-break/>Joined: 2000-09-21</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 2010<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-02</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 2013<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-02</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Christian Lippka<text:line-break/>Commits: 1805<text:line-break/>Joined: 2000-09-25</text:p> @@ -1302,7 +1300,7 @@ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matúš Kukan<text:line-break/>Commits: 1712<text:line-break/>Joined: <text:span text:style-name="T2">2011-04-06</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Armin Le Grand (allotropia)<text:line-break/>Commits: 1700<text:line-break/>Joined: 2000-09-25</text:p> + <text:p text:style-name="Table_20_Contents">Armin Le Grand (allotropia)<text:line-break/>Commits: 1705<text:line-break/>Joined: 2000-09-25</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Takeshi Abe<text:line-break/>Commits: 1486<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-08</text:span></text:p> @@ -1322,24 +1320,27 @@ <text:p text:style-name="Table_20_Contents">Fridrich Štrba<text:line-break/>Commits: 1339<text:line-break/>Joined: 2007-02-22</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Thomas Lange [tl]<text:line-break/>Commits: 1310<text:line-break/>Joined: 2000-09-22</text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Samuel Mehrbrodt<text:line-break/>Commits: 1326<text:line-break/>Joined: <text:span text:style-name="T2">2011-06-08</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Samuel Mehrbrodt<text:line-break/>Commits: 1303<text:line-break/>Joined: <text:span text:style-name="T2">2011-06-08</text:span></text:p> + <text:p text:style-name="Table_20_Contents">Thomas Lange [tl]<text:line-break/>Commits: 1310<text:line-break/>Joined: 2000-09-22</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Niklas Nebel<text:line-break/>Commits: 1296<text:line-break/>Joined: 2000-09-19</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Szymon Kłos<text:line-break/>Commits: 1258<text:line-break/>Joined: <text:span text:style-name="T2">2014-03-22</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Michael Weghorn<text:line-break/>Commits: 1271<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-10</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Christian Lohmaier<text:line-break/>Commits: 1249<text:line-break/>Joined: 2008-06-01</text:p> + <text:p text:style-name="Table_20_Contents">Christian Lohmaier<text:line-break/>Commits: 1268<text:line-break/>Joined: 2008-06-01</text:p> </table:table-cell> </table:table-row> <table:table-row> + <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Szymon Kłos<text:line-break/>Commits: 1261<text:line-break/>Joined: <text:span text:style-name="T2">2014-03-22</text:span></text:p> + </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jan-Marek Glogowski<text:line-break/>Commits: 1232<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-14</text:span></text:p> </table:table-cell> @@ -1349,13 +1350,10 @@ <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tamás Zolnai<text:line-break/>Commits: 1208<text:line-break/>Joined: <text:span text:style-name="T2">2012-08-06</text:span></text:p> </table:table-cell> - <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Daniel Rentz [dr]<text:line-break/>Commits: 1206<text:line-break/>Joined: 2000-09-28</text:p> - </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Michael Weghorn<text:line-break/>Commits: 1193<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-10</text:span></text:p> + <text:p text:style-name="Table_20_Contents">Daniel Rentz [dr]<text:line-break/>Commits: 1206<text:line-break/>Joined: 2000-09-28</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> -e ... etc. - the rest is truncated