[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - svx/source

Matúš Kukan matus.kukan at collabora.com
Tue Jun 24 02:15:05 PDT 2014


 svx/source/table/cell.cxx          |   14 +++++---------
 svx/source/table/cell.hxx          |    1 -
 svx/source/table/tablelayouter.cxx |    8 ++++----
 3 files changed, 9 insertions(+), 14 deletions(-)

New commits:
commit a64eda5c5f754b7534d2d62ac9a1f13165621533
Author: Matúš Kukan <matus.kukan at collabora.com>
Date:   Mon Jun 23 19:20:07 2014 +0200

    Related bnc#822625: Minimum height was not invalidated when rectangle changes.
    
    5792e76cb5beb630c135f57b74f57d74dd2dc2b0 was too optimistic and did not
    invalidate mnCachedMinHeight often enough.
    This was resulting in a grey area below table frame when resizing it.
    
    So, revert 5792e76cb5beb630c135f57b74f57d74dd2dc2b0
    "Related bnc#822625: Cache minimum height for table cells."
    and istead just use getMinimumWidth() in TableLayouter if that's all we need.
    getMinimumHeight() is expensive.
    
    Change-Id: I34c49dda75d6ccccaa5b4d3746114352621a40dd
    (cherry picked from commit b8f7ea5da41d61d405adec54dcd10b54ee0e5591)
    Reviewed-on: https://gerrit.libreoffice.org/9871
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/svx/source/table/cell.cxx b/svx/source/table/cell.cxx
index 7e04db7..d4f199b 100644
--- a/svx/source/table/cell.cxx
+++ b/svx/source/table/cell.cxx
@@ -358,7 +358,6 @@ Cell::Cell( SdrTableObj& rTableObj, OutlinerParaObject* pOutlinerParaObject ) th
 , mbMerged( sal_False )
 , mnRowSpan( 1 )
 , mnColSpan( 1 )
-, mnCachedMinHeight( -1 )
 , mxTable( rTableObj.getTable() )
 {
     if( rTableObj.GetModel() )
@@ -525,7 +524,6 @@ void Cell::setMerged()
 
 void Cell::notifyModified()
 {
-    mnCachedMinHeight = -1;
     if( mxTable.is() )
         mxTable->setModified( sal_True );
 }
@@ -682,10 +680,8 @@ sal_Int32 Cell::getMinimumHeight()
     if( !mpProperties )
         return 0;
 
-    if( mnCachedMinHeight != -1 )
-        return mnCachedMinHeight;
-
     SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
+    sal_Int32 nMinimumHeight = 0;
 
     Rectangle aTextRect;
     TakeTextAnchorRect( aTextRect );
@@ -696,7 +692,7 @@ sal_Int32 Cell::getMinimumHeight()
     if(pEditOutliner)
     {
         pEditOutliner->SetMaxAutoPaperSize(aSize);
-        mnCachedMinHeight = pEditOutliner->GetTextHeight()+1;
+        nMinimumHeight = pEditOutliner->GetTextHeight()+1;
     }
     else /*if ( hasText() )*/
     {
@@ -709,12 +705,12 @@ sal_Int32 Cell::getMinimumHeight()
         {
             rOutliner.SetText(*GetOutlinerParaObject());
         }
-        mnCachedMinHeight=rOutliner.GetTextHeight()+1;
+        nMinimumHeight=rOutliner.GetTextHeight()+1;
         rOutliner.Clear();
     }
 
-    mnCachedMinHeight += GetTextUpperDistance() + GetTextLowerDistance();
-    return mnCachedMinHeight;
+    nMinimumHeight += GetTextUpperDistance() + GetTextLowerDistance();
+    return nMinimumHeight;
 }
 
 // -----------------------------------------------------------------------------
diff --git a/svx/source/table/cell.hxx b/svx/source/table/cell.hxx
index ba2c6f6..1b26b1c 100644
--- a/svx/source/table/cell.hxx
+++ b/svx/source/table/cell.hxx
@@ -222,7 +222,6 @@ private:
     ::sal_Bool      mbMerged;
     ::sal_Int32     mnRowSpan;
     ::sal_Int32     mnColSpan;
-    ::sal_Int32     mnCachedMinHeight;
 
     Rectangle maCellRect;
 
diff --git a/svx/source/table/tablelayouter.cxx b/svx/source/table/tablelayouter.cxx
index 55ed2d2..2b97996 100644
--- a/svx/source/table/tablelayouter.cxx
+++ b/svx/source/table/tablelayouter.cxx
@@ -556,7 +556,7 @@ void TableLayouter::LayoutTableWidth( Rectangle& rArea, bool bFit )
                 }
                 else
                 {
-                    nMinWidth = std::max( nMinWidth, xCell->getMinimumSize().Width );
+                    nMinWidth = std::max( nMinWidth, xCell->getMinimumWidth() );
                 }
             }
         }
@@ -622,7 +622,7 @@ void TableLayouter::LayoutTableWidth( Rectangle& rArea, bool bFit )
         while( iter != aMergedCells[nCol].end() )
         {
             CellRef xCell( (*iter++) );
-            sal_Int32 nMinWidth = xCell->getMinimumSize().Width;
+            sal_Int32 nMinWidth = xCell->getMinimumWidth();
 
             for( sal_Int32 nMCol = nCol - xCell->getColumnSpan() + 1; (nMCol > 0) && (nMCol < nCol); ++nMCol )
                 nMinWidth -= maColumns[nMCol].mnSize;
@@ -706,7 +706,7 @@ void TableLayouter::LayoutTableHeight( Rectangle& rArea, bool bFit )
                 }
                 else
                 {
-                    nMinHeight = std::max( nMinHeight, xCell->getMinimumSize().Height );
+                    nMinHeight = std::max( nMinHeight, xCell->getMinimumHeight() );
                 }
             }
         }
@@ -773,7 +773,7 @@ void TableLayouter::LayoutTableHeight( Rectangle& rArea, bool bFit )
         while( iter != aMergedCells[nRow].end() )
         {
             CellRef xCell( (*iter++) );
-            sal_Int32 nMinHeight = xCell->getMinimumSize().Height;
+            sal_Int32 nMinHeight = xCell->getMinimumHeight();
 
             for( sal_Int32 nMRow = nRow - xCell->getRowSpan() + 1; (nMRow > 0) && (nMRow < nRow); ++nMRow )
                 nMinHeight -= maRows[nMRow].mnSize;


More information about the Libreoffice-commits mailing list