diff options
author | Marc Englund <marc.englund@itmill.com> | 2009-01-23 08:42:49 +0000 |
---|---|---|
committer | Marc Englund <marc.englund@itmill.com> | 2009-01-23 08:42:49 +0000 |
commit | 9c72d0f4831eeac9201dac319d9c331cdbd5c0bd (patch) | |
tree | cbd0ca71b6c3f58ee86ccad4e2b2473ee21e29bf /src | |
parent | 165c4d241981db476e60bb309e209ed2b4f09db5 (diff) | |
download | vaadin-framework-9c72d0f4831eeac9201dac319d9c331cdbd5c0bd.tar.gz vaadin-framework-9c72d0f4831eeac9201dac319d9c331cdbd5c0bd.zip |
Reuse img-element when repainting embedded image. Fixes #2471
svn changeset:6621/svn branch:trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/Util.java | 2 | ||||
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java | 44 |
2 files changed, 35 insertions, 11 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Util.java b/src/com/itmill/toolkit/terminal/gwt/client/Util.java index d9ec666655..40684cc6f2 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/Util.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/Util.java @@ -235,7 +235,7 @@ public class Util { el.style.height = h+"px"; el.style.width = w+"px"; el.style.padding = "0px"; - el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='crop')"; + el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='scale')"; },false); }-*/; 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 16930255de..669d578b53 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,9 @@ package com.itmill.toolkit.terminal.gwt.client.ui; +import com.google.gwt.dom.client.Node; +import com.google.gwt.dom.client.NodeList; +import com.google.gwt.dom.client.Style; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; @@ -37,25 +40,46 @@ public class IEmbedded extends HTML implements Paintable { if (uidl.hasAttribute("type")) { final String type = uidl.getStringAttribute("type"); if (type.equals("image")) { + Element el = null; + boolean created = false; + NodeList nodes = getElement().getChildNodes(); + if (nodes != null && nodes.getLength() == 1) { + Node n = nodes.getItem(0); + if (n.getNodeType() == Node.ELEMENT_NODE) { + Element e = (Element) n; + if (e.getTagName().equals("IMG")) { + el = e; + } + } + } + if (el == null) { + setHTML(""); + el = DOM.createImg(); + created = true; + client.addPngFix(el); + DOM.sinkEvents(el, Event.ONLOAD); + } + + // Set attributes + Style style = el.getStyle(); String w = uidl.getStringAttribute("width"); if (w != null) { - w = " width=\"" + w + "\" "; + style.setProperty("width", w); } else { - w = ""; + style.setProperty("width", ""); } String h = uidl.getStringAttribute("height"); if (h != null) { - h = " height=\"" + h + "\" "; + style.setProperty("height", h); } else { - h = ""; + style.setProperty("height", ""); } + DOM.setElementProperty(el, "src", getSrc(uidl, client)); - setHTML("<img src=\"" + getSrc(uidl, client) + "\"" + w + h - + "/>"); - - Element el = DOM.getFirstChild(getElement()); - DOM.sinkEvents(el, Event.ONLOAD); - client.addPngFix(el); + if (created) { + // insert in dom late + getElement().appendChild(el); + } } else if (type.equals("browser")) { if (browserElement == null) { |