- fix bnc#939998 - LO-L3: PPT file shows wrong titles * bnc939998.patch - fix bnc#945443 - LO-L3: Undo ignores vertical alignment * bnc945443.patch - fix bnc#945445 - LO-L3: Undo does not revert changes of table separation lines * bnc945445.patch OBS-URL: https://build.opensuse.org/request/show/394568 OBS-URL: https://build.opensuse.org/package/show/LibreOffice:Factory/libreoffice?expand=0&rev=405
97 lines
5.9 KiB
Diff
97 lines
5.9 KiB
Diff
From 940b21a87cffffca0985c33e9ebb78ddf3aa0c3b Mon Sep 17 00:00:00 2001
|
|
From: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Date: Wed, 13 Apr 2016 20:07:52 +1000
|
|
Subject: [PATCH] tdf#93124: Fix incorrect text fit in imported PPT - take two
|
|
|
|
This patch just fixes incorrect decision when the block alignment must
|
|
be applied.
|
|
|
|
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
|
|
index 437207f..7ac251c 100644
|
|
--- a/filter/source/msfilter/svdfppt.cxx
|
|
+++ b/filter/source/msfilter/svdfppt.cxx
|
|
@@ -893,7 +893,6 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
|
|
eTHA = SDRTEXTHORZADJUST_LEFT;
|
|
break;
|
|
}
|
|
- // if there is a 100% use of following attributes, the textbox can been aligned also in vertical direction
|
|
switch ( eTextAnchor )
|
|
{
|
|
case mso_anchorTopCentered :
|
|
@@ -903,20 +902,20 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
|
|
case mso_anchorBottomCenteredBaseline:
|
|
{
|
|
// check if it is sensible to use the centered alignment
|
|
- sal_uInt32 nMask = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT;
|
|
- if ( ( nTextFlags & nMask ) != nMask ) // if the textobject has left and also right aligned pararagraphs
|
|
- eTVA = SDRTEXTVERTADJUST_CENTER; // the text has to be displayed using the full width;
|
|
- }
|
|
- break;
|
|
-
|
|
- default :
|
|
- {
|
|
- if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT )
|
|
- eTVA = SDRTEXTVERTADJUST_TOP;
|
|
- else if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT )
|
|
- eTVA = SDRTEXTVERTADJUST_BOTTOM;
|
|
+ const sal_uInt32 nMask = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK;
|
|
+ switch (nTextFlags & nMask)
|
|
+ {
|
|
+ case PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT:
|
|
+ case PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER:
|
|
+ case PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT:
|
|
+ case PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK:
|
|
+ eTVA = SDRTEXTVERTADJUST_CENTER; // If the textobject has only one type of alignment, then the text has not to be displayed using the full width;
|
|
+ break;
|
|
+ }
|
|
+ break;
|
|
}
|
|
- break;
|
|
+ default:
|
|
+ break;
|
|
}
|
|
nMinFrameWidth = rTextRect.GetWidth() - ( nTextLeft + nTextRight );
|
|
}
|
|
@@ -949,7 +948,6 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
|
|
eTVA = SDRTEXTVERTADJUST_BOTTOM;
|
|
break;
|
|
}
|
|
- // if there is a 100% usage of following attributes, the textbox can be aligned also in horizontal direction
|
|
switch ( eTextAnchor )
|
|
{
|
|
case mso_anchorTopCentered :
|
|
@@ -959,20 +957,20 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
|
|
case mso_anchorBottomCenteredBaseline:
|
|
{
|
|
// check if it is sensible to use the centered alignment
|
|
- sal_uInt32 nMask = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT;
|
|
- if ( ( nTextFlags & nMask ) != nMask ) // if the textobject has left and also right aligned pararagraphs
|
|
- eTHA = SDRTEXTHORZADJUST_CENTER; // the text has to be displayed using the full width;
|
|
- }
|
|
- break;
|
|
-
|
|
- default :
|
|
- {
|
|
- if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT )
|
|
- eTHA = SDRTEXTHORZADJUST_LEFT;
|
|
- else if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT )
|
|
- eTHA = SDRTEXTHORZADJUST_RIGHT;
|
|
+ const sal_uInt32 nMask = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK;
|
|
+ switch (nTextFlags & nMask)
|
|
+ {
|
|
+ case PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT:
|
|
+ case PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER:
|
|
+ case PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT:
|
|
+ case PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK:
|
|
+ eTHA = SDRTEXTHORZADJUST_CENTER; // If the textobject has only one type of alignment, then the text has not to be displayed using the full width;
|
|
+ break;
|
|
+ }
|
|
+ break;
|
|
}
|
|
- break;
|
|
+ default:
|
|
+ break;
|
|
}
|
|
nMinFrameHeight = rTextRect.GetHeight() - ( nTextTop + nTextBottom );
|
|
}
|