[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3-desktop' - 7 commits - connectivity/source editeng/qa editeng/source lotuswordpro/qa lotuswordpro/source sc/source sfx2/source sw/source

Caolán McNamara caolanm at redhat.com
Wed May 16 13:49:13 UTC 2018


 connectivity/source/commontools/DateConversion.cxx |    2 -
 editeng/qa/unit/core-test.cxx                      |    2 -
 editeng/source/editeng/impedit3.cxx                |   11 ++-----
 lotuswordpro/qa/cppunit/data/fail/recurse-4.lwp    |binary
 lotuswordpro/source/filter/lwpfrib.cxx             |    2 -
 lotuswordpro/source/filter/lwplayout.cxx           |    5 +--
 lotuswordpro/source/filter/lwplayout.hxx           |   14 +++++++-
 lotuswordpro/source/filter/lwppagelayout.cxx       |    4 +-
 sc/source/ui/view/gridwin4.cxx                     |    7 +++-
 sfx2/source/dialog/dinfdlg.cxx                     |   14 ++++++++
 sw/source/core/tox/tox.cxx                         |   33 ++++++++++-----------
 11 files changed, 60 insertions(+), 34 deletions(-)

New commits:
commit 20bf87c6a3a076fe78f938b7a3086146336976e7
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Apr 13 14:33:27 2018 +0100

    ofz#7648 Bad-cast
    
    Change-Id: I21aaf36f3d6b6c3054649208de809b99aa384c01
    Reviewed-on: https://gerrit.libreoffice.org/52836
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 1db17a71b028c392a00393cdf313e1720b93fd2e)

diff --git a/lotuswordpro/source/filter/lwpfrib.cxx b/lotuswordpro/source/filter/lwpfrib.cxx
index 737985cacd49..3e35b9883a2c 100644
--- a/lotuswordpro/source/filter/lwpfrib.cxx
+++ b/lotuswordpro/source/filter/lwpfrib.cxx
@@ -248,7 +248,7 @@ void LwpFrib::RegisterStyle(LwpFoundry* pFoundry)
     XFTextStyle* pNamedStyle = nullptr;
     if (m_pModifiers->HasCharStyle && pFoundry)
     {
-        pNamedStyle = static_cast<XFTextStyle*>
+        pNamedStyle = dynamic_cast<XFTextStyle*>
                                 (pFoundry->GetStyleManager()->GetStyle(m_pModifiers->CharStyleID));
     }
     if (pNamedStyle)
commit 29e9802dcf9318394e2aff747396ff99408270cd
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Apr 12 14:53:20 2018 +0100

    Related: tdf#100925 background not getting set under X sometimes
    
    not sure why this is the case, but it is reminiscent of rhbz#1283420 which
    results in missing glyphs in some circumstances
    X11CairoTextRender::getCairoContext has a hack in it for that problem, whic
    forces a read from the underlying X Drawable before writing to it which seems
    to have the effect of syncing it up.
    
    So, just before drawing the bg, draw a glyph on it to get it synced, and then
    overwrite it.
    
    Reviewed-on: https://gerrit.libreoffice.org/52819
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit e8080c79043a7d9036f27cc24b76b7ff21c58da8)
    
    Change-Id: I2ffff7e8e989b91821869d8b75a59728ac513d1b

diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 13b82122d6fd..c90407bb2b83 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -1047,7 +1047,12 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
         }
 
         // paint the background
-        rDevice.DrawRect(rDevice.PixelToLogic(aBackground));
+        Rectangle aLogicRect(rDevice.PixelToLogic(aBackground));
+        //tdf#100925, rhbz#1283420, Draw some text here, to get
+        //X11CairoTextRender::getCairoContext called, so that the forced read
+        //from the underlying X Drawable gets it to sync.
+        rDevice.DrawText(aLogicRect.BottomLeft(), " ");
+        rDevice.DrawRect(aLogicRect);
 
         // paint the editeng text
         Rectangle aEditRect(Point(nScrX, nScrY), Size(aOutputData.GetScrW(), aOutputData.GetScrH()));
commit 1c7eeb124ce82bb6f90c54ed7eade9d050aae45e
Author: Szymon Kłos <szymon.klos at collabora.com>
Date:   Fri Mar 23 19:51:37 2018 +0100

    tdf#116536 Fix bullet position with linespacing > 100
    
    Change-Id: I862246d9c69e754bdd883787fe42c7d61a1a53d3
    Reviewed-on: https://gerrit.libreoffice.org/51790
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
    (cherry picked from commit 596fd41b9b19e28bab0c84e3821f79cb5d468f24)
    Reviewed-on: https://gerrit.libreoffice.org/52149
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
    (cherry picked from commit 4661cd9d17e3f2dc619cb888efde54eb6cf5219a)

diff --git a/editeng/qa/unit/core-test.cxx b/editeng/qa/unit/core-test.cxx
index 01d51eb271d3..b362a9db19ca 100644
--- a/editeng/qa/unit/core-test.cxx
+++ b/editeng/qa/unit/core-test.cxx
@@ -200,7 +200,7 @@ void Test::testLineSpacing()
 
     // Check the first line
     ParagraphInfos aInfo2 = aEditEngine.GetParagraphInfos(0);
-    CPPUNIT_ASSERT_EQUAL(sal_uInt16(311), aInfo2.nFirstLineMaxAscent);
+    CPPUNIT_ASSERT_EQUAL(sal_uInt16(337), aInfo2.nFirstLineMaxAscent);
     CPPUNIT_ASSERT_EQUAL(sal_uInt16(382), static_cast<sal_uInt16>(aEditEngine.GetLineHeight(0)));
 }
 
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index 6f9f133a6807..f1b4d231cfa9 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -1416,14 +1416,11 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
                 else if ( rLSItem.GetPropLineSpace() && ( rLSItem.GetPropLineSpace() != 100 ) )
                 {
                     sal_uInt16 nTxtHeight = pLine->GetHeight();
-                    sal_Int32 nTxtHeightProp = nTxtHeight * rLSItem.GetPropLineSpace() / 100;
-                    sal_Int32 nHeightProp = pLine->GetHeight() * rLSItem.GetPropLineSpace() / 100;
+                    sal_Int32 nPropTextHeight = nTxtHeight * rLSItem.GetPropLineSpace() / 100;
                     // The Ascent has to be adjusted for the difference:
-                    long nDiff = ( pLine->GetHeight() - nTxtHeightProp ) * 4 / 5;
-                    if ( nDiff > pLine->GetMaxAscent() )
-                        nDiff = pLine->GetMaxAscent() * 4 / 5;
-                    pLine->SetMaxAscent( static_cast<sal_uInt16>( pLine->GetMaxAscent() - nDiff ) ); // 80%
-                    pLine->SetHeight( static_cast<sal_uInt16>( nHeightProp ), nTxtHeightProp );
+                    long nDiff = pLine->GetHeight() - nPropTextHeight;
+                    pLine->SetMaxAscent( static_cast<sal_uInt16>( pLine->GetMaxAscent() - nDiff ) );
+                    pLine->SetHeight( static_cast<sal_uInt16>( nPropTextHeight ), nTxtHeight );
                 }
             }
         }
commit 4e82bfb26fcb189d18ca6f0e3dbdf79c8b28bf90
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Tue Feb 20 23:50:04 2018 +0100

    tdf#115853: save current custom property when adding line
    
    by reloading current lines before adding a brand new one
    indeed the info are deleted by ClearCustomProperties
    each time SfxDocumentInfoItem destructor is called
    
    Change-Id: Id1e2e652e90c720f00b8612aa9afbfa91b784d1d
    Reviewed-on: https://gerrit.libreoffice.org/50070
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Julien Nabet <serval2412 at yahoo.fr>
    Reviewed-on: https://gerrit.libreoffice.org/52349
    Reviewed-by: Jean-Baptiste Faure <jbfaure at libreoffice.org>
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
    (cherry picked from commit c522b4017915b3a12203ac39f48a75ae6f4a5bc0)

diff --git a/sfx2/source/dialog/dinfdlg.cxx b/sfx2/source/dialog/dinfdlg.cxx
index 95476788fa0e..a52506880394 100644
--- a/sfx2/source/dialog/dinfdlg.cxx
+++ b/sfx2/source/dialog/dinfdlg.cxx
@@ -2118,6 +2118,20 @@ void SfxCustomPropertiesPage::dispose()
 
 IMPL_LINK_NOARG(SfxCustomPropertiesPage, AddHdl, Button*, void)
 {
+    // tdf#115853: reload current lines before adding a brand new one
+    // indeed the info are deleted by ClearCustomProperties
+    // each time SfxDocumentInfoItem destructor is called
+    SfxDocumentInfoItem pInfo;
+    Sequence< beans::PropertyValue > aPropertySeq = m_pPropertiesCtrl->GetCustomProperties();
+    sal_Int32 i = 0, nCount = aPropertySeq.getLength();
+    for ( ; i < nCount; ++i )
+    {
+        if ( !aPropertySeq[i].Name.isEmpty() )
+        {
+            pInfo.AddCustomProperty( aPropertySeq[i].Name, aPropertySeq[i].Value );
+        }
+    }
+
     Any aAny;
     m_pPropertiesCtrl->AddLine( OUString(), aAny, true );
 }
commit 1301baea1f2e17d466772f23bbe06d2a2add66ef
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Sun Apr 8 08:26:55 2018 +0200

    SQL string quoting: escape "'" character also at beginning of string
    
    Change-Id: I51db43c1a3b6d3c93a04a3419238ea286cab987e
    Reviewed-on: https://gerrit.libreoffice.org/52578
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
    (cherry picked from commit 4bb50524e385803fddc50474667777fcf7ce19e1)

diff --git a/connectivity/source/commontools/DateConversion.cxx b/connectivity/source/commontools/DateConversion.cxx
index 1986adc5e08e..18599427959e 100644
--- a/connectivity/source/commontools/DateConversion.cxx
+++ b/connectivity/source/commontools/DateConversion.cxx
@@ -81,7 +81,7 @@ OUString DBTypeConversion::toSQLString(sal_Int32 eType, const Any& _rVal, bool b
                     {
                         OUString aTemp;
                         _rxTypeConverter->convertToSimpleType(_rVal, TypeClass_STRING) >>= aTemp;
-                        sal_Int32 nIndex = (sal_Int32)-1;
+                        sal_Int32 nIndex = (sal_Int32)-2;
                         const OUString sQuot("\'");
                         do
                         {
commit 79bb8c64b633f9397601df4e73f09d7fef066c2b
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Mar 25 14:01:25 2018 +0100

    ofz#7109 infinite regress
    
    Change-Id: Iac0bd81c9b0e3ac6b005bb0065895ca1b4ca4233
    Reviewed-on: https://gerrit.libreoffice.org/51828
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
    (cherry picked from commit e4308d4b3638d52ca70778565ba2541e9f3f0ff2)

diff --git a/lotuswordpro/qa/cppunit/data/fail/recurse-4.lwp b/lotuswordpro/qa/cppunit/data/fail/recurse-4.lwp
new file mode 100644
index 000000000000..f48c5bb718a4
Binary files /dev/null and b/lotuswordpro/qa/cppunit/data/fail/recurse-4.lwp differ
diff --git a/lotuswordpro/source/filter/lwplayout.cxx b/lotuswordpro/source/filter/lwplayout.cxx
index 4a3f84f44027..a4c0f3d0a80e 100644
--- a/lotuswordpro/source/filter/lwplayout.cxx
+++ b/lotuswordpro/source/filter/lwplayout.cxx
@@ -78,6 +78,7 @@ LwpVirtualLayout::LwpVirtualLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm)
     , m_bGettingMarginsSameAsParent(false)
     , m_bGettingHasProtection(false)
     , m_bGettingIsProtected(false)
+    , m_bGettingIsAutoGrowDown(false)
     , m_bGettingMarginsValue(false)
     , m_bGettingExtMarginsValue(false)
     , m_nAttributes(0)
@@ -391,7 +392,7 @@ LwpVirtualLayout* LwpVirtualLayout::FindChildByType(LWP_LAYOUT_TYPE eType)
 */
 bool LwpVirtualLayout::IsFitGraphic()
 {
-    return IsAutoGrowRight() && !IsAutoGrowLeft() && IsAutoGrowDown();
+    return IsAutoGrowRight() && !IsAutoGrowLeft() && GetIsAutoGrowDown();
 }
 
 /**
@@ -1175,7 +1176,7 @@ bool LwpMiddleLayout::IsAutoGrowDown()
         rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
         if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(xBase.get()))
         {
-            return pLay->IsAutoGrowDown();
+            return pLay->GetIsAutoGrowDown();
         }
     }
     return LwpVirtualLayout::IsAutoGrowDown();
diff --git a/lotuswordpro/source/filter/lwplayout.hxx b/lotuswordpro/source/filter/lwplayout.hxx
index 055a0e230186..99a56e9d5781 100644
--- a/lotuswordpro/source/filter/lwplayout.hxx
+++ b/lotuswordpro/source/filter/lwplayout.hxx
@@ -103,7 +103,6 @@ public:
     virtual double GetColGap(sal_uInt16 nIndex);
     virtual bool IsAutoGrow(){ return false;}
     virtual bool IsAutoGrowUp(){ return false;}
-    virtual bool IsAutoGrowDown(){ return false;}
     virtual bool IsAutoGrowLeft(){ return false;}
     virtual bool IsAutoGrowRight(){ return false;}
     bool IsFitGraphic();
@@ -137,6 +136,15 @@ public:
         m_bGettingIsProtected = false;
         return bRet;
     }
+    bool GetIsAutoGrowDown()
+    {
+        if (m_bGettingIsAutoGrowDown)
+            throw std::runtime_error("recursion in layout");
+        m_bGettingIsAutoGrowDown = true;
+        bool bRet = IsAutoGrowDown();
+        m_bGettingIsAutoGrowDown = false;
+        return bRet;
+    }
     bool GetHasProtection()
     {
         if (m_bGettingHasProtection)
@@ -216,6 +224,7 @@ protected:
     bool HasProtection();
     virtual bool HonorProtection();
     virtual bool IsProtected();
+    virtual bool IsAutoGrowDown(){ return false;}
     virtual double MarginsValue(sal_uInt8 /*nWhichSide*/){return 0;}
     virtual double ExtMarginsValue(sal_uInt8 /*nWhichSide*/){return 0;}
     virtual bool MarginsSameAsParent();
@@ -224,6 +233,7 @@ protected:
     bool m_bGettingMarginsSameAsParent;
     bool m_bGettingHasProtection;
     bool m_bGettingIsProtected;
+    bool m_bGettingIsAutoGrowDown;
     bool m_bGettingMarginsValue;
     bool m_bGettingExtMarginsValue;
     sal_uInt32 m_nAttributes;
@@ -351,7 +361,6 @@ public:
     LwpColor* GetBackColor();
     virtual bool IsAutoGrow() override;
     virtual bool IsAutoGrowUp() override;
-    virtual bool IsAutoGrowDown() override;
     virtual bool IsAutoGrowLeft() override;
     virtual bool IsAutoGrowRight() override;
     virtual sal_uInt8 GetContentOrientation() override;
@@ -389,6 +398,7 @@ protected:
     virtual bool MarginsSameAsParent() override;
     virtual double MarginsValue(sal_uInt8 nWhichSide) override;
     virtual double ExtMarginsValue(sal_uInt8 nWhichSide) override;
+    virtual bool IsAutoGrowDown() override;
 private:
     LwpObjectID m_BasedOnStyle;
     LwpLayoutGeometry* Geometry();
diff --git a/lotuswordpro/source/filter/lwppagelayout.cxx b/lotuswordpro/source/filter/lwppagelayout.cxx
index ee2868f47ff3..057fd3586ee5 100644
--- a/lotuswordpro/source/filter/lwppagelayout.cxx
+++ b/lotuswordpro/source/filter/lwppagelayout.cxx
@@ -480,7 +480,7 @@ void LwpPageLayout::ConvertFillerPageText(XFContentContainer* pCont)
         //get fillerpage story from division info
         LwpDocument* pDoc = m_pFoundry->GetDocument();
         LwpDivInfo* pDivInfo = dynamic_cast<LwpDivInfo*>(pDoc->GetDivInfoID().obj().get());
-        LwpStory* pStory = dynamic_cast<LwpStory*>(pDivInfo->GetFillerPageTextID().obj().get());
+        LwpStory* pStory = pDivInfo ? dynamic_cast<LwpStory*>(pDivInfo->GetFillerPageTextID().obj().get()) : nullptr;
 
         //parse fillerpage story
         if(pStory)
@@ -777,7 +777,7 @@ void LwpHeaderLayout::ParseMargins(XFHeaderStyle* ph1)
 {
     //Set height: from top of header to top of body, including the spacing between header and body
     double height = GetGeometryHeight()- GetMarginsValue(MARGIN_TOP);
-    if( IsAutoGrowDown() )
+    if (GetIsAutoGrowDown())
     {
         ph1->SetMinHeight(height);
     }
commit f2dd38e8aeb7501a5855950d40ddc1818725ff92
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Sun Jan 14 19:12:30 2018 +0100

    Return correct length for Authority token
    
    Regression from f4fd558ac9d61fe06aa0f56d829916ef9e5ee7b9
    Take the chance to calculate token prefix just once.
    
    Change-Id: I19ce5cb037198cb918e79c760a92b285f9b725f1
    (cherry picked from commit 34b98af8e5a4e568d8316700bea1ce604d825ce8)
    Reviewed-on: https://gerrit.libreoffice.org/52621
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
    (cherry picked from commit c6e8460a5b47fa6fa971dde2a89e80662b6e97ae)
    Reviewed-on: https://gerrit.libreoffice.org/52626
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
    (cherry picked from commit df041d902eafb1e273eb360103252994bbd2cde2)

diff --git a/sw/source/core/tox/tox.cxx b/sw/source/core/tox/tox.cxx
index a0fd74689201..4536e02c59b1 100644
--- a/sw/source/core/tox/tox.cxx
+++ b/sw/source/core/tox/tox.cxx
@@ -659,30 +659,29 @@ static FormTokenType lcl_GetTokenType(const OUString & sToken,
 {
     static struct
     {
-        OUString sNm;
-        sal_uInt16 nOffset;
-        FormTokenType eToken;
+        OUString sTokenStart;
+        sal_Int16 nTokenLength;
+        FormTokenType eTokenType;
     } const aTokenArr[] = {
-        { SwForm::GetFormTab(),         1, TOKEN_TAB_STOP },
-        { SwForm::GetFormPageNums(),    1, TOKEN_PAGE_NUMS },
-        { SwForm::GetFormLinkStt(),     1, TOKEN_LINK_START },
-        { SwForm::GetFormLinkEnd(),     1, TOKEN_LINK_END },
-        { SwForm::GetFormEntryNum(),    1, TOKEN_ENTRY_NO },
-        { SwForm::GetFormEntryText(),    1, TOKEN_ENTRY_TEXT },
-        { SwForm::GetFormChapterMark(), 1, TOKEN_CHAPTER_INFO },
-        { SwForm::GetFormText(),        1, TOKEN_TEXT },
-        { SwForm::GetFormEntry(),       1, TOKEN_ENTRY },
-        { SwForm::GetFormAuth(),        3, TOKEN_AUTHORITY }
+        { SwForm::GetFormTab().copy(0, 2),         3, TOKEN_TAB_STOP },
+        { SwForm::GetFormPageNums().copy(0, 2),    3, TOKEN_PAGE_NUMS },
+        { SwForm::GetFormLinkStt().copy(0, 3),     4, TOKEN_LINK_START },
+        { SwForm::GetFormLinkEnd().copy(0, 3),     4, TOKEN_LINK_END },
+        { SwForm::GetFormEntryNum().copy(0, 3),    4, TOKEN_ENTRY_NO },
+        { SwForm::GetFormEntryText().copy(0, 3),   4, TOKEN_ENTRY_TEXT },
+        { SwForm::GetFormChapterMark().copy(0, 2), 3, TOKEN_CHAPTER_INFO },
+        { SwForm::GetFormText().copy(0, 2),        3, TOKEN_TEXT },
+        { SwForm::GetFormEntry().copy(0, 2),       3, TOKEN_ENTRY },
+        { SwForm::GetFormAuth().copy(0, 2),        5, TOKEN_AUTHORITY }
     };
 
     for(const auto & i : aTokenArr)
     {
-        const sal_Int32 nLen(i.sNm.getLength());
-        if( sToken.startsWith( i.sNm.copy(0, nLen - i.nOffset) ))
+        if( sToken.startsWith( i.sTokenStart ) )
         {
             if (pTokenLen)
-                *pTokenLen = nLen;
-            return i.eToken;
+                *pTokenLen = i.nTokenLength;
+            return i.eTokenType;
         }
     }
 


More information about the Libreoffice-commits mailing list