Revision: 7903
Author: [email protected]
Date: Fri Apr 9 11:02:02 2010
Log: Fixing a bug in HTMLTable where cols are removed when a lower indexed
col is accessed.
http://gwt-code-reviews.appspot.com/314803/show
Review by: [email protected]
http://code.google.com/p/google-web-toolkit/source/detail?r=7903
Modified:
/trunk/user/src/com/google/gwt/user/client/ui/Grid.java
/trunk/user/src/com/google/gwt/user/client/ui/HTMLTable.java
/trunk/user/test/com/google/gwt/user/client/ui/GridTest.java
=======================================
--- /trunk/user/src/com/google/gwt/user/client/ui/Grid.java Tue Jan 26
10:25:12 2010
+++ /trunk/user/src/com/google/gwt/user/client/ui/Grid.java Fri Apr 9
11:02:02 2010
@@ -200,7 +200,7 @@
numColumns = columns;
// Update the size of the colgroup.
- getColumnFormatter().resizeColumnGroup(columns);
+ getColumnFormatter().resizeColumnGroup(columns, false);
}
/**
=======================================
--- /trunk/user/src/com/google/gwt/user/client/ui/HTMLTable.java Thu Feb 11
05:07:55 2010
+++ /trunk/user/src/com/google/gwt/user/client/ui/HTMLTable.java Fri Apr 9
11:02:02 2010
@@ -482,8 +482,9 @@
* Resize the column group element.
*
* @param columns the number of columns
+ * @param growOnly true to only grow, false to shrink if needed
*/
- void resizeColumnGroup(int columns) {
+ void resizeColumnGroup(int columns, boolean growOnly) {
// The colgroup should always have at least one element. See
// prepareColumnGroup() for more details.
columns = Math.max(columns, 1);
@@ -493,7 +494,7 @@
for (int i = num; i < columns; i++) {
columnGroup.appendChild(Document.get().createColElement());
}
- } else if (num > columns) {
+ } else if (!growOnly && num > columns) {
for (int i = num; i > columns; i--) {
columnGroup.removeChild(columnGroup.getLastChild());
}
@@ -503,7 +504,7 @@
private Element ensureColumn(int col) {
prepareColumn(col);
prepareColumnGroup();
- resizeColumnGroup(col + 1);
+ resizeColumnGroup(col + 1, true);
return columnGroup.getChild(col).cast();
}
=======================================
--- /trunk/user/test/com/google/gwt/user/client/ui/GridTest.java Mon Jan 11
13:16:12 2010
+++ /trunk/user/test/com/google/gwt/user/client/ui/GridTest.java Fri Apr 9
11:02:02 2010
@@ -89,14 +89,18 @@
columns.removeStyleName(0, "c");
assertEquals("base b", columns.getStyleName(0));
- // Only one column should be created.
+ // All five cols should be created.
Element e = DOM.getChild(r.getElement(), 0);
- assertEquals(1, DOM.getChildCount(e));
+ assertEquals(5, DOM.getChildCount(e));
columns.addStyleName(3, "a");
- // Now there shoud be three such columns .
+ // There should still be five columns.
e = DOM.getChild(r.getElement(), 0);
- assertEquals(4, DOM.getChildCount(e));
+ assertEquals(5, DOM.getChildCount(e));
+
+ // Querying column 0 should not invalidate column 3.
+ assertEquals("base b", columns.getStyleName(0));
+ assertEquals("a", columns.getStyleName(3));
}
public void testColumnMessage() {
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors
To unsubscribe, reply using "remove me" as the subject.