[Turn on line numbering]arg event, update_on; var value, event, src, status; (> .perms(sender()) <); if (events.contains(update_on) && events[update_on].contains(event)) { // clean it up first.. (ignore status) [status, src] = events[update_on][event]; switch (src) { case 'location: (| loc.unhook_from_event(event) |); case 'this: (| .unhook_from_event(event) |); default: (| src.hook_into_event(event) |); } // now cleanup 'events' value = events[update_on].del(event); if (value) events = events.add(update_on, value); else events = events.del(update_on); if (!events) clear_var('events); }
// Created 17-Dec-1996 as a part of ColdCore, see: @help Credit