From: Matti Tahvonen Date: Wed, 10 Mar 2010 15:21:25 +0000 (+0000) Subject: better fix for #4109 X-Git-Tag: 6.7.0.beta1~1957 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b7a6f34b19da0b85ed7c9208249f51c706eb63d1;p=vaadin-framework.git better fix for #4109 svn changeset:11755/svn branch:6.3 --- diff --git a/src/com/vaadin/terminal/gwt/client/ui/VContextMenu.java b/src/com/vaadin/terminal/gwt/client/ui/VContextMenu.java index e66e8279b7..fe5678bdc0 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VContextMenu.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VContextMenu.java @@ -155,4 +155,15 @@ public class VContextMenu extends VOverlay implements SubPartAware { return null; } } + + /** + * Hides context menu if it is currently shown by given action owner. + * + * @param actionOwner + */ + public void ensureHidden(ActionOwner actionOwner) { + if (this.actionOwner == actionOwner) { + hide(); + } + } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java index 1e12467113..e6bd4c6288 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java @@ -11,14 +11,11 @@ import java.util.Stack; import com.google.gwt.dom.client.NodeList; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; -import com.google.gwt.event.logical.shared.ValueChangeEvent; -import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.History; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.HasHTML; import com.google.gwt.user.client.ui.PopupPanel; @@ -33,8 +30,7 @@ import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; public class VMenuBar extends Widget implements Paintable, -CloseHandler, ContainerResizedListener, -ValueChangeHandler { + CloseHandler, ContainerResizedListener { /** Set the CSS class name to allow styling. */ public static final String CLASSNAME = "v-menubar"; @@ -83,8 +79,6 @@ ValueChangeHandler { if (!subMenu) { setStylePrimaryName(CLASSNAME); - // Monitor back&forward buttons - History.addValueChangeHandler(this); } else { setStylePrimaryName(CLASSNAME + "-submenu"); } @@ -94,6 +88,16 @@ ValueChangeHandler { | Event.ONLOAD); } + @Override + protected void onDetach() { + super.onDetach(); + if (!subMenu) { + setSelected(null); + hideChildren(); + menuVisible = false; + } + } + @Override public void setWidth(String width) { Util.setWidthExcludingPaddingAndBorder(this, width, 0); @@ -118,7 +122,7 @@ ValueChangeHandler { if (client.updateComponent(this, uidl, true)) { return; } - this.enabled = !uidl.getBooleanAttribute("disabled"); + enabled = !uidl.getBooleanAttribute("disabled"); // For future connections this.client = client; @@ -874,13 +878,4 @@ ValueChangeHandler { } return w; } - - public void onValueChange(ValueChangeEvent arg0) { - // Close menu if user uses back & forward buttons #4109 - if (!subMenu) { - setSelected(null); - hideChildren(); - menuVisible = false; - } - } } diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index e69da3be9b..b6c22e9a85 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -21,14 +21,11 @@ import com.google.gwt.dom.client.TableSectionElement; import com.google.gwt.dom.client.Style.Visibility; import com.google.gwt.event.dom.client.ScrollEvent; import com.google.gwt.event.dom.client.ScrollHandler; -import com.google.gwt.event.logical.shared.ValueChangeEvent; -import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.History; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.FlowPanel; @@ -77,7 +74,7 @@ import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation; * TODO implement unregistering for child components in Cells */ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, - VHasDropHandler, ValueChangeHandler { + VHasDropHandler { public static final String CLASSNAME = "v-table"; public static final String ITEM_CLICK_EVENT_ID = "itemClick"; @@ -173,8 +170,6 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, rowRequestHandler = new RowRequestHandler(); - // Handle back & forward browser buttons - History.addValueChangeHandler(this); } @SuppressWarnings("unchecked") @@ -1679,6 +1674,12 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, } } + @Override + protected void onDetach() { + super.onDetach(); + client.getContextMenu().ensureHidden(this); + } + class VisibleColumnAction extends Action { String colKey; @@ -2293,6 +2294,12 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, } } + @Override + protected void onDetach() { + super.onDetach(); + client.getContextMenu().ensureHidden(this); + } + public String getKey() { return String.valueOf(rowKey); } @@ -3294,8 +3301,4 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, } - public void onValueChange(ValueChangeEvent arg0) { - client.getContextMenu().hide(); - } - }