aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Englund <marc.englund@itmill.com>2009-01-23 08:42:49 +0000
committerMarc Englund <marc.englund@itmill.com>2009-01-23 08:42:49 +0000
commit9c72d0f4831eeac9201dac319d9c331cdbd5c0bd (patch)
treecbd0ca71b6c3f58ee86ccad4e2b2473ee21e29bf /src
parent165c4d241981db476e60bb309e209ed2b4f09db5 (diff)
downloadvaadin-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.java2
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java44
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) {