Another fix for the Window __gwt_initWindowHandlers method. I was using ScriptElement.setText to set the source code in a script tag, but Safari 2 does not support setText. This patch adds a Document.createScriptElement(String source) method that uses the correct methods via a DeferredBinding. Patch by: jlabanca Review by: jgw (desk) git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@3559 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/dom/client/DOMImpl.java b/user/src/com/google/gwt/dom/client/DOMImpl.java index 88e4c96..c4a10d1 100644 --- a/user/src/com/google/gwt/dom/client/DOMImpl.java +++ b/user/src/com/google/gwt/dom/client/DOMImpl.java
@@ -33,6 +33,12 @@ public abstract InputElement createInputRadioElement(String name); + public ScriptElement createScriptElement(String source) { + ScriptElement elem = (ScriptElement) createElement("script"); + elem.setText(source); + return elem; + } + public SelectElement createSelectElement(boolean multiple) { SelectElement select = (SelectElement) createElement("select"); if (multiple) {
diff --git a/user/src/com/google/gwt/dom/client/DOMImplSafari.java b/user/src/com/google/gwt/dom/client/DOMImplSafari.java index 1a5d930..2265d48 100644 --- a/user/src/com/google/gwt/dom/client/DOMImplSafari.java +++ b/user/src/com/google/gwt/dom/client/DOMImplSafari.java
@@ -19,6 +19,15 @@ * Safari implementation of {@link com.google.gwt.user.client.impl.DOMImpl}. */ class DOMImplSafari extends DOMImplStandard { + /** + * Safari 2 does not support {@link ScriptElement#setText(String)}. + */ + @Override + public ScriptElement createScriptElement(String source) { + ScriptElement elem = (ScriptElement) createElement("script"); + elem.setInnerText(source); + return elem; + } @Override public native int getAbsoluteLeft(Element elem) /*-{
diff --git a/user/src/com/google/gwt/dom/client/Document.java b/user/src/com/google/gwt/dom/client/Document.java index eb07ee3..3d10a25 100644 --- a/user/src/com/google/gwt/dom/client/Document.java +++ b/user/src/com/google/gwt/dom/client/Document.java
@@ -437,6 +437,16 @@ } /** + * Creates a <script> element. + * + * @param source the source code to set inside the element + * @return the newly created element + */ + public final ScriptElement createScriptElement(String source) { + return DOMImpl.impl.createScriptElement(source); + } + + /** * Creates a <select> element. * * @return the newly created element
diff --git a/user/src/com/google/gwt/user/client/Window.java b/user/src/com/google/gwt/user/client/Window.java index 646d77e..367e39a 100644 --- a/user/src/com/google/gwt/user/client/Window.java +++ b/user/src/com/google/gwt/user/client/Window.java
@@ -665,10 +665,9 @@ handlersAreInitialized = true; // Embed the init script on the page - ScriptElement scriptElem = Document.get().createScriptElement(); String initFunc = getInitHandlerMethodString().replaceFirst("function", "function __gwt_initWindowHandlers"); - scriptElem.setText(initFunc); + ScriptElement scriptElem = Document.get().createScriptElement(initFunc); Document.get().getBody().appendChild(scriptElem); // Initialize the handlers