[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