diff options
Diffstat (limited to 'dw')
-rw-r--r-- | dw/table.cc | 20 | ||||
-rw-r--r-- | dw/table.hh | 2 |
2 files changed, 19 insertions, 3 deletions
diff --git a/dw/table.cc b/dw/table.cc index b0d7de97..c9c725be 100644 --- a/dw/table.cc +++ b/dw/table.cc @@ -57,6 +57,10 @@ Table::Table(bool limitTextWidth) baseline = new misc::SimpleVector <int> (8); rowStyle = new misc::SimpleVector <core::style::Style*> (8); + colWidthsUpToDateWidthColExtremes = true; + DBG_OBJ_SET_BOOL ("colWidthsUpToDateWidthColExtremes", + colWidthsUpToDateWidthColExtremes); + redrawX = 0; redrawY = 0; } @@ -634,9 +638,11 @@ void Table::calcCellSizes (bool calcHeights) calcHeights ? "true" : "false"); DBG_OBJ_MSG_START (); - if ((calcHeights && (needsResize () || resizeQueued () || - extremesChanged () || extremesQueued ())) || - (extremesChanged () || extremesQueued ())) + bool sizeChanged = needsResize () || resizeQueued (); + bool extremesChanges = extremesChanged () || extremesQueued (); + + if (calcHeights ? (extremesChanges || sizeChanged) : + (extremesChanges || !colWidthsUpToDateWidthColExtremes)) forceCalcCellSizes (calcHeights); DBG_OBJ_MSG_END (); @@ -678,6 +684,10 @@ void Table::forceCalcCellSizes (bool calcHeights) DBG_OBJ_ARRSET_NUM ("colWidths", i, colWidths->get (i)); } + colWidthsUpToDateWidthColExtremes = true; + DBG_OBJ_SET_BOOL ("colWidthsUpToDateWidthColExtremes", + colWidthsUpToDateWidthColExtremes); + if (calcHeights) { setCumHeight (0, 0); for (int row = 0; row < numRows; row++) { @@ -914,6 +924,10 @@ void Table::forceCalcColumnExtremes () } } + colWidthsUpToDateWidthColExtremes = false; + DBG_OBJ_SET_BOOL ("colWidthsUpToDateWidthColExtremes", + colWidthsUpToDateWidthColExtremes); + DBG_OBJ_MSG_END (); } diff --git a/dw/table.hh b/dw/table.hh index 580f4431..cc2aec1b 100644 --- a/dw/table.hh +++ b/dw/table.hh @@ -392,6 +392,8 @@ private: lout::misc::SimpleVector<core::style::Style*> *rowStyle; + bool colWidthsUpToDateWidthColExtremes; + inline bool childDefined(int n) { return n < children->size() && children->get(n) != NULL && |