From: Matti Tahvonen Date: Fri, 5 Dec 2008 17:47:10 +0000 (+0000) Subject: fixes #2292. Onload size notification for IButton and some other components X-Git-Tag: 6.7.0.beta1~3652 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=bc9c3dec068c721e687c04169f7f1429570fabf3;p=vaadin-framework.git fixes #2292. Onload size notification for IButton and some other components svn changeset:6104/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ICaption.java b/src/com/itmill/toolkit/terminal/gwt/client/ICaption.java index 229be453d9..2b99b3fb1a 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ICaption.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ICaption.java @@ -91,7 +91,6 @@ public class ICaption extends HTML { icon.setWidth("0px"); icon.setHeight("0px"); - DOM.sinkEvents(icon.getElement(), Event.ONLOAD); DOM.insertChild(getElement(), icon.getElement(), getInsertPosition(ATTRIBUTE_ICON)); } @@ -212,6 +211,7 @@ public class ICaption extends HTML { } + @Override public void onBrowserEvent(Event event) { super.onBrowserEvent(event); final Element target = DOM.eventGetTarget(event); diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IButton.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IButton.java index 15641acff8..1faeda88ec 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IButton.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IButton.java @@ -4,6 +4,8 @@ package com.itmill.toolkit.terminal.gwt.client.ui; +import java.util.HashSet; + import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; @@ -15,6 +17,7 @@ import com.itmill.toolkit.terminal.gwt.client.BrowserInfo; import com.itmill.toolkit.terminal.gwt.client.ITooltip; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; +import com.itmill.toolkit.terminal.gwt.client.Util; public class IButton extends Button implements Paintable { @@ -32,6 +35,11 @@ public class IButton extends Button implements Paintable { private Icon icon; + /** + * Helper flat to handle special-case where the button is moved from under + * mouse while clicking it. In this case mouse leaves the button without + * moving. + */ private boolean clickPending; public IButton() { @@ -45,7 +53,7 @@ public class IButton extends Button implements Paintable { return; } /* - * TODO isolata workaround. Safari don't always seem to fire + * TODO isolate workaround. Safari don't always seem to fire * onblur previously focused component before button is clicked. */ IButton.this.setFocus(true); @@ -110,23 +118,24 @@ public class IButton extends Button implements Paintable { } } + @Override public void setText(String text) { DOM.setInnerText(captionElement, text); } + @Override public void onBrowserEvent(Event event) { super.onBrowserEvent(event); - // Handle special-case where the button is moved from under mouse - // while clicking it. In this case mouse leaves the button without - // moving. - if (DOM.eventGetType(event) == Event.ONMOUSEDOWN) { + if (DOM.eventGetType(event) == Event.ONLOAD) { + HashSet set = new HashSet(); + set.add(this); + Util.componentSizeUpdated(set); + } else if (DOM.eventGetType(event) == Event.ONMOUSEDOWN) { clickPending = true; - } - if (DOM.eventGetType(event) == Event.ONMOUSEMOVE) { + } else if (DOM.eventGetType(event) == Event.ONMOUSEMOVE) { clickPending = false; - } - if (DOM.eventGetType(event) == Event.ONMOUSEOUT) { + } else if (DOM.eventGetType(event) == Event.ONMOUSEOUT) { if (clickPending) { click(); } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java index 74bad0bfb9..c3b3c8d0c0 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java @@ -4,6 +4,8 @@ package com.itmill.toolkit.terminal.gwt.client.ui; +import java.util.HashSet; + import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; @@ -13,6 +15,7 @@ import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; import com.itmill.toolkit.terminal.gwt.client.ITooltip; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; +import com.itmill.toolkit.terminal.gwt.client.Util; public class ICheckBox extends com.google.gwt.user.client.ui.CheckBox implements Paintable, Field { @@ -89,18 +92,26 @@ public class ICheckBox extends com.google.gwt.user.client.ui.CheckBox implements immediate = uidl.getBooleanAttribute("immediate"); } + @Override public void onBrowserEvent(Event event) { super.onBrowserEvent(event); + if (event.getTypeInt() == Event.ONLOAD) { + HashSet set = new HashSet(); + set.add(this); + Util.componentSizeUpdated(set); + } if (client != null) { client.handleTooltipEvent(event, this); } } + @Override public void setWidth(String width) { setBlockMode(); super.setWidth(width); } + @Override public void setHeight(String height) { setBlockMode(); super.setHeight(height); diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java index d8cee6e466..80154fb9d0 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java @@ -4,6 +4,8 @@ package com.itmill.toolkit.terminal.gwt.client.ui; +import java.util.HashSet; + import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; @@ -15,6 +17,7 @@ import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; import com.itmill.toolkit.terminal.gwt.client.ITooltip; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; +import com.itmill.toolkit.terminal.gwt.client.Util; public class ILink extends HTML implements Paintable, ClickListener { @@ -157,8 +160,14 @@ public class ILink extends HTML implements Paintable, ClickListener { } } + @Override public void onBrowserEvent(Event event) { final Element target = DOM.eventGetTarget(event); + if (event.getTypeInt() == Event.ONLOAD) { + HashSet set = new HashSet(); + set.add(this); + Util.componentSizeUpdated(set); + } if (client != null) { client.handleTooltipEvent(event, this); } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/Icon.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/Icon.java index 52672d69f4..f76a5f8881 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/Icon.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/Icon.java @@ -5,6 +5,7 @@ package com.itmill.toolkit.terminal.gwt.client.ui; import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.UIObject; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; @@ -30,6 +31,8 @@ public class Icon extends UIObject { String uri = client.translateToolkitUri(uidlUri); DOM.setElementProperty(getElement(), "src", uri); myUri = uidlUri; + // start sinkin onload events, widgets responsibility to react + sinkEvents(Event.ONLOAD); } }