svx/source/unodraw/SvxXTextColumns.cxx |    4 ++--
 sw/source/core/layout/atrfrm.cxx       |    4 +++-
 2 files changed, 5 insertions(+), 3 deletions(-)

New commits:
commit 47b4c9bb7f0ef0175e55acaf22c740d11f6e9474
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Sun Aug 7 21:00:01 2022 +0300
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Sun Aug 7 21:14:12 2022 +0200

    tdf#150293: setPropertyValue(WID_TXTCOL_LINE_WIDTH) takes mm100
    
    Before commit 95ebd24a629b4c8cd62cc20c0701683512cc8fa0
      Author Mike Kaganski <mike.kagan...@collabora.com>
      Date   Thu May 27 13:00:10 2021 +0300
        editengine-columns: ODF support [API CHANGE]
    
    SwXTextColumns crtor took SwFormatCol, and stored line width in the
    same units as in SwFormatCol - in twips; conversion to mm100 only
    happened at export stage in SwXTextColumns::getPropertyValue.
    The mentioned commit changed to SvxXTextColumns::setPropertyValue,
    passing the line width from SwFormatCol also without any conversion;
    but SvxXTextColumns::setPropertyValue expects mm100, so the result
    was wrong.
    
    So perform the proper conversion at SwFormatCol::QueryValue and
    SwFormatCol::PutValue, and also store the line width in mm100 in
    SvxXTextColumns, to avoid useless extra conversion.
    
    Change-Id: Idfd62a7563f9d3aa5947c1149572a8b8b696b179
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137931
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/svx/source/unodraw/SvxXTextColumns.cxx 
b/svx/source/unodraw/SvxXTextColumns.cxx
index 838ca5d4cabb..95d289632241 100644
--- a/svx/source/unodraw/SvxXTextColumns.cxx
+++ b/svx/source/unodraw/SvxXTextColumns.cxx
@@ -209,7 +209,7 @@ void SvxXTextColumns::setPropertyValue(const OUString& 
rPropertyName, const css:
             sal_Int32 nTmp;
             if (!(aValue >>= nTmp) || nTmp < 0)
                 throw css::lang::IllegalArgumentException();
-            m_nSepLineWidth = o3tl::toTwips(nTmp, o3tl::Length::mm100);
+            m_nSepLineWidth = nTmp;
             break;
         }
         case WID_TXTCOL_LINE_COLOR:
@@ -270,7 +270,7 @@ css::uno::Any SvxXTextColumns::getPropertyValue(const 
OUString& rPropertyName)
     switch (pEntry->nWID)
     {
         case WID_TXTCOL_LINE_WIDTH:
-            aRet <<= 
o3tl::narrowing<sal_Int32>(convertTwipToMm100(m_nSepLineWidth));
+            aRet <<= m_nSepLineWidth;
             break;
         case WID_TXTCOL_LINE_COLOR:
             aRet <<= m_nSepLineColor;
diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index ad1c1c399291..775fe203c661 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -1114,7 +1114,8 @@ bool SwFormatCol::QueryValue( uno::Any& rVal, sal_uInt8 
nMemberId ) const
             }
         }
         uno::Any aVal;
-        aVal <<= o3tl::narrowing<sal_Int32>(GetLineWidth());
+        aVal <<= o3tl::narrowing<sal_Int32>(
+            o3tl::convert(GetLineWidth(), o3tl::Length::twip, 
o3tl::Length::mm100));
         xProps->setPropertyValue(UNO_NAME_SEPARATOR_LINE_WIDTH, aVal);
         aVal <<= GetLineColor();
         xProps->setPropertyValue(UNO_NAME_SEPARATOR_LINE_COLOR, aVal);
@@ -1204,6 +1205,7 @@ bool SwFormatCol::PutValue( const uno::Any& rVal, 
sal_uInt8 nMemberId )
             {
                 xProps->getPropertyValue(UNO_NAME_IS_AUTOMATIC) >>= m_bOrtho;
                 xProps->getPropertyValue(UNO_NAME_SEPARATOR_LINE_WIDTH) >>= 
m_nLineWidth;
+                m_nLineWidth = o3tl::toTwips(m_nLineWidth, 
o3tl::Length::mm100);
                 xProps->getPropertyValue(UNO_NAME_SEPARATOR_LINE_COLOR) >>= 
m_aLineColor;
                 if (sal_Int32 nHeight;
                     
xProps->getPropertyValue(UNO_NAME_SEPARATOR_LINE_RELATIVE_HEIGHT) >>= nHeight)

Reply via email to