In searching through the source code, I decided on the following work-
around when instantiating a MenuBar. Unfortunately, it doesn't handle
every scenario, but it gets most of them right.
MenuBar bar = new MenuBar() {
@Override
public void onBrowserEvent(Event event) {
super.onBrowserEvent(event);
if (DOM.eventGetType(event) == Event.ONMOUSEOUT) {
Element barEle = getElement();
Element outEle = DOM.eventGetFromElement(event);
Element toEle = DOM.eventGetToElement(event);
if (DOM.isOrHasChild(barEle, outEle) &&
!DOM.isOrHasChild(barEle,
toEle)) {
// Focus has shifted off of the MenuBar.
But is it now on a sub-
menu?
boolean onSubMenu = false;
for (MenuItem mi : this.getItems()) {
MenuBar subMenu = mi.getSubMenu();
Widget parent = subMenu == null ? null
: subMenu.getParent();
Element parEle = parent == null ? null
: parent.getElement();
if ((parEle != null) &&
(DOM.isOrHasChild(parEle, toEle))) {
onSubMenu = true;
break;
}
}
if (!onSubMenu) {
MenuItem mi = getSelectedItem();
if (mi != null) {
mi.removeStyleDependentName("selected");
}
}
}
}
}
@Override
public void onPopupClosed(PopupPanel sender, boolean autoClosed) {
MenuItem mi = getSelectedItem();
if (mi != null) {
// Is the closed Popup the currently selected menu
item?
if (mi.getSubMenu() == sender.getWidget()) {
mi.removeStyleDependentName("selected");
}
}
super.onPopupClosed(sender, autoClosed);
}
};
Hope this helps someone else,
john...
PS. Please let me know if this is going to be fixed in a future
release, or let me know what I can do to get it on that list.
On Dec 30, 10:54 am, John Fowler <[email protected]> wrote:
> Does anyone know if this is a defect to be corrected, or if there is a
> work-around for this?
>
> For clarity, I'll describe the scenario fully according to two cases:
>
> 1) When a menu bar is set to automatically open its sub-menus,
> MenuBar.setAutoOpen(true), and the user does not select a menu item,
> the menus do not close until the user clicks outside of the menu bar
> area. That functionality is _correct_. HOWEVER, once the sub-menu
> does close in response to a click, the header text/icon on the menu
> bar for that sub-menu stays highlighted with its hover style. That is
> _not_ correct.
>
> 2) When the menu bar is not set to automatically open it's sub-menus
> (default operation), and the user merely moves their mouse over the
> menu bar, the menu items hovered over will highlight. However, if the
> user does not click any menu item, but moves the mouse off the menu
> bar, the last hovered item will remain highlighted. That is not
> correct GUI behavior.
>
> I know of no application which functions in this manner, so I believe
> this should rightly be called a defect.
>
> Can anyone tell me if this has already been identified, or how I can
> work around it?
>
> john...
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---