diff options
author | Balazs Varga <balazs.varga.extern@allotropia.de> | 2025-02-07 12:53:22 +0100 |
---|---|---|
committer | Balazs Varga <balazs.varga.extern@allotropia.de> | 2025-02-07 21:40:57 +0100 |
commit | 4328d1cca66ed9d1e34a8d788d16a2205fe77c1c (patch) | |
tree | 497a74f99d28a2629f65e15a3884b1e7b6cc858f /xmloff/source | |
parent | 0ccd8cd083a820e8c7ee983d88c9ca3c55221506 (diff) |
tdf#120397 - odf export fix missing texts in text box control
(Ab)use a call to XTextRange::getText to flush edits and restore
the selection of the textcontent in the textfields.
TODO: unit/UItest
Change-Id: If8e1c85f3565ae1b80fd0645c0905aae16404379
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181245
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
Diffstat (limited to 'xmloff/source')
-rw-r--r-- | xmloff/source/draw/shapeexport.cxx | 4 | ||||
-rw-r--r-- | xmloff/source/forms/layerexport.cxx | 14 |
2 files changed, 16 insertions, 2 deletions
diff --git a/xmloff/source/draw/shapeexport.cxx b/xmloff/source/draw/shapeexport.cxx index 92a8e0ed6d98..5eb127ac8a89 100644 --- a/xmloff/source/draw/shapeexport.cxx +++ b/xmloff/source/draw/shapeexport.cxx @@ -312,10 +312,10 @@ void XMLShapeExport::collectShapeAutoStyles(const uno::Reference< drawing::XShap { try { - // tdf#153161: it seems that the call to XTextRange::getString flushes the changes + // tdf#153161: it seems that the call to xText->getText flushes the changes // for some objects, that otherwise fail to get exported correctly. Maybe at some // point it would make sense to find a better place for more targeted flush. - xText->getString(); + xText = xText->getText(); } catch (uno::RuntimeException const&) { diff --git a/xmloff/source/forms/layerexport.cxx b/xmloff/source/forms/layerexport.cxx index a5c604ca65f0..136a10368d85 100644 --- a/xmloff/source/forms/layerexport.cxx +++ b/xmloff/source/forms/layerexport.cxx @@ -523,6 +523,20 @@ namespace xmloff Reference< XText > xControlText( _rxObject, UNO_QUERY ); if ( xControlText.is() ) { + try + { + // tdf#120397: similar to the fix of tdf#153161 where + // XTextRange::getText() --> ::GetSelection() flushes the changes + // for some Shape objects we also need to set the end cursor pos + // to the end of the form text objects, otherwise fail to get + // exported correctly. Maybe at some point it would make sense + // to find a better place for more targeted flush. + xControlText = xControlText->getText(); + } + catch (css::uno::RuntimeException const&) + { + // just in case if we would hit something here + } m_rContext.GetTextParagraphExport()->collectTextAutoStyles( xControlText ); } |