diff options
author | Michael Stahl <mstahl@redhat.com> | 2017-10-17 17:24:03 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2017-10-20 10:59:37 +0200 |
commit | 33eb9fdb61033b3fd35d923900b1f5791f4b71c8 (patch) | |
tree | 6efe763cc0847653adbb7852e0d7fd6c127cbd19 /svx/source | |
parent | 6cb20e0b298f41fe88984aebfe5454f936a0ae3a (diff) |
tdf#97630 xmloff: ODF extended draw:fit-to-size mess
The plan:
1. As Regina points out, there is already (in ODF 1.2, but not ODF 1.1)
a style:shrink-to-fit attribute for shapes, so use this to represent
the AUTOFIT value.
The fallback from AUTOFIT to draw:fit-to-size="true" was a stupid
idea anyway, probably "false" is less annoying in practice.
There are 2 different shapes that implement TextFitToSize property:
a) text shapes already interpret ALLLINES and PROPORTIONAL exactly
the same
b) fontwork custom shapes interpret ALLLINES but do nothing for
PROPORTIONAL
As Regina points out, there is no shape that needs to distinguish
between ALLLINES and PROPORTIONAL, so we do a minor behavioral
API CHANGE and from now on interpret PROPORTIONAL as ALLLINES
on fontwork custom shapes. This obviates the need to distinguish
the values in ODF and so we don't need a new attribute,
just use draw:fit-to-size="true" for both.
On import, use MID_FLAG_MERGE_PROPERTY to combine the 2 attributes
into one value.
2. Restrict the export of draw:fit-to-size to only the standard
values "true"/"false".
This implements step 1, the step 2 will be done in the future when
most users have the import of the style:shrink-to-fit.
Change-Id: I4a378aa110fdb82db7a99a839d7ff207248a73e7
Reviewed-on: https://gerrit.libreoffice.org/43521
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'svx/source')
-rw-r--r-- | svx/source/customshapes/EnhancedCustomShapeFontWork.cxx | 5 | ||||
-rw-r--r-- | svx/source/toolbars/fontworkbar.cxx | 10 |
2 files changed, 12 insertions, 3 deletions
diff --git a/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx b/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx index 486dd9aff0a7..3211065f868b 100644 --- a/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx +++ b/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx @@ -433,7 +433,10 @@ void GetFontWorkOutline( FWData& rFWData, const SdrObject* pCustomShape ) while ( aTextAreaIter != aTextAreaIEnd ) { GetTextAreaOutline( rFWData, pCustomShape, *aTextAreaIter, bSameLetterHeights ); - if (eFTS == drawing::TextFitToSizeType_ALLLINES) + if (eFTS == drawing::TextFitToSizeType_ALLLINES || + // tdf#97630 interpret PROPORTIONAL same as ALLLINES so we don't + // need another ODF attribute! + eFTS == drawing::TextFitToSizeType_PROPORTIONAL) { std::vector< FWParagraphData >::iterator aParagraphIter( aTextAreaIter->vParagraphs.begin() ); std::vector< FWParagraphData >::const_iterator aParagraphIEnd( aTextAreaIter->vParagraphs.end() ); diff --git a/svx/source/toolbars/fontworkbar.cxx b/svx/source/toolbars/fontworkbar.cxx index 71a2c5653a92..ed9f00b333b1 100644 --- a/svx/source/toolbars/fontworkbar.cxx +++ b/svx/source/toolbars/fontworkbar.cxx @@ -73,10 +73,16 @@ void SetAlignmentState( SdrView const * pSdrView, SfxItemSet& rSet ) case SDRTEXTHORZADJUST_RIGHT : nAlignment = 2; break; case SDRTEXTHORZADJUST_BLOCK : { - if (rTextFitToSizeTypeItem.GetValue() == drawing::TextFitToSizeType_NONE) + auto const fit(rTextFitToSizeTypeItem.GetValue()); + if (fit == drawing::TextFitToSizeType_NONE) + { nAlignment = 3; - else if (rTextFitToSizeTypeItem.GetValue() == drawing::TextFitToSizeType_ALLLINES) + } + else if (fit == drawing::TextFitToSizeType_ALLLINES || + fit == drawing::TextFitToSizeType_PROPORTIONAL) + { nAlignment = 4; + } } } if ( ( nOldAlignment != -1 ) && ( nOldAlignment != nAlignment ) ) |