sw/qa/extras/layout/data/U-min.fodt | 364 ++++++++++++++++++++++++++++++++++++ sw/qa/extras/layout/layout3.cxx | 62 ++++++ sw/source/core/inc/frame.hxx | 1 sw/source/core/inc/layfrm.hxx | 1 sw/source/core/inc/txtfrm.hxx | 2 sw/source/core/layout/frmtool.cxx | 16 + sw/source/core/layout/sectfrm.cxx | 1 sw/source/core/text/txtfrm.cxx | 12 + 8 files changed, 458 insertions(+), 1 deletion(-)
New commits: commit 0b7d91a53dfea8d1a4e6234dc7c72c0337eedd3a Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Tue Sep 3 20:25:36 2024 +0200 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Thu Sep 5 13:11:13 2024 +0200 sw: fix hiding of flys in hidden sections There are 2 different ways to hide flys, either destroy the SwFlyFrames (as is done for delete redlines or fieldmarks) or move them to an invisible layer (as is done for field-hidden paragraphs). Previously for hidden sections the FlyFrames would be destroyed, but it's easier now to move them to invisible layer. HideAndShowObjects() needs to be recursive so it can hide flys that are anchored in a table. (regression from commit ff7f1b59e22092d8548459e75fe912db852f056f) Change-Id: Ideab0343315e575c066eb9e2e901d2ee0acabe3a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172865 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> Tested-by: Jenkins (cherry picked from commit 8a13277f797c6e2f1b0d9060ad6e5e4d72eb76d0) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172884 Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/sw/qa/extras/layout/data/U-min.fodt b/sw/qa/extras/layout/data/U-min.fodt new file mode 100644 index 000000000000..404cf7b3ed84 --- /dev/null +++ b/sw/qa/extras/layout/data/U-min.fodt @@ -0,0 +1,364 @@ +<?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-pitch="variable"/> + <style:font-face style:name="Times New Roman1" svg:font-family="'Times New Roman'" style:font-adornments="Standard" style:font-family-generic="roman" style:font-pitch="variable"/> + <style:font-face style:name="Arial" svg:font-family="Arial" style:font-adornments="Standard" style:font-family-generic="swiss" style:font-pitch="variable"/> + <style:font-face style:name="Lucida Sans Unicode" svg:font-family="'Lucida Sans Unicode'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Tahoma" svg:font-family="Tahoma" 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="#808080" draw:fill-color="#cfe7f5" 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 fo:color="#000000" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="de" fo:country="DE" style:font-name-asian="Lucida Sans Unicode" style:font-size-asian="12pt" style:language-asian="en" style:country-asian="US" style:font-name-complex="Tahoma" style:font-size-complex="12pt" style:language-complex="en" style:country-complex="US"/> + </style:default-style> + <style:default-style style:family="paragraph"> + <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.997cm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="de" fo:country="DE" style:font-name-asian="Lucida Sans Unicode" style:font-size-asian="12pt" style:language-asian="en" style:country-asian="US" style:font-name-complex="Tahoma" style:font-size-complex="12pt" style:language-complex="en" style:country-complex="US" 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:class="extra"/> + <style:style style:name="VordruckGroß" style:family="paragraph" style:parent-style-name="Schrift1"> + <style:text-properties fo:font-size="11pt" fo:font-weight="bold"/> + </style:style> + <style:style style:name="Schrift1" style:family="paragraph"> + <style:paragraph-properties> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties style:font-name="Arial" fo:font-family="Arial" style:font-style-name="Standard" style:font-family-generic="swiss" style:font-pitch="variable"/> + </style:style> + <style:style style:name="Schrift2" style:family="paragraph" style:master-page-name=""> + <style:paragraph-properties style:page-number="auto"/> + <style:text-properties style:font-name="Times New Roman1" fo:font-family="'Times New Roman'" style:font-style-name="Standard" style:font-family-generic="roman" style:font-pitch="variable"/> + </style:style> + <style:style style:name="TextNormal" style:family="paragraph" style:parent-style-name="Schrift2" style:master-page-name=""> + <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:line-height="150%" fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:page-number="auto"/> + <style:text-properties fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/> + </style:style> + <style:style style:name="Vfg2" style:family="paragraph" style:parent-style-name="TextNormal" style:list-style-name="Numbering_20_1" style:master-page-name=""> + <style:paragraph-properties fo:line-height="100%" style:page-number="auto" text:number-lines="true" text:line-number="2"/> + </style:style> + <style:style style:name="Kopfzeile_5f_OFD" style:display-name="Kopfzeile_OFD" style:family="paragraph" style:parent-style-name="VordruckGroß" style:class="extra"> + <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> + <style:text-properties style:font-name="Times New Roman" fo:font-family="'Times New Roman'" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="12pt"/> + </style:style> + <style:style style:name="Fusszeile_5f_OFD" style:display-name="Fusszeile_OFD" style:family="paragraph" style:parent-style-name="Schrift1" style:class="extra" style:master-page-name=""> + <style:paragraph-properties fo:text-align="end" style:justify-single-word="false" style:page-number="auto"> + <style:tab-stops> + <style:tab-stop style:position="17cm" style:type="right"/> + </style:tab-stops> + </style:paragraph-properties> + <style:text-properties style:font-name="Times New Roman1" fo:font-family="'Times New Roman'" style:font-style-name="Standard" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="12pt"/> + </style:style> + <style:style style:name="Footnote_20_Symbol" style:display-name="Footnote Symbol" style:family="text"/> + <style:style style:name="Numbering_20_Symbols" style:display-name="Numbering Symbols" style:family="text"/> + <style:style style:name="Endnote_20_Symbol" style:display-name="Endnote Symbol" style:family="text"/> + <style:style style:name="Footnote_20_anchor" style:display-name="Footnote anchor" style:family="text"> + <style:text-properties style:text-position="super 58%"/> + </style:style> + <style:style style:name="Endnote_20_anchor" style:display-name="Endnote anchor" style:family="text"> + <style:text-properties style:text-position="super 58%"/> + </style:style> + <style:style style:name="Frame" style:family="graphic"> + <style:graphic-properties style:wrap="dynamic" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false"/> + </style:style> + <text:outline-style style:name="Outline"> + <text:outline-level-style text:level="1" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + <text:outline-level-style text:level="2" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + <text:outline-level-style text:level="3" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + <text:outline-level-style text:level="4" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + <text:outline-level-style text:level="5" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + <text:outline-level-style text:level="6" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + <text:outline-level-style text:level="7" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + <text:outline-level-style text:level="8" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + <text:outline-level-style text:level="9" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + <text:outline-level-style text:level="10" style:num-format=""> + <style:list-level-properties/> + </text:outline-level-style> + </text:outline-style> + <text:list-style style:name="Numbering_20_1" style:display-name="Numbering 1"> + <text:list-level-style-number text:level="1" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1" text:start-value="2"> + <style:list-level-properties text:min-label-width="0.499cm"/> + </text:list-level-style-number> + <text:list-level-style-number text:level="2" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:space-before="0.499cm" text:min-label-width="0.499cm"/> + </text:list-level-style-number> + <text:list-level-style-number text:level="3" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:space-before="0.999cm" text:min-label-width="0.499cm"/> + </text:list-level-style-number> + <text:list-level-style-number text:level="4" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:space-before="1.498cm" text:min-label-width="0.499cm"/> + </text:list-level-style-number> + <text:list-level-style-number text:level="5" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:space-before="1.997cm" text:min-label-width="0.499cm"/> + </text:list-level-style-number> + <text:list-level-style-number text:level="6" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:space-before="2.496cm" text:min-label-width="0.499cm"/> + </text:list-level-style-number> + <text:list-level-style-number text:level="7" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:space-before="2.995cm" text:min-label-width="0.499cm"/> + </text:list-level-style-number> + <text:list-level-style-number text:level="8" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:space-before="3.494cm" text:min-label-width="0.499cm"/> + </text:list-level-style-number> + <text:list-level-style-number text:level="9" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:space-before="3.994cm" text:min-label-width="0.499cm"/> + </text:list-level-style-number> + <text:list-level-style-number text:level="10" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:space-before="4.493cm" text:min-label-width="0.499cm"/> + </text:list-level-style-number> + </text:list-style> + <text:notes-configuration text:note-class="footnote" text:citation-style-name="Footnote_20_Symbol" text:citation-body-style-name="Footnote_20_anchor" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="page"/> + <text:notes-configuration text:note-class="endnote" text:citation-style-name="Endnote_20_Symbol" text:citation-body-style-name="Endnote_20_anchor" text:master-page-name="Endnote" style:num-format="1" 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="Schrift1"> + <style:paragraph-properties> + <style:tab-stops> + <style:tab-stop style:position="17cm" style:type="right"/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="P3" style:family="paragraph" style:parent-style-name="VordruckGroß"> + <style:paragraph-properties fo:margin-left="1.05cm" fo:margin-right="0cm" fo:text-indent="-1cm" style:auto-text-indent="false"/> + </style:style> + <style:style style:name="P33" style:family="paragraph" style:parent-style-name="Frame_20_contents"> + <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> + </style:style> + <style:style style:name="P37" style:family="paragraph" style:parent-style-name="Standard"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0.019cm" fo:line-height="100%" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="7.976cm"/> + <style:tab-stop style:position="9.49cm"/> + <style:tab-stop style:position="16.508cm"/> + </style:tab-stops> + </style:paragraph-properties> + <style:text-properties fo:font-size="12pt" style:text-underline-style="none"/> + </style:style> + <style:style style:name="P40" style:family="paragraph" style:parent-style-name="TextNormal"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0.019cm" fo:line-height="100%" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties fo:font-size="8pt" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="8pt" style:font-size-complex="8pt"/> + </style:style> + <style:style style:name="P46" style:family="paragraph" style:parent-style-name="TextNormal"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0.019cm" fo:line-height="100%" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="7.976cm"/> + <style:tab-stop style:position="9.49cm"/> + <style:tab-stop style:position="16.508cm"/> + </style:tab-stops> + </style:paragraph-properties> + <style:text-properties fo:font-size="12pt" style:text-underline-style="none"/> + </style:style> + <style:style style:name="P52" style:family="paragraph" style:parent-style-name="TextNormal"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0.019cm" fo:line-height="100%" fo:text-align="justify" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties fo:font-size="6pt" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="6pt" style:font-size-complex="6pt"/> + </style:style> + <style:style style:name="P61" style:family="paragraph" style:parent-style-name="TextNormal" style:master-page-name=""> + <style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" style:page-number="auto" fo:keep-with-next="always"> + <style:tab-stops> + <style:tab-stop style:position="1.342cm"/> + </style:tab-stops> + </style:paragraph-properties> + <style:text-properties style:text-underline-style="none"/> + </style:style> + <style:style style:name="P83" style:family="paragraph" style:parent-style-name="TextNormal" style:master-page-name="FragebogenRechts"> + <style:paragraph-properties style:page-number="auto" fo:break-before="page"/> + </style:style> + <style:style style:name="P85" style:family="paragraph" style:parent-style-name="Vfg2" style:list-style-name=""> + <style:paragraph-properties fo:line-height="150%"/> + <style:text-properties style:text-underline-style="none"/> + </style:style> + <style:style style:name="T1" style:family="text"> + <style:text-properties fo:font-size="10pt"/> + </style:style> + <style:style style:name="T4" style:family="text"> + <style:text-properties fo:font-weight="normal"/> + </style:style> + <style:style style:name="fr3" style:family="graphic" style:parent-style-name="Frameformat"> + <style:graphic-properties style:protect="content size position" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:padding="0.049cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.06pt solid #000000" fo:border-bottom="none"/> + </style:style> + <style:style style:name="fr7" style:family="graphic" style:parent-style-name="Frame"> + <style:graphic-properties style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph"/> + </style:style> + <style:style style:name="fr8" style:family="graphic" style:parent-style-name="Frame"> + <style:graphic-properties style:protect="size position" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:padding="0.049cm" fo:border="none"> + <style:columns fo:column-count="1" fo:column-gap="0cm"/> + </style:graphic-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="20.999cm" fo:page-height="29.699cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1cm" fo:margin-bottom="1cm" fo:margin-left="2.499cm" fo:margin-right="1.499cm" 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:header-footer-properties svg:height="0.9cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.3cm"/> + </style:footer-style> + </style:page-layout> + <style:page-layout style:name="pm8"> + <style:page-layout-properties fo:page-width="20.999cm" fo:page-height="29.699cm" 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: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> + <style:page-layout style:name="pm11"> + <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="1cm" fo:margin-bottom="1cm" fo:margin-left="2.401cm" 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:header-footer-properties svg:height="1.499cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="1cm"/> + </style:header-style> + <style:footer-style> + <style:header-footer-properties svg:height="0.9cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.3cm"/> + </style:footer-style> + </style:page-layout> + <style:page-layout style:name="pm12" style:page-usage="right"> + <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="1cm" fo:margin-bottom="1cm" fo:margin-left="2.401cm" 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:header-footer-properties svg:height="0.9cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.3cm"/> + </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"> + <style:footer> + <text:p text:style-name="P1"><text:tab/><text:span text:style-name="T1"><text:page-continuation text:string-value="- " text:select-page="next"/></text:span><text:span text:style-name="T1"><text:page-number text:select-page="current" text:page-adjust="1"/></text:span><text:span text:style-name="T1"><text:page-continuation text:string-value=" -" text:select-page="next"/></text:span></text:p> + </style:footer> + </style:master-page> + <style:master-page style:name="Endnote" style:page-layout-name="pm8"/> + <style:master-page style:name="Fragebogen" style:page-layout-name="pm11"> + <style:header> + <text:p text:style-name="Kopfzeile_5f_OFD"><text:span text:style-name="T4">- </text:span><text:span text:style-name="T4"><text:page-number text:select-page="current">0</text:page-number></text:span><text:span text:style-name="T4"><text:s/>-</text:span></text:p> + </style:header> + <style:footer> + <text:p text:style-name="Fusszeile_5f_OFD"><text:tab/><text:page-continuation text:string-value="- " text:select-page="next"/><text:page-number text:select-page="current" text:page-adjust="1"/><text:page-continuation text:string-value=" -" text:select-page="next"/></text:p> + </style:footer> + </style:master-page> + <style:master-page style:name="FragebogenRechts" style:page-layout-name="pm12" style:next-style-name="Fragebogen"> + <style:footer> + <text:p text:style-name="Fusszeile_5f_OFD"><text:tab/></text:p> + </style:footer> + </style:master-page> + </office:master-styles> + <office:body> + <office:text text:use-soft-page-breaks="true"> + <office:forms form:automatic-focus="false" form:apply-design-mode="false"/> + <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="x31Name1"/> + <text:user-field-decl office:value-type="string" office:string-value="" text:name="x31Postfach"/> + <text:user-field-decl office:value-type="string" office:string-value="" text:name="x31Plz2"/> + <text:user-field-decl office:value-type="string" office:string-value="" text:name="x31Ort"/> + <text:user-field-decl office:value-type="string" office:string-value="" text:name="x31Straße"/> + <text:user-field-decl office:value-type="string" office:string-value="" text:name="x31Plz1"/> + <text:user-field-decl office:value-type="string" office:string-value="" text:name="x31Name2"/> + <text:user-field-decl office:value-type="string" office:string-value="" text:name="x31GrosskPLZ"/> + <text:user-field-decl office:value-type="float" office:value="0" text:name="Verfügung"/> + </text:user-field-decls> + <text:p text:style-name="P85"><text:hidden-paragraph text:condition="ooow:TRUE" text:is-hidden="true"/></text:p> + <text:p text:style-name="P61"/> + <text:section text:style-name="Sect1" text:name="Anlage" text:condition="ooow:Verfügung EQ 0" text:is-hidden="true" text:display="condition"> + <text:p text:style-name="P83"><text:hidden-paragraph text:condition="ooow:Verfügung EQ 1"/></text:p> + <text:p text:style-name="P46"><draw:frame draw:style-name="fr8" draw:name="Rahmen19" text:anchor-type="paragraph" svg:x="0cm" svg:y="1.251cm" svg:width="7.997cm" draw:z-index="1"> + <draw:text-box fo:min-height="3cm"> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:line-break/>Postfach <text:user-field-get text:name="x31Postfach"/><text:line-break/><text:user-field-get text:name="x31Plz2"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:NOT(x31Plz2 G " ") OR (x31Name2 G " ") OR (x31GrosskPLZ NEQ "")" text:is-hidden="true"/></text:p> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:line-break/><text:user-field-get text:name="x31Straße"/><text:line-break/><text:user-field-get text:name="x31Plz1"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:x31Plz2 G " " OR (x31Name2 G " ") OR (x31GrosskPLZ NEQ "")"/></text:p> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:s/><text:user-field-get text:name="x31Name2"/><text:line-break/>Postfach <text:user-field-get text:name="x31Postfach"/><text:line-break/><text:user-field-get text:name="x31Plz2"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:NOT(x31Plz2 G " ") OR NOT(x31Name2 G " ") OR (x31GrosskPLZ NEQ "")" text:is-hidden="true"/></text:p> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:s/><text:user-field-get text:name="x31Name2"/><text:line-break/><text:user-field-get text:name="x31Straße"/><text:line-break/><text:user-field-get text:name="x31Plz1"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:x31Plz2 G " " OR NOT(x31Name2 G " ") OR (x31GrosskPLZ NEQ "")" text:is-hidden="true"/></text:p> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:line-break/><text:user-field-get text:name="x31GrosskPLZ"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:x31GrosskPLZ EQ """ text:is-hidden="true"/></text:p> + </draw:text-box> + </draw:frame><draw:frame draw:style-name="fr3" draw:name="Rahmen21" text:anchor-type="paragraph" svg:x="-1.625cm" svg:y="5.907cm" svg:width="0.497cm" svg:height="0.497cm" draw:z-index="2"> + <draw:text-box> + <text:p text:style-name="P3"/> + </draw:text-box> + </draw:frame></text:p> + <text:p text:style-name="P46"/> + <text:p text:style-name="P46"/> + <text:p text:style-name="P46"/> + <text:p text:style-name="P46"/> + <text:p text:style-name="P46"><draw:frame draw:style-name="fr7" draw:name="Rahmen22" text:anchor-type="paragraph" svg:x="9.615cm" svg:y="0.238cm" svg:width="6.863cm" draw:z-index="3"> + <draw:text-box fo:min-height="0.826cm"> + <text:p text:style-name="P33">(Nichtzutreffendes streichen bzw. Zutreffendes ankreuzen)</text:p> + </draw:text-box> + </draw:frame></text:p> + <text:p text:style-name="P46"/> + <text:p text:style-name="P52"/> + <text:p text:style-name="P40"/> + <text:p text:style-name="P37"><draw:frame draw:style-name="fr3" draw:name="Rahmen24" text:anchor-type="paragraph" svg:x="-1.625cm" svg:y="5.907cm" svg:width="0.497cm" svg:height="0.497cm" draw:z-index="6"> + <draw:text-box> + <text:p text:style-name="P3"/> + </draw:text-box> + </draw:frame><draw:frame draw:style-name="fr8" draw:name="Rahmen25" text:anchor-type="paragraph" svg:x="0cm" svg:y="1.251cm" svg:width="7.997cm" draw:z-index="5"> + <draw:text-box fo:min-height="3cm"> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:line-break/>Postfach <text:user-field-get text:name="x31Postfach"/><text:line-break/><text:user-field-get text:name="x31Plz2"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:NOT(x31Plz2 G " ") OR (x31Name2 G " ") OR (x31GrosskPLZ NEQ "")" text:is-hidden="true"/></text:p> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:line-break/><text:user-field-get text:name="x31Straße"/><text:line-break/><text:user-field-get text:name="x31Plz1"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:x31Plz2 G " " OR (x31Name2 G " ") OR (x31GrosskPLZ NEQ "")"/></text:p> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:s/><text:user-field-get text:name="x31Name2"/><text:line-break/>Postfach <text:user-field-get text:name="x31Postfach"/><text:line-break/><text:user-field-get text:name="x31Plz2"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:NOT(x31Plz2 G " ") OR NOT(x31Name2 G " ") OR (x31GrosskPLZ NEQ "")" text:is-hidden="true"/></text:p> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:s/><text:user-field-get text:name="x31Name2"/><text:line-break/><text:user-field-get text:name="x31Straße"/><text:line-break/><text:user-field-get text:name="x31Plz1"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:x31Plz2 G " " OR NOT(x31Name2 G " ") OR (x31GrosskPLZ NEQ "")" text:is-hidden="true"/></text:p> + <text:p text:style-name="TextNormal"><text:user-field-get text:name="x31Name1"/><text:line-break/><text:user-field-get text:name="x31GrosskPLZ"/> <text:user-field-get text:name="x31Ort"/><text:hidden-paragraph text:condition="ooow:x31GrosskPLZ EQ """ text:is-hidden="true"/></text:p> + </draw:text-box> + </draw:frame></text:p> + <text:p text:style-name="P46"/> + <text:p text:style-name="P46"/> + <text:p text:style-name="P46"/> + <text:p text:style-name="P46"/> + <text:p text:style-name="P46"/> + <text:p text:style-name="P46"><draw:frame draw:style-name="fr7" draw:name="Rahmen18" text:anchor-type="paragraph" svg:x="9.615cm" svg:y="0.238cm" svg:width="6.863cm" draw:z-index="4"> + <draw:text-box fo:min-height="0.826cm"> + <text:p text:style-name="P33">(Nichtzutreffendes streichen bzw. Zutreffendes ankreuzen)</text:p> + </draw:text-box> + </draw:frame></text:p> + <text:p text:style-name="P46"/> + </text:section> + <text:p text:style-name="Standard"><text:hidden-paragraph text:condition="ooow:true" text:is-hidden="true"/></text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/extras/layout/layout3.cxx b/sw/qa/extras/layout/layout3.cxx index 4eb41c7478f8..f4d75a80590c 100644 --- a/sw/qa/extras/layout/layout3.cxx +++ b/sw/qa/extras/layout/layout3.cxx @@ -1837,6 +1837,68 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testSectionUnhide) } } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testHiddenSectionFlys) +{ + createSwDoc("U-min.fodt"); + + //NO! field update job masks if the visibility was created wrong when loading. + //Scheduler::ProcessEventsToIdle(); + + SwDoc* pDoc = getSwDoc(); + IDocumentDrawModelAccess const& rIDMA{ pDoc->getIDocumentDrawModelAccess() }; + SdrPage const* pDrawPage{ rIDMA.GetDrawModel()->GetPage(0) }; + int invisibleHeaven{ rIDMA.GetInvisibleHeavenId().get() }; + int visibleHeaven{ rIDMA.GetHeavenId().get() }; + + // these are hidden by moving to invisible layer, they're still in layout + { + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "//anchored/fly"_ostr, 6); + discardDumpedLayout(); + + CPPUNIT_ASSERT_EQUAL(size_t(6), pDrawPage->GetObjCount()); + for (int i = 0; i < 6; ++i) + { + CPPUNIT_ASSERT_EQUAL(invisibleHeaven, int(pDrawPage->GetObj(i)->GetLayer().get())); + } + } + + // Show the section + auto xTextSectionsSupplier = mxComponent.queryThrow<css::text::XTextSectionsSupplier>(); + auto xSections = xTextSectionsSupplier->getTextSections(); + CPPUNIT_ASSERT(xSections); + auto xSection = xSections->getByName(u"Anlage"_ustr).queryThrow<css::beans::XPropertySet>(); + xSection->setPropertyValue(u"IsVisible"_ustr, css::uno::Any(true)); + calcLayout(); + + { + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "//anchored/fly"_ostr, 6); + discardDumpedLayout(); + + CPPUNIT_ASSERT_EQUAL(size_t(6), pDrawPage->GetObjCount()); + for (int i = 0; i < 6; ++i) + { + CPPUNIT_ASSERT_EQUAL(visibleHeaven, int(pDrawPage->GetObj(i)->GetLayer().get())); + } + } + + xSection->setPropertyValue(u"IsVisible"_ustr, css::uno::Any(false)); + calcLayout(); + + { + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + assertXPath(pXmlDoc, "//anchored/fly"_ostr, 6); + discardDumpedLayout(); + + CPPUNIT_ASSERT_EQUAL(size_t(6), pDrawPage->GetObjCount()); + for (int i = 0; i < 6; ++i) + { + CPPUNIT_ASSERT_EQUAL(invisibleHeaven, int(pDrawPage->GetObj(i)->GetLayer().get())); + } + } +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testHiddenSectionPageDescs) { createSwDoc("hidden-sections-with-pagestyles.odt"); diff --git a/sw/source/core/inc/frame.hxx b/sw/source/core/inc/frame.hxx index eea75e34a3c7..f43a731244ea 100644 --- a/sw/source/core/inc/frame.hxx +++ b/sw/source/core/inc/frame.hxx @@ -905,6 +905,7 @@ public: virtual bool IsHiddenNow() const; void MakeValidZeroHeight(); + virtual void HideAndShowObjects(); bool IsColLocked() const { return mbColLocked; } virtual bool IsDeleteForbidden() const { return mnForbidDelete > 0; } diff --git a/sw/source/core/inc/layfrm.hxx b/sw/source/core/inc/layfrm.hxx index d40fa7b5a341..28660682ce48 100644 --- a/sw/source/core/inc/layfrm.hxx +++ b/sw/source/core/inc/layfrm.hxx @@ -84,6 +84,7 @@ public: virtual void Cut() override; virtual void Paste( SwFrame* pParent, SwFrame* pSibling = nullptr ) override; + virtual void HideAndShowObjects() override; /** * Finds the closest Content for the SPoint diff --git a/sw/source/core/inc/txtfrm.hxx b/sw/source/core/inc/txtfrm.hxx index 813ba49d6cb2..2f61a9e1b853 100644 --- a/sw/source/core/inc/txtfrm.hxx +++ b/sw/source/core/inc/txtfrm.hxx @@ -570,7 +570,7 @@ public: * at/as a character of the paragraph, corresponding to the paragraph and * paragraph portion visibility. */ - void HideAndShowObjects(); + void HideAndShowObjects() override; /// Footnote void RemoveFootnote(TextFrameIndex nStart, diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx index 282acf3e36ce..4bd31c4fb3dc 100644 --- a/sw/source/core/layout/frmtool.cxx +++ b/sw/source/core/layout/frmtool.cxx @@ -1907,6 +1907,14 @@ void InsertCnt_( SwLayoutFrame *pLay, SwDoc *pDoc, //section again. pActualSection.reset(pActualSection->GetUpper()); pLay = pLay->FindSctFrame(); + if (pLay->IsHiddenNow()) + { // flys were created visible + for (SwFlowFrame * pSect = SwFlowFrame::CastFlowFrame(pLay); + pSect; pSect = pSect->GetPrecede()) + { // flys were created visible + pSect->GetFrame().HideAndShowObjects(); + } + } if ( pActualSection ) { //Could be, that the last SectionFrame remains empty. @@ -1938,6 +1946,14 @@ void InsertCnt_( SwLayoutFrame *pLay, SwDoc *pDoc, pOuterSectionFrame->DelEmpty( true ); SwFrame::DestroyFrame(pOuterSectionFrame); } + else if (pOuterSectionFrame->IsHiddenNow()) + { + for (SwFlowFrame * pSect = SwFlowFrame::CastFlowFrame(pOuterSectionFrame); + pSect; pSect = pSect->GetPrecede()) + { // flys were created visible + pSect->GetFrame().HideAndShowObjects(); + } + } } else { diff --git a/sw/source/core/layout/sectfrm.cxx b/sw/source/core/layout/sectfrm.cxx index d14eb766fb04..953d55073676 100644 --- a/sw/source/core/layout/sectfrm.cxx +++ b/sw/source/core/layout/sectfrm.cxx @@ -2759,6 +2759,7 @@ void SwSectionFrame::SwClientNotify(const SwModify& rMod, const SfxHint& rHint) pLowerFrame->Prepare(PrepareHint::Clear, nullptr, false); pLowerFrame->InvalidateAll(); pLowerFrame->InvalidateObjs(false); + pLowerFrame->HideAndShowObjects(); } // Check if any page-breaks have been unhidden, create the new pages. // Call IsHiddenNow() because a parent section could still hide. diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx index a6c1423909f2..8ab7ca61d2e5 100644 --- a/sw/source/core/text/txtfrm.cxx +++ b/sw/source/core/text/txtfrm.cxx @@ -1757,6 +1757,18 @@ void SwTextFrame::HideAndShowObjects() } } +void SwLayoutFrame::HideAndShowObjects() +{ + for (SwFrame * pLower = Lower(); pLower; pLower = pLower->GetNext()) + { + pLower->HideAndShowObjects(); + } +} + +void SwFrame::HideAndShowObjects() +{ +} + /** * Returns the first possible break point in the current line. * This method is used in SwTextFrame::Format() to decide whether the previous