]> source.dussan.org Git - vaadin-framework.git/commitdiff
Reuse img-element when repainting embedded image. Fixes #2471
authorMarc Englund <marc.englund@itmill.com>
Fri, 23 Jan 2009 08:42:49 +0000 (08:42 +0000)
committerMarc Englund <marc.englund@itmill.com>
Fri, 23 Jan 2009 08:42:49 +0000 (08:42 +0000)
svn changeset:6621/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/Util.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IEmbedded.java

index d9ec666655a8860864b4a223d3720e7444d9e260..40684cc6f25af78b370b72fcd0e9baaaa6f3b8e3 100644 (file)
@@ -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);
     }-*/;
 
index 16930255de55f6b0f665c81e11097c72fc2fe7ed..669d578b5339309ee6414766773c59aadfc2b70f 100644 (file)
@@ -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) {