summaryrefslogtreecommitdiff
path: root/filter
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-22 12:15:07 +0100
commit0abbef139f3147a9728fb22133bc2350d28b555e (patch)
treea05e41a6365c4f394c5e692829bd115c2108d0fd /filter
parentc5396467030ebb47d3d0d649b28aed2cf2554a66 (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/+/142759 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Marco Cecchetti <marco.cecchetti@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143049 Tested-by: Jenkins Reviewed-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'filter')
-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 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" );
}