Merging trunk c4889 into this branch.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4892 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/ui/FlowPanel.java b/user/src/com/google/gwt/user/client/ui/FlowPanel.java
index 44f2153..eab2cfa 100644
--- a/user/src/com/google/gwt/user/client/ui/FlowPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/FlowPanel.java
@@ -15,6 +15,7 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.dom.client.Node;
import com.google.gwt.user.client.DOM;
/**
@@ -47,7 +48,13 @@
@Override
public void clear() {
super.doLogicalClear();
- this.getElement().setInnerHTML("");
+
+ // Remove all existing child nodes.
+ Node child = getElement().getFirstChild();
+ while (child != null) {
+ getElement().removeChild(child);
+ child = getElement().getFirstChild();
+ }
}
/**
diff --git a/user/test/com/google/gwt/user/client/ui/FlowPanelTest.java b/user/test/com/google/gwt/user/client/ui/FlowPanelTest.java
index 441ac03..5db2691 100644
--- a/user/test/com/google/gwt/user/client/ui/FlowPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/FlowPanelTest.java
@@ -15,6 +15,7 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.dom.client.Element;
import com.google.gwt.junit.client.GWTTestCase;
import java.util.ArrayList;
@@ -58,4 +59,22 @@
assertNull(child.getElement().getPropertyString("__listener") == null);
}
}
+
+ public void testClearWithNestedChildren() {
+ FlowPanel target = new FlowPanel();
+ FlowPanel child0 = new FlowPanel();
+ HTML child1 = new HTML();
+ target.add(child0);
+ child0.add(child1);
+
+ Element child0Elem = child0.getElement();
+ Element child1Elem = child1.getElement();
+
+ assertEquals(child0Elem, target.getElement().getFirstChild());
+ assertEquals(child1Elem, child0Elem.getFirstChild());
+
+ target.clear();
+
+ assertEquals(child1Elem, child0Elem.getFirstChildElement());
+ }
}