Просмотр исходного кода

2002-10-30 Gonzalo Paniagua Javier <[email protected]>

	* EventHandlerList.cs: fixed bug #29535.

svn path=/trunk/mcs/; revision=8679
Gonzalo Paniagua Javier 23 лет назад
Родитель
Сommit
fee8fdda16

+ 4 - 0
mcs/class/System/System.ComponentModel/ChangeLog

@@ -1,3 +1,7 @@
+2002-10-30  Gonzalo Paniagua Javier <[email protected]>
+
+	* EventHandlerList.cs: fixed bug #29535.
+
 2002-10-03  Dick Porter  <[email protected]>
 
 	* Win32Exception.cs: Added ETIMEDOUT

+ 12 - 7
mcs/class/System/System.ComponentModel/EventHandlerList.cs

@@ -3,6 +3,7 @@
 //
 // Author:
 //   Miguel de Icaza ([email protected])
+//   Gonzalo Paniagua Javier ([email protected])
 //
 // (C) Ximian, Inc.  http://www.ximian.com
 //
@@ -31,14 +32,11 @@ namespace System.ComponentModel {
 				if (table == null)
 					return null;
 
-				return (Delegate) table [key];
+				return table [key] as Delegate;
 			}
 
 			set {
-				if (table == null)
-					table = new Hashtable ();
-
-				table.Add (key, value);
+				AddHandler (key, value);
 			}
 		}
 
@@ -47,12 +45,19 @@ namespace System.ComponentModel {
 			if (table == null)
 				table = new Hashtable ();
 
-			table.Add (key, value);
+			Delegate prev = table [key] as Delegate;
+			prev = Delegate.Combine (prev, value);
+			table [key] = prev;
 		}
 
 		public void RemoveHandler (object key, Delegate value)
 		{
-			table.Remove (key);
+			if (table == null)
+				return;
+
+			Delegate prev = table [key] as Delegate;
+			prev = Delegate.Remove (prev, value);
+			table [key] = prev;
 		}
 
 		public void Dispose ()