Hey Janne,
2010/8/5 Janne Rönkkö <[email protected]>:
> Hi,
>
> If a row is inserted and style class is added immediately using
> setStyleClass function one gets a JavaScript error message "Wt internal
> error: TypeError: j3 is undefined, code: undefined, description: undefined"
> (or similar).
Oops, thanks for the test case.
In attachment is a patch (which should apply against Wt 3.1.3 and is
also available in latest git) that fixes this, and makes some other
improvements to WTable incremental rendering.
Regards,
koen
commit 7533aff617d04408151bbcc7ce69543c6376e4b0
Author: Koen Deforche <[email protected]>
Date: Thu Aug 5 15:13:35 2010 +0200
fix bug where row changes to added rows were propagated; optimize no-op rendering
diff --git a/src/Wt/WTable.C b/src/Wt/WTable.C
index ce1fcdc..0c8c1b3 100644
--- a/src/Wt/WTable.C
+++ b/src/Wt/WTable.C
@@ -81,16 +81,15 @@ void WTable::expand(int row, int column, int rowSpan, int columnSpan)
if ((newNumRows > rowCount())
|| (newNumColumns > curNumColumns)) {
- if (newNumColumns == curNumColumns && rowCount() > headerRowCount_)
+ if (newNumColumns == curNumColumns && rowCount() >= headerRowCount_)
rowsAdded_ += newNumRows - rowCount();
else
flags_.set(BIT_GRID_CHANGED);
repaint(RepaintInnerHtml);
- for (int r = rowCount(); r < newNumRows; ++r) {
+ for (int r = rowCount(); r < newNumRows; ++r)
rows_.push_back(new WTableRow(this, newNumColumns));
- }
if (newNumColumns > curNumColumns) {
for (int r = 0; r < rowCount(); ++r) {
@@ -99,7 +98,7 @@ void WTable::expand(int row, int column, int rowSpan, int columnSpan)
}
for (int c = curNumColumns; c <= column; ++c)
- columns_.push_back(new WTableColumn(this));
+ columns_.push_back(new WTableColumn(this));
}
}
@@ -118,13 +117,17 @@ int WTable::columnCount() const
WTableRow* WTable::insertRow(int row)
{
- WTableRow* tableRow = new WTableRow(this, columnCount());
+ if (row == rowCount())
+ return rowAt(row); // trigger a simple expand()
+ else {
+ WTableRow* tableRow = new WTableRow(this, columnCount());
- rows_.insert(rows_.begin() + row, tableRow);
- flags_.set(BIT_GRID_CHANGED);
- repaint(RepaintInnerHtml);
+ rows_.insert(rows_.begin() + row, tableRow);
+ flags_.set(BIT_GRID_CHANGED);
+ repaint(RepaintInnerHtml);
- return tableRow;
+ return tableRow;
+ }
}
WTableColumn* WTable::insertColumn(int column)
@@ -159,11 +162,15 @@ void WTable::deleteRow(int row)
delete cell;
}
+ if (row >= rowCount() - rowsAdded_)
+ --rowsAdded_;
+ else {
+ flags_.set(BIT_GRID_CHANGED);
+ repaint(RepaintInnerHtml);
+ }
+
delete rows_[row];
rows_.erase(rows_.begin() + row);
-
- flags_.set(BIT_GRID_CHANGED);
- repaint(RepaintInnerHtml);
}
void WTable::deleteColumn(int column)
@@ -180,6 +187,9 @@ void WTable::deleteColumn(int column)
void WTable::repaintRow(WTableRow *row)
{
+ if (row->rowNum() >= rowCount() - rowsAdded_)
+ return;
+
if (!rowsChanged_)
rowsChanged_ = new std::set<WTableRow *>();
------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
witty-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/witty-interest