@Override public void onBrowserEvent(Event event) { if (!this.isEnabled()) { event.stopPropagation(); return; } switch (DOM.eventGetType(event)) { case Event.ONTOUCHSTART: { onTouchStart(event); event.stopPropagation(); break; } case Event.ONTOUCHEND: { onTouchEnd(event); event.stopPropagation(); break; } case Event.ONTOUCHMOVE: { onTouchMove(event); event.stopPropagation(); break; } case Event.ONMOUSEUP: { Log.debug("touch up"); // because Event.ONCLICK always came twice on desktop browsers oO onClick(event); event.stopPropagation(); break; } case Event.ONMOUSEDOWN: { event.stopPropagation(); break; } default: { // Let parent handle event if not one of the above (?) try { super.onBrowserEvent(event); } catch (Throwable t) { Log.debug(DOM.eventGetType(event) + "event failed"); } } } }
private void onClick(Event event) { event.stopPropagation(); event.preventDefault(); if (touchHandled) { // if the touch is already handled, we are on a device that supports // touch (so you aren't in the desktop browser) touchHandled = false; // reset for next press clickHandled = true; // ignore future ClickEvents } else if (!clickHandled) { // Press not handled yet fireFastClickEvent(); } super.onBrowserEvent(event); }