summaryrefslogtreecommitdiff
path: root/editeng/source/items
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-06-04 16:12:59 +0200
committerMichael Stahl <mstahl@redhat.com>2012-06-04 16:30:22 +0200
commit70a6a4d425558340bb49507975343a3e0a1bdde8 (patch)
tree79adce682703d5e906e955c989bd43056f4167bd /editeng/source/items
parente18f53c624443bb2fbb9edba7b81b57487eb0e50 (diff)
fdo#46112: fix Calc ODF border line import:
There are 2 problems here: - the border widths are tripled on import, because that is effectively what SetWidth does for DOUBLE borders; set a divisor of 3 similar to e2ffb71305c5f085eec6d396651c76d6daee3406 - the 3 individual line widths are ignored and the 3 lines end up with the same width, while older versions had numerous pre-defined border styles with asymmetric line widths; fix this by always guessing the width from the 3 parts for DOUBLE lines Change-Id: Ibdde7e034e25433835765330e81db0825efd9eb8
Diffstat (limited to 'editeng/source/items')
-rw-r--r--editeng/source/items/frmitems.cxx11
1 files changed, 10 insertions, 1 deletions
diff --git a/editeng/source/items/frmitems.cxx b/editeng/source/items/frmitems.cxx
index e336ef2a18d8..c40bec98cae5 100644
--- a/editeng/source/items/frmitems.cxx
+++ b/editeng/source/items/frmitems.cxx
@@ -1789,6 +1789,13 @@ lcl_lineToSvxLine(const table::BorderLine& rLine, SvxBorderLine& rSvxLine, sal_B
sal_uInt16( bConvert ? MM100_TO_TWIP(rLine.InnerLineWidth) : rLine.InnerLineWidth ),
sal_uInt16( bConvert ? MM100_TO_TWIP(rLine.LineDistance ) : rLine.LineDistance ));
}
+ else
+ {
+ if (DOUBLE == rSvxLine.GetStyle())
+ { // fdo#46112: divide width by 3 for outer line, gap, inner line
+ rSvxLine.ScaleMetrics(1, 3);
+ }
+ }
sal_Bool bRet = !rSvxLine.isEmpty();
return bRet;
@@ -1858,7 +1865,9 @@ SvxBoxItem::LineToSvxLine(const ::com::sun::star::table::BorderLine2& rLine, Svx
if ( rLine.LineWidth )
{
rSvxLine.SetWidth( bConvert? MM100_TO_TWIP_UNSIGNED( rLine.LineWidth ) : rLine.LineWidth );
- bGuessWidth = sal_False;
+ // fdo#46112: double does not necessarily mean symmetric
+ // for backwards compatibility
+ bGuessWidth = (DOUBLE == nStyle);
}
return lcl_lineToSvxLine(rLine, rSvxLine, bConvert, bGuessWidth);