public boolean removeEventListener(String evtnm, EventListener<? extends Event> listener) { if (evtnm == null || listener == null) throw new IllegalArgumentException("null"); if (_auxinf != null && _auxinf.listeners != null) { final boolean oldasap = Events.isListened(this, evtnm, true); final List<EventListenerInfo> lis = _auxinf.listeners.get(evtnm); if (lis != null) { for (Iterator<EventListenerInfo> it = lis.iterator(); it.hasNext();) { final EventListenerInfo li = it.next(); if (li.listener.equals(listener)) { it.remove(); if (lis.isEmpty()) _auxinf.listeners.remove(evtnm); final Desktop desktop = getDesktop(); if (desktop != null) { onListenerChange(desktop, false); if (getClientEvents().containsKey(evtnm)) { if (lis.isEmpty() && !Events.isListened(this, evtnm, false)) smartUpdate("$" + evtnm, (Object) null); //no listener at all else if (oldasap != Events.isListened(this, evtnm, true)) smartUpdate("$" + evtnm, !oldasap); } } return true; } } } } return false; }
} else if (Events.ON_VISIBILITY_CHANGE.equals(evtnm)) { desktop.setAttribute("org.zkoss.desktop.visibilitychange.enabled", true); } else if (getClientEvents().containsKey(evtnm)) { final boolean asap = Events.isListened(this, evtnm, true); if (lis.size() == 1 || oldasap != asap)
for (Map.Entry<String, Integer> me : getClientEvents().entrySet()) { final String evtnm = me.getKey(); final int flags = me.getValue().intValue();