summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorGülşah Köse <gulsah.kose@collabora.com>2020-11-06 21:18:24 +0300
committerXisco Fauli <xiscofauli@libreoffice.org>2020-11-09 15:35:24 +0100
commit5c37f0c0347d8cccda6fc6a2ca4dd28bb36823a9 (patch)
treeddf34f61bc4cc6522bdc7991c6c84773570afdbd /svx
parent6dee385e10c859928e5d6406d002983529eff9f9 (diff)
tdf#137949 Fix table row heigths.
Consider "Height" property of the the table while calculating the minimum row height. Change-Id: I4dbb0f7f87517423fd3075515b4b9817d6a9a71a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105422 Tested-by: Jenkins Tested-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com> Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105480
Diffstat (limited to 'svx')
-rw-r--r--svx/source/table/tablelayouter.cxx26
1 files changed, 24 insertions, 2 deletions
diff --git a/svx/source/table/tablelayouter.cxx b/svx/source/table/tablelayouter.cxx
index b5dddef4ddd1..2d0fc0f22a3f 100644
--- a/svx/source/table/tablelayouter.cxx
+++ b/svx/source/table/tablelayouter.cxx
@@ -724,6 +724,7 @@ void TableLayouter::LayoutTableHeight( tools::Rectangle& rArea, bool bFit )
{
const sal_Int32 nColCount = getColumnCount();
const sal_Int32 nRowCount = getRowCount();
+
if( nRowCount == 0 )
return;
@@ -740,10 +741,14 @@ void TableLayouter::LayoutTableHeight( tools::Rectangle& rArea, bool bFit )
sal_Int32 nCol, nRow;
for( nRow = 0; nRow < nRowCount; ++nRow )
{
+ Reference< XPropertySet > xRowSet( xRows->getByIndex(nRow), UNO_QUERY_THROW );
+ sal_Int32 nRowPropHeight = 0;
+ xRowSet->getPropertyValue( gsSize ) >>= nRowPropHeight;
sal_Int32 nMinHeight = 0;
bool bIsEmpty = true; // check if all cells in this row are merged
bool bRowHasText = false;
+ bool bRowHasCellInEditMode = false;
for( nCol = 0; nCol < nColCount; ++nCol )
{
@@ -761,7 +766,12 @@ void TableLayouter::LayoutTableHeight( tools::Rectangle& rArea, bool bFit )
else
{
bool bCellHasText = xCell->hasText();
- if (bRowHasText == bCellHasText)
+ bool bCellInEditMode = xCell->IsTextEditActive();
+
+ if (!bRowHasCellInEditMode && bCellInEditMode)
+ bRowHasCellInEditMode = true;
+
+ if ((bRowHasText == bCellHasText) || (bRowHasText && bCellInEditMode))
{
nMinHeight = std::max( nMinHeight, xCell->getMinimumHeight() );
}
@@ -770,6 +780,19 @@ void TableLayouter::LayoutTableHeight( tools::Rectangle& rArea, bool bFit )
bRowHasText = true;
nMinHeight = xCell->getMinimumHeight();
}
+
+ // tdf#137949 We should consider "Heigth" property while calculating minimum height.
+ // This control decides when we use "Heigth" property value instead of calculated minimum height
+ // Case 1: * Row has "Heigth" property
+ // * Calculated minimum heigth is smaller than Height propery value.
+ // Case 2: * Row has "Heigth" property
+ // * Calculated minimum heigth is bigger than Height propery value and
+ // * Row has not any text of any cell in edit mode in the row (means completely empty)
+ if ((nMinHeight < nRowPropHeight && nRowPropHeight > 0 ) ||
+ (nMinHeight > nRowPropHeight && nRowPropHeight > 0 && (!bRowHasText && !bRowHasCellInEditMode)))
+ {
+ nMinHeight = nRowPropHeight;
+ }
}
}
}
@@ -783,7 +806,6 @@ void TableLayouter::LayoutTableHeight( tools::Rectangle& rArea, bool bFit )
else
{
sal_Int32 nRowHeight = 0;
- Reference< XPropertySet > xRowSet( xRows->getByIndex(nRow), UNO_QUERY_THROW );
bool bOptimal = false;
xRowSet->getPropertyValue( sOptimalSize ) >>= bOptimal;