aboutsummaryrefslogtreecommitdiff
path: root/dw
diff options
context:
space:
mode:
authorSebastian Geerken <devnull@localhost>2014-06-19 21:25:29 +0200
committerSebastian Geerken <devnull@localhost>2014-06-19 21:25:29 +0200
commite96f5d77ff1553b4089fff0a0cbe5f0a42b8acfe (patch)
treeb764015efece39070b443967b7db98b7112f3c64 /dw
parentcdcaaca92d5e80107b4e181846f37a35fd45d6a6 (diff)
Fixed table bug.
Diffstat (limited to 'dw')
-rw-r--r--dw/table.cc20
-rw-r--r--dw/table.hh2
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 &&