Reviewers: rdcastro, rjrjr,

Description:
Fixing setInnerHTML calls on attach/detach sections.


Please review this at http://gwt-code-reviews.appspot.com/1422811/

Affected files:
M user/src/com/google/gwt/uibinder/elementparsers/WidgetPlaceholderInterpreter.java
  M user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java


Index: user/src/com/google/gwt/uibinder/elementparsers/WidgetPlaceholderInterpreter.java
===================================================================
--- user/src/com/google/gwt/uibinder/elementparsers/WidgetPlaceholderInterpreter.java (revision 10081) +++ user/src/com/google/gwt/uibinder/elementparsers/WidgetPlaceholderInterpreter.java (working copy)
@@ -182,14 +182,16 @@

     if (uiWriter.useLazyWidgetBuilders()) {
       if (idIsHasText.contains(idHolder)) {
-        fieldManager.require(childField).addAttachStatement(
- "%s.setText(%s.getElementById(%s).getInnerText());", childField,
-            fieldManager.convertFieldToGetter(fieldName),
+        fieldManager.require(fieldName).addAttachStatement(
+            "%s.setText(%s.getElementById(%s).getInnerText());",
+            fieldManager.convertFieldToGetter(childField),
+            fieldName,
             fieldManager.convertFieldToGetter(idHolder));
       } else if (idIsHasHTML.contains(idHolder)) {
-        fieldManager.require(childField).addAttachStatement(
- "%s.setHTML(%s.getElementById(%s).getInnerHTML());", childField,
-            fieldManager.convertFieldToGetter(fieldName),
+        fieldManager.require(fieldName).addAttachStatement(
+            "%s.setHTML(%s.getElementById(%s).getInnerHTML());",
+            fieldManager.convertFieldToGetter(childField),
+            fieldName,
             fieldManager.convertFieldToGetter(idHolder));
       }
     } else {
Index: user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java
===================================================================
--- user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java (revision 10081) +++ user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java (working copy)
@@ -274,6 +274,13 @@
     }

     w.newline();
+ // If we forced an attach, we should always detach, regardless of whether
+    // there are any detach statements.
+    if (attachedVar != null) {
+      w.write("// Detach section.");
+      w.write("%s.detach();", attachedVar);
+    }
+
     if (detachStatements.size() > 0) {
       if (isAttachable) {
         w.write("%s.detachedInitializationCallback = ", getName());
@@ -283,14 +290,12 @@
         w.outdent();
         w.write("@Override public void execute() {");
         w.indent();
-      } else if (attachedVar != null) {
-        w.write("// Detach section.");
-        w.write("%s.detach();", attachedVar);
       }

       for (String s : detachStatements) {
         w.write(s);
       }
+
       if (isAttachable) {
         w.outdent();
         w.write("}");


--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to