summaryrefslogtreecommitdiff
path: root/dw/table.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dw/table.cc')
-rw-r--r--dw/table.cc20
1 files changed, 17 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 ();
}