Author: [EMAIL PROTECTED] Date: Thu Dec 11 07:38:37 2008 New Revision: 4305
Modified: releases/1.6/user/src/com/google/gwt/user/client/ui/ListenerWrapper.java releases/1.6/user/src/com/google/gwt/user/client/ui/Widget.java Log: Commiting fix for 3186, Mouse enter/leave events need to suppressed if the user did not actually enter or leave the Widget.java Review by:jlabanca Modified: releases/1.6/user/src/com/google/gwt/user/client/ui/ListenerWrapper.java ============================================================================== --- releases/1.6/user/src/com/google/gwt/user/client/ui/ListenerWrapper.java (original) +++ releases/1.6/user/src/com/google/gwt/user/client/ui/ListenerWrapper.java Thu Dec 11 07:38:37 2008 @@ -287,23 +287,11 @@ } public void onMouseOut(MouseOutEvent event) { - // Only fire the mouseLeave event if it's actually leaving this - // widget. - Element to = event.getToElement(); - Widget source = source(event); - if (to == null || !source.getElement().isOrHasChild(to)) { - listener.onMouseLeave(source(event)); - } + listener.onMouseLeave(source(event)); } public void onMouseOver(MouseOverEvent event) { - // Only fire the mouseEnter event if it's coming from outside this - // widget. - Element from = event.getFromElement(); - Widget source = source(event); - if (from == null || !source.getElement().isOrHasChild(from)) { - listener.onMouseEnter(source(event)); - } + listener.onMouseEnter(source(event)); } public void onMouseUp(MouseUpEvent event) { Modified: releases/1.6/user/src/com/google/gwt/user/client/ui/Widget.java ============================================================================== --- releases/1.6/user/src/com/google/gwt/user/client/ui/Widget.java (original) +++ releases/1.6/user/src/com/google/gwt/user/client/ui/Widget.java Thu Dec 11 07:38:37 2008 @@ -15,6 +15,7 @@ */ package com.google.gwt.user.client.ui; +import com.google.gwt.dom.client.Element; import com.google.gwt.event.dom.client.DomEvent; import com.google.gwt.event.logical.shared.HasHandlers; import com.google.gwt.event.shared.EventHandler; @@ -88,8 +89,25 @@ return handlerManager != null && handlerManager.isEventHandled(type); } - public void onBrowserEvent(Event nativeEvent) { - DomEvent.fireNativeEvent(nativeEvent, handlerManager); + public void onBrowserEvent(Event event) { + switch (DOM.eventGetType(event)) { + case Event.ONMOUSEOVER: + // Only fire the mouseEnter event if it's coming from outside this + // widget. + Element from = event.getFromElement(); + if (from != null && getElement().isOrHasChild(from)) { + return; + } + break; + case Event.ONMOUSEOUT: + // Only fire the mouseLeave event if it's actually leaving this + // widget. + Element to = event.getToElement(); + if (to != null && getElement().isOrHasChild(to)) { + return; + } + } + DomEvent.fireNativeEvent(event, handlerManager); } /** --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---