From ede743dbbef26b6d2d795034e5f0a2cfe86837b6 Mon Sep 17 00:00:00 2001 From: Jouni Koivuviita Date: Tue, 1 Apr 2008 11:03:10 +0000 Subject: [PATCH] Fix: setting a new source for TYPE_BROWSER Embedded component doesn't replace the original IFRAME-element, it only changes the src-attribute value. This way the browser can keep history information of the url changes. svn changeset:4106/svn branch:trunk --- .../terminal/gwt/client/ui/IEmbedded.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java index 1efdc41f90..09c1a2ee87 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java @@ -4,6 +4,8 @@ package com.itmill.toolkit.terminal.gwt.client.ui; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.HTML; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; import com.itmill.toolkit.terminal.gwt.client.Paintable; @@ -13,19 +15,29 @@ public class IEmbedded extends HTML implements Paintable { private String heigth; private String width; + private Element browserElement; public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { if (client.updateComponent(this, uidl, true)) { return; } + boolean clearBrowserElement = true; + if (uidl.hasAttribute("type")) { final String type = uidl.getStringAttribute("type"); if (type.equals("image")) { setHTML(""); } else if (type.equals("browser")) { - setHTML(""); + if (browserElement == null) { + setHTML(""); + browserElement = DOM.getFirstChild(getElement()); + } else { + DOM.setElementAttribute(browserElement, "src", getSrc(uidl, + client)); + } + clearBrowserElement = false; } else { ApplicationConnection.getConsole().log( "Unknown Embedded type '" + type + "'"); @@ -47,10 +59,14 @@ public class IEmbedded extends HTML implements Paintable { "Unknown Embedded; no type or mimetype attribute"); } + if (clearBrowserElement) { + browserElement = null; + } + } /** - * Helper to return translated src attribute from embeddeds uidl + * Helper to return translated src-attribute from embedded's UIDL * * @param uidl * @param client -- 2.39.5