From: John Alhroos Date: Wed, 10 Feb 2010 13:37:41 +0000 (+0000) Subject: Merged fix for #4109 to 6.3 branch. X-Git-Tag: 6.7.0.beta1~2053 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ec4b0f0c8b7de237b11245ae595df4052e3f21cd;p=vaadin-framework.git Merged fix for #4109 to 6.3 branch. svn changeset:11252/svn branch:6.3 --- diff --git a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java index 0a28fd6b41..75ecbd3249 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java @@ -8,11 +8,14 @@ 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; @@ -27,7 +30,8 @@ import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; public class VMenuBar extends Widget implements Paintable, - CloseHandler, ContainerResizedListener { +CloseHandler, ContainerResizedListener, +ValueChangeHandler { /** Set the CSS class name to allow styling. */ public static final String CLASSNAME = "v-menubar"; @@ -76,6 +80,8 @@ public class VMenuBar extends Widget implements Paintable, if (!subMenu) { setStylePrimaryName(CLASSNAME); + // Monitor back&forward buttons + History.addValueChangeHandler(this); } else { setStylePrimaryName(CLASSNAME + "-submenu"); } @@ -866,4 +872,12 @@ public class VMenuBar extends Widget implements Paintable, 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 8520e52eec..04a73939a7 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -19,11 +19,14 @@ import com.google.gwt.dom.client.TableRowElement; import com.google.gwt.dom.client.TableSectionElement; 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; @@ -64,7 +67,8 @@ import com.vaadin.terminal.gwt.client.ui.VScrollTable.VScrollTableBody.VScrollTa * * TODO implement unregistering for child components in Cells */ -public class VScrollTable extends FlowPanel implements Table, ScrollHandler { +public class VScrollTable extends FlowPanel implements Table, ScrollHandler, + ValueChangeHandler { public static final String CLASSNAME = "v-table"; public static final String ITEM_CLICK_EVENT_ID = "itemClick"; @@ -159,6 +163,8 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler { rowRequestHandler = new RowRequestHandler(); + // Handle back & forward browser buttons + History.addValueChangeHandler(this); } @SuppressWarnings("unchecked") @@ -3064,4 +3070,8 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler { } } + public void onValueChange(ValueChangeEvent arg0) { + client.getContextMenu().hide(); + } + }