def fireMouseEvent(listeners, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(sender.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(sender.getElement()) etype = DOM.eventGetType(event) if etype == "mousedown": for listener in listeners: listener.onMouseDown(sender, x, y) return True elif etype == "mouseup": for listener in listeners: listener.onMouseUp(sender, x, y) return True elif etype == "mousemove": for listener in listeners: listener.onMouseMove(sender, x, y) return True elif etype == "mouseover": from_element = DOM.eventGetFromElement(event) if not DOM.isOrHasChild(sender.getElement(), from_element): for listener in listeners: listener.onMouseEnter(sender) return True elif etype == "mouseout": to_element = DOM.eventGetToElement(event) if not DOM.isOrHasChild(sender.getElement(), to_element): for listener in listeners: listener.onMouseLeave(sender) return True return False