diff options
author | Michael Stahl <michael.stahl@allotropia.de> | 2023-10-11 19:13:53 +0200 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2023-10-12 11:54:51 +0200 |
commit | d5c19ef9d30cde052e8cd2486ac9395e62d9c9a9 (patch) | |
tree | aa143345d82cc29f47fd861ffc9ca854c6a00487 /drawinglayer | |
parent | 2e32aa1e9fc240c9cd9854655106d0decbd3694a (diff) |
drawinglayer,svx: PDF/UA export: put Form SE into anchor paragraph SE
This is like commit d467f1aa3d028f399826c97e2eecedcd79efcf65
and commit 6e5d59c2ca6969e9491f97cd7a00d094fc62cfb3 but for the
form controls, which have their own special ControlPrimitive2D.
Change-Id: I4b4ac45e81f490a7b625acd9e8753300d10bf119
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157847
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Diffstat (limited to 'drawinglayer')
-rw-r--r-- | drawinglayer/source/primitive2d/controlprimitive2d.cxx | 4 | ||||
-rw-r--r-- | drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx | 20 |
2 files changed, 23 insertions, 1 deletions
diff --git a/drawinglayer/source/primitive2d/controlprimitive2d.cxx b/drawinglayer/source/primitive2d/controlprimitive2d.cxx index 372fb61244a0..c8448efa981f 100644 --- a/drawinglayer/source/primitive2d/controlprimitive2d.cxx +++ b/drawinglayer/source/primitive2d/controlprimitive2d.cxx @@ -243,10 +243,12 @@ namespace drawinglayer::primitive2d uno::Reference< awt::XControlModel > xControlModel, uno::Reference<awt::XControl> xXControl, ::std::u16string_view const rTitle, - ::std::u16string_view const rDescription) + ::std::u16string_view const rDescription, + void const*const pAnchorKey) : maTransform(std::move(aTransform)), mxControlModel(std::move(xControlModel)), mxXControl(std::move(xXControl)) + , m_pAnchorStructureElementKey(pAnchorKey) { ::rtl::OUStringBuffer buf(rTitle); if (!rTitle.empty() && !rDescription.empty()) diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx index d87c70c7e772..084cc0bef17e 100644 --- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx @@ -1102,6 +1102,18 @@ void VclMetafileProcessor2D::processControlPrimitive2D( if (!bIsPrintableControl) return; + ::std::optional<sal_Int32> oAnchorParent; + if (mpPDFExtOutDevData) + { + if (rControlPrimitive.GetAnchorStructureElementKey()) + { + sal_Int32 const id = mpPDFExtOutDevData->EnsureStructureElement( + rControlPrimitive.GetAnchorStructureElementKey()); + oAnchorParent.emplace(mpPDFExtOutDevData->GetCurrentStructureElement()); + mpPDFExtOutDevData->SetCurrentStructureElement(id); + } + } + const bool bPDFExport(mpPDFExtOutDevData && mpPDFExtOutDevData->GetIsExportFormFields()); bool bDoProcessRecursively(true); @@ -1154,6 +1166,10 @@ void VclMetafileProcessor2D::processControlPrimitive2D( } mpPDFExtOutDevData->CreateControl(*pPDFControl); mpPDFExtOutDevData->EndStructureElement(); + if (oAnchorParent) + { + mpPDFExtOutDevData->SetCurrentStructureElement(*oAnchorParent); + } // no normal paint needed (see original UnoControlPDFExportContact::do_PaintObject); // do not process recursively @@ -1236,6 +1252,10 @@ void VclMetafileProcessor2D::processControlPrimitive2D( if (mpPDFExtOutDevData) { mpPDFExtOutDevData->EndStructureElement(); + if (oAnchorParent) + { + mpPDFExtOutDevData->SetCurrentStructureElement(*oAnchorParent); + } } } |