# HG changeset patch
# User Waqas Hussain <waqas20@gmail.com>
# 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();