# HG changeset patch # User Waqas Hussain # Date 1242471405 -18000 # Node ID edef0c10e07679286f6134055c1f745ec84a056c # Parent f7b6d583909288c4adb1f16fcb9d84c2ab6638b9 util.events: handler priorities diff -r f7b6d5839092 -r edef0c10e076 util/events.lua --- a/util/events.lua Sat May 16 05:28:04 2009 +0500 +++ b/util/events.lua Sat May 16 15:56:45 2009 +0500 @@ -2,6 +2,7 @@ local ipairs = ipairs; local pairs = pairs; local t_insert = table.insert; +local t_sort = table.sort; local select = select; module "events" @@ -19,14 +20,15 @@ for handler in pairs(_handlers) do t_insert(index, handler); end + t_sort(index, function(a, b) return _handlers[a] > _handlers[b]; end); end end; - local function add_handler(event, handler) + local function add_handler(event, handler, priority) local map = event_map[event]; if map then - map[handler] = true; + map[handler] = priority or 0; else - map = {[handler] = true}; + map = {[handler] = priority or 0}; event_map[event] = map; end _rebuild_index();