Kaydet (Commit) c1e1ef80 authored tarafından Michael Stahl's avatar Michael Stahl

fdo#44073: ODF export: fix layout grid invalid ODF

The following 3 attributes have been added in ODF 1.2, so don't write
them into ODF 1.1 files:

style:layout-grid-base-width 20.297
style:layout-grid-snap-to 20.305
style:layout-grid-standard-mode 20.306

Additionally, style:layout-grid-snap-to was written wrongly as
style:layout-grid-snap-to-characters, which does not exist in any ODF
spec.
For backward compatibility with previous OOo/LO versions, write the
wrong attribute in addition to the correct one in ODF extended mode,
even though validators complain about it (consider removing that
some years from now).
üst f277d0c8
...@@ -102,6 +102,7 @@ ...@@ -102,6 +102,7 @@
#define CTF_PM_STANDARD_MODE (XML_PM_CTF_START + 0x0055) #define CTF_PM_STANDARD_MODE (XML_PM_CTF_START + 0x0055)
#define CTP_PM_GRID_BASE_WIDTH (XML_PM_CTF_START + 0x0056) #define CTP_PM_GRID_BASE_WIDTH (XML_PM_CTF_START + 0x0056)
#define CTP_PM_GRID_SNAP_TO_CHARS (XML_PM_CTF_START + 0x0057) #define CTP_PM_GRID_SNAP_TO_CHARS (XML_PM_CTF_START + 0x0057)
#define CTP_PM_GRID_SNAP_TO (XML_PM_CTF_START + 0x0058)
// header // header
#define CTF_PM_HEADERBORDERALL (CTF_PM_HEADERFLAG|CTF_PM_BORDERALL) #define CTF_PM_HEADERBORDERALL (CTF_PM_HEADERFLAG|CTF_PM_BORDERALL)
#define CTF_PM_HEADERBORDERTOP (CTF_PM_HEADERFLAG|CTF_PM_BORDERTOP) #define CTF_PM_HEADERBORDERTOP (CTF_PM_HEADERFLAG|CTF_PM_BORDERTOP)
......
...@@ -360,7 +360,9 @@ void XMLPageMasterExportPropMapper::ContextFilter( ...@@ -360,7 +360,9 @@ void XMLPageMasterExportPropMapper::ContextFilter(
XMLPropertyState* pPMScaleToY = NULL; XMLPropertyState* pPMScaleToY = NULL;
XMLPropertyState* pPMStandardMode = NULL; XMLPropertyState* pPMStandardMode = NULL;
XMLPropertyState* pPMGridBaseWidth = NULL; XMLPropertyState* pPMGridBaseWidth = NULL;
// same as pPMGridSnapTo but for backward compatibility only
XMLPropertyState* pPMGridSnapToChars = NULL; XMLPropertyState* pPMGridSnapToChars = NULL;
XMLPropertyState* pPMGridSnapTo = NULL;
XMLPropertyState* pPrint = NULL; XMLPropertyState* pPrint = NULL;
...@@ -421,6 +423,7 @@ void XMLPageMasterExportPropMapper::ContextFilter( ...@@ -421,6 +423,7 @@ void XMLPageMasterExportPropMapper::ContextFilter(
case CTF_PM_STANDARD_MODE: pPMStandardMode = pProp; break; case CTF_PM_STANDARD_MODE: pPMStandardMode = pProp; break;
case CTP_PM_GRID_BASE_WIDTH: pPMGridBaseWidth = pProp; break; case CTP_PM_GRID_BASE_WIDTH: pPMGridBaseWidth = pProp; break;
case CTP_PM_GRID_SNAP_TO_CHARS: pPMGridSnapToChars = pProp; break; case CTP_PM_GRID_SNAP_TO_CHARS: pPMGridSnapToChars = pProp; break;
case CTP_PM_GRID_SNAP_TO: pPMGridSnapTo = pProp; break;
} }
if (nPrintId == CTF_PM_PRINTMASK) if (nPrintId == CTF_PM_PRINTMASK)
{ {
...@@ -436,6 +439,10 @@ void XMLPageMasterExportPropMapper::ContextFilter( ...@@ -436,6 +439,10 @@ void XMLPageMasterExportPropMapper::ContextFilter(
lcl_RemoveState(pPMGridBaseWidth); lcl_RemoveState(pPMGridBaseWidth);
if( pPMGridSnapToChars ) if( pPMGridSnapToChars )
lcl_RemoveState(pPMGridSnapToChars); lcl_RemoveState(pPMGridSnapToChars);
if (pPMGridSnapTo)
{
lcl_RemoveState(pPMGridSnapTo);
}
} }
if( pPMGridBaseWidth && pPMStandardMode ) if( pPMGridBaseWidth && pPMStandardMode )
......
...@@ -33,11 +33,15 @@ ...@@ -33,11 +33,15 @@
using namespace ::xmloff::token; using namespace ::xmloff::token;
#define _MAP(name,prefix,token,type,context) { name, sizeof(name)-1, prefix, token, type, context, SvtSaveOptions::ODFVER_010 } #define MAP(name,prefix,token,type,context,version) { name, sizeof(name)-1, prefix, token, type, context, version }
#define PLMAP(name,prefix,token,type,context) \ #define PLMAP(name,prefix,token,type,context) \
_MAP(name,prefix,token,type|XML_TYPE_PROP_PAGE_LAYOUT,context) MAP(name,prefix,token,type|XML_TYPE_PROP_PAGE_LAYOUT,context, SvtSaveOptions::ODFVER_010)
#define PLMAP_12(name,prefix,token,type,context) \
MAP(name,prefix,token,type|XML_TYPE_PROP_PAGE_LAYOUT,context, SvtSaveOptions::ODFVER_012)
#define PLMAP_EX(name,prefix,token,type,context) \
MAP(name,prefix,token,type|XML_TYPE_PROP_PAGE_LAYOUT,context, SvtSaveOptions::ODFVER_LATEST)
#define HFMAP(name,prefix,token,type,context) \ #define HFMAP(name,prefix,token,type,context) \
_MAP(name,prefix,token,type|XML_TYPE_PROP_HEADER_FOOTER,context) MAP(name,prefix,token,type|XML_TYPE_PROP_HEADER_FOOTER,context, SvtSaveOptions::ODFVER_010)
//______________________________________________________________________________ //______________________________________________________________________________
...@@ -108,11 +112,14 @@ const XMLPropertyMapEntry aXMLPageMasterStyleMap[] = ...@@ -108,11 +112,14 @@ const XMLPropertyMapEntry aXMLPageMasterStyleMap[] =
PLMAP( "GridDisplay", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_DISPLAY, XML_TYPE_BOOL, 0 ), PLMAP( "GridDisplay", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_DISPLAY, XML_TYPE_BOOL, 0 ),
//text grid enhancement for better CJK support //text grid enhancement for better CJK support
PLMAP( "GridBaseWidth", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_BASE_WIDTH, XML_TYPE_MEASURE, CTP_PM_GRID_BASE_WIDTH ), PLMAP_12( "GridBaseWidth", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_BASE_WIDTH, XML_TYPE_MEASURE, CTP_PM_GRID_BASE_WIDTH ),
PLMAP( "GridSnapToChars", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_SNAP_TO, XML_TYPE_BOOL, CTP_PM_GRID_SNAP_TO_CHARS ), PLMAP_12( "GridSnapToChars", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_SNAP_TO, XML_TYPE_BOOL, CTP_PM_GRID_SNAP_TO ),
PLMAP( "GridSnapToChars", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_SNAP_TO_CHARS, XML_TYPE_BOOL, CTP_PM_GRID_SNAP_TO_CHARS ), // fdo#44073: layout-grid-snap-to-characters does not exist in ODF:
// write this in extended mode purely for backward compatibility so old
// OOo/LO versions that don't understand layout-grid-snap-to read it
PLMAP_EX( "GridSnapToChars", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_SNAP_TO_CHARS, XML_TYPE_BOOL, CTP_PM_GRID_SNAP_TO_CHARS ),
//export as a default attribute //export as a default attribute
PLMAP( "StandardPageMode", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_STANDARD_MODE, XML_TYPE_BOOL|MID_FLAG_DEFAULT_ITEM_EXPORT, CTF_PM_STANDARD_MODE ), PLMAP_12( "StandardPageMode", XML_NAMESPACE_STYLE, XML_LAYOUT_GRID_STANDARD_MODE, XML_TYPE_BOOL|MID_FLAG_DEFAULT_ITEM_EXPORT, CTF_PM_STANDARD_MODE ),
PLMAP( "UserDefinedAttributes", XML_NAMESPACE_TEXT, XML_XMLNS, XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ), PLMAP( "UserDefinedAttributes", XML_NAMESPACE_TEXT, XML_XMLNS, XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment