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>
This commit is contained in:
Balazs Varga 2025-02-07 12:53:22 +01:00
parent 0ccd8cd083
commit 4328d1cca6
2 changed files with 16 additions and 2 deletions

View File

@ -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&)
{

View File

@ -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 );
}