From f2370b345d0bf2802d0c75b6bb6ae8a5f39942f2 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Tue, 21 Dec 2010 10:27:30 +0000 Subject: [PATCH] #6035 Icons are no longer transparent in MenuBar in IE6 svn changeset:16602/svn branch:6.5 --- src/com/vaadin/terminal/gwt/client/Util.java | 45 ++++++++++++------- .../terminal/gwt/client/ui/VMenuBar.java | 12 ++--- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/Util.java b/src/com/vaadin/terminal/gwt/client/Util.java index 0f38d126c0..cae642838f 100644 --- a/src/com/vaadin/terminal/gwt/client/Util.java +++ b/src/com/vaadin/terminal/gwt/client/Util.java @@ -256,26 +256,37 @@ public class Util { public native static void addPngFix(Element el, String blankImageUrl) /*-{ el.attachEvent("onload", function() { - var src = el.src; - if (src.indexOf(".png") < 1) return; - var w = el.width || 16; - var h = el.height || 16; - if(h==30 || w==28) { - setTimeout(function(){ - el.style.height = el.height + "px"; - el.style.width = el.width + "px"; - el.src = blankImageUrl; - },10); - } else { - el.src = blankImageUrl; - el.style.height = h + "px"; - el.style.width = w + "px"; - } - el.style.padding = "0"; - el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='crop')"; + doPngFix(el,blankImageUrl); },false); }-*/; + public native static void doPngFix(Element el, String blankImageUrl) + /*-{ + var src = el.src; + if (src.indexOf(".png") < 1) return; + var w = el.width || 16; + var h = el.height || 16; + if(h==30 || w==28) { + setTimeout(function(){ + el.style.height = el.height + "px"; + el.style.width = el.width + "px"; + el.src = blankImageUrl; + },10); + } else { + el.src = blankImageUrl; + el.style.height = h + "px"; + el.style.width = w + "px"; + } + el.style.padding = "0"; + el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='crop')"; + }-*/; + + public static void doIE6PngFix(Element el, ApplicationConnection ac) { + String blankImageUrl = ac.getThemeUri() + + "/../runo/common/img/blank.gif"; + doPngFix(el, blankImageUrl); + } + /** * Clones given element as in JavaScript. * diff --git a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java index 598543fa10..26ca48017d 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java @@ -401,6 +401,10 @@ public class VMenuBar extends SimpleFocusablePanel implements Paintable, // Handle onload events (icon loaded, size changes) if (DOM.eventGetType(e) == Event.ONLOAD) { + if (BrowserInfo.get().isIE6()) { + Util.doIE6PngFix((Element) Element.as(e.getEventTarget()), + client); + } VMenuBar parent = getParentMenu(); if (parent != null) { // The onload event for an image in a popup should be sent to @@ -814,14 +818,6 @@ public class VMenuBar extends SimpleFocusablePanel implements Paintable, public void setHTML(String html) { this.html = html; DOM.setInnerHTML(getElement(), html); - if (BrowserInfo.get().isIE6() && client != null) { - // Find possible icon element - final NodeList imgs = getElement() - .getElementsByTagName("IMG"); - if (imgs.getLength() > 0) { - client.addPngFix((Element) imgs.getItem(0).cast()); - } - } } public String getText() { -- 2.39.5