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

Matúš Kukan matus.kukan at collabora.com
Tue Jun 24 02:14:46 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 6fc729682d4713c45729a88fe323b3ac7a341fdd
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/9870
    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 e0f85c2..3ab9b68 100644
--- a/svx/source/table/cell.cxx
+++ b/svx/source/table/cell.cxx
@@ -359,7 +359,6 @@ Cell::Cell( SdrTableObj& rTableObj, OutlinerParaObject* pOutlinerParaObject ) th
 , mbMerged( false )
 , mnRowSpan( 1 )
 , mnColSpan( 1 )
-, mnCachedMinHeight( -1 )
 , mxTable( rTableObj.getTable() )
 {
     if( rTableObj.GetModel() )
@@ -526,7 +525,6 @@ void Cell::setMerged()
 
 void Cell::notifyModified()
 {
-    mnCachedMinHeight = -1;
     if( mxTable.is() )
         mxTable->setModified( sal_True );
 }
@@ -683,10 +681,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 );
@@ -697,7 +693,7 @@ sal_Int32 Cell::getMinimumHeight()
     if(pEditOutliner)
     {
         pEditOutliner->SetMaxAutoPaperSize(aSize);
-        mnCachedMinHeight = pEditOutliner->GetTextHeight()+1;
+        nMinimumHeight = pEditOutliner->GetTextHeight()+1;
     }
     else /*if ( hasText() )*/
     {
@@ -710,12 +706,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 2927a87..c5a0078 100644
--- a/svx/source/table/cell.hxx
+++ b/svx/source/table/cell.hxx
@@ -226,7 +226,6 @@ private:
     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 7f4651d..b3743eb 100644
--- a/svx/source/table/tablelayouter.cxx
+++ b/svx/source/table/tablelayouter.cxx
@@ -554,7 +554,7 @@ void TableLayouter::LayoutTableWidth( Rectangle& rArea, bool bFit )
                 }
                 else
                 {
-                    nMinWidth = std::max( nMinWidth, xCell->getMinimumSize().Width );
+                    nMinWidth = std::max( nMinWidth, xCell->getMinimumWidth() );
                 }
             }
         }
@@ -620,7 +620,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;
@@ -704,7 +704,7 @@ void TableLayouter::LayoutTableHeight( Rectangle& rArea, bool bFit )
                 }
                 else
                 {
-                    nMinHeight = std::max( nMinHeight, xCell->getMinimumSize().Height );
+                    nMinHeight = std::max( nMinHeight, xCell->getMinimumHeight() );
                 }
             }
         }
@@ -771,7 +771,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