filter/source/svg/presentation_engine.js | 25 +++++++++++----- filter/source/svg/svgexport.cxx | 46 +++++++++++++------------------ 2 files changed, 37 insertions(+), 34 deletions(-)
New commits: commit 0abbef139f3147a9728fb22133bc2350d28b555e Author: Marco Cecchetti <marco.cecche...@collabora.com> AuthorDate: Mon Nov 14 18:18:23 2022 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Nov 22 12:15:07 2022 +0100 svg export filter: footer was not replaced with the right content When a user create a copy of the footer text field which can be included in a master page, the copy content was kept to the text placeholder instead of being substituted with the right content. Change-Id: I411349026e41d49b606cdae5d13d990d0fa0b07c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142759 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Marco Cecchetti <marco.cecche...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143049 Tested-by: Jenkins Reviewed-by: Andras Timar <andras.ti...@collabora.com> diff --git a/filter/source/svg/presentation_engine.js b/filter/source/svg/presentation_engine.js index 1e22be233b7a..160f5515caf4 100644 --- a/filter/source/svg/presentation_engine.js +++ b/filter/source/svg/presentation_engine.js @@ -5388,12 +5388,18 @@ function getTextFieldType ( elem ) var sContent = aPlaceholderElement.textContent if (sContent === '<number>') sFieldType = aSlideNumberClassName; + else if (sContent === '<date/time>') + sFieldType = aDateTimeClassName; else if (sContent === '<date>') sFieldType = aDateClassName; else if (sContent === '<time>') sFieldType = aTimeClassName; else if (sContent === '<slide-name>') sFieldType = aSlideNameClassName; + else if (sContent === '<footer>') + sFieldType = aFooterClassName; + else if (sContent === '<header>') + sFieldType = aHeaderClassName; } } return sFieldType; @@ -5401,8 +5407,8 @@ function getTextFieldType ( elem ) function isTextFieldByClassName ( sClassName ) { - return sClassName === aDateTimeClassName || sClassName === aFooterClassName - || sClassName === aHeaderClassName || sClassName.indexOf( aSlideNumberClassName ) == 0 + return sClassName.indexOf( aDateTimeClassName ) == 0 || sClassName.indexOf( aFooterClassName ) == 0 + || sClassName.indexOf( aHeaderClassName ) == 0 || sClassName.indexOf( aSlideNumberClassName ) == 0 || sClassName.indexOf( aDateClassName ) == 0 || sClassName.indexOf( aTimeClassName ) == 0 || sClassName.indexOf( aSlideNameClassName ) == 0; } @@ -5882,7 +5888,10 @@ MasterPageView.prototype.createElement = function() aTextFieldHandlerSet, sMasterSlideId ); } } - else if( sId.indexOf( aDateClassName ) == 0 + else if( sId.indexOf( aDateTimeClassName ) == 0 + || sId.indexOf( aFooterClassName ) == 0 + || sId.indexOf( aHeaderClassName ) == 0 + || sId.indexOf( aDateClassName ) == 0 || sId.indexOf( aTimeClassName ) == 0 || sId.indexOf( aSlideNameClassName ) == 0 ) { @@ -5922,21 +5931,21 @@ MasterPageView.prototype.initTextFieldHandler = if( aPlaceholderShape && aPlaceholderShape.isValid() && aTextFieldContentProvider ) { - var sTextFieldContentProviderId = aTextFieldContentProvider.sId; + var sTextFiedHandlerKey = aTextFieldContentProvider.sId + '.' + sId; // We create only one single TextFieldHandler object (and so one only // text field clone) per master slide and text content. - if ( !aTextFieldHandlerSet[ sMasterSlideId ][ sTextFieldContentProviderId ] ) + if ( !aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ] ) { - aTextFieldHandlerSet[ sMasterSlideId ][ sTextFieldContentProviderId ] = + aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ] = new TextFieldHandler( aPlaceholderShape, aTextFieldContentProvider ); - aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFieldContentProviderId ]; + aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ]; aTextFieldHandler.update(); aTextFieldHandler.appendTo( aDefsElement ); } else { - aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFieldContentProviderId ]; + aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ]; } sRefId = aTextFieldHandler.sId; } diff --git a/filter/source/svg/svgexport.cxx b/filter/source/svg/svgexport.cxx index fbf48565823a..ee80602c21ff 100644 --- a/filter/source/svg/svgexport.cxx +++ b/filter/source/svg/svgexport.cxx @@ -1339,44 +1339,38 @@ void SVGFilter::implGenerateMetaData() } // Date/Time Field - xPropSet->getPropertyValue( "IsDateTimeVisible" ) >>= bDateTimeVisibility; - if( bDateTimeVisibility ) // visibility default value: 'visible' + bool bDateTimeFixed = true; // default: fixed + xPropSet->getPropertyValue( "IsDateTimeFixed" ) >>= bDateTimeFixed; + if( bDateTimeFixed ) // we are interested only in the field text not in the date/time format { - bool bDateTimeFixed = true; // default: fixed - xPropSet->getPropertyValue( "IsDateTimeFixed" ) >>= bDateTimeFixed; - if( bDateTimeFixed ) // we are interested only in the field text not in the date/time format + xPropSet->getPropertyValue( "DateTimeText" ) >>= aFixedDateTimeField.text; + if( !aFixedDateTimeField.text.isEmpty() ) { - xPropSet->getPropertyValue( "DateTimeText" ) >>= aFixedDateTimeField.text; - if( !aFixedDateTimeField.text.isEmpty() ) - { - OUString sFieldId = implGenerateFieldId( aFieldSet, aFixedDateTimeField, aElemTextFieldId, xMasterPage ); - mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrDateTimeField, sFieldId ); - } - } - else // the inverse applies: we are interested only in the date/time format not in the field text - { - xPropSet->getPropertyValue( "DateTimeFormat" ) >>= aVariableDateTimeField.format; - OUString sFieldId = implGenerateFieldId( aFieldSet, aVariableDateTimeField, aElemTextFieldId, xMasterPage ); + OUString sFieldId = implGenerateFieldId( aFieldSet, aFixedDateTimeField, aElemTextFieldId, xMasterPage ); mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrDateTimeField, sFieldId ); } } - else + else // the inverse applies: we are interested only in the date/time format not in the field text + { + xPropSet->getPropertyValue( "DateTimeFormat" ) >>= aVariableDateTimeField.format; + OUString sFieldId = implGenerateFieldId( aFieldSet, aVariableDateTimeField, aElemTextFieldId, xMasterPage ); + mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrDateTimeField, sFieldId ); + } + xPropSet->getPropertyValue( "IsDateTimeVisible" ) >>= bDateTimeVisibility; + if( !bDateTimeVisibility ) // visibility default value: 'visible' { mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, NSPREFIX "date-time-visibility", "hidden" ); } // Footer Field - xPropSet->getPropertyValue( "IsFooterVisible" ) >>= bFooterVisibility; - if( bFooterVisibility ) // visibility default value: 'visible' + xPropSet->getPropertyValue( "FooterText" ) >>= aFooterField.text; + if( !aFooterField.text.isEmpty() ) { - xPropSet->getPropertyValue( "FooterText" ) >>= aFooterField.text; - if( !aFooterField.text.isEmpty() ) - { - OUString sFieldId = implGenerateFieldId( aFieldSet, aFooterField, aElemTextFieldId, xMasterPage ); - mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrFooterField, sFieldId ); - } + OUString sFieldId = implGenerateFieldId( aFieldSet, aFooterField, aElemTextFieldId, xMasterPage ); + mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrFooterField, sFieldId ); } - else + xPropSet->getPropertyValue( "IsFooterVisible" ) >>= bFooterVisibility; + if( !bFooterVisibility ) // visibility default value: 'visible' { mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, NSPREFIX "footer-visibility", "hidden" ); }