summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Cecchetti <marco.cecchetti@collabora.com>2022-11-14 18:18:23 +0100
committerAndras Timar <andras.timar@collabora.com>2022-11-16 21:44:39 +0100
commit98ff2f350a79959760b063821000ec6e7a37b090 (patch)
treefcfd148e67610a5b4f48cedb5b74ba73c2b014fd
parent632dd5889fd455c9edd2182ef1cc34b0a295447b (diff)
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/+/142693 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r--filter/source/svg/presentation_engine.js25
-rw-r--r--filter/source/svg/svgexport.cxx46
2 files changed, 37 insertions, 34 deletions
diff --git a/filter/source/svg/presentation_engine.js b/filter/source/svg/presentation_engine.js
index 7e6de4282f98..cf49ba565192 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 6022cb966c08..f112c99ee047 100644
--- a/filter/source/svg/svgexport.cxx
+++ b/filter/source/svg/svgexport.cxx
@@ -1308,44 +1308,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" );
}