Author: hisham
Date: 2005-05-24 19:36:36 -0400 (Tue, 24 May 2005)
New Revision: 44950

Modified:
   trunk/efl-sharp/libs/efl-sharp/src/bin/efl_sharp_test.cs
   trunk/efl-sharp/libs/efl-sharp/src/lib/evas/Evas.cs
Log:
Evas events overhaul part 2. Still need to add remove / cleanup methods

Modified: trunk/efl-sharp/libs/efl-sharp/src/bin/efl_sharp_test.cs
===================================================================
--- trunk/efl-sharp/libs/efl-sharp/src/bin/efl_sharp_test.cs    2005-05-24 
23:34:21 UTC (rev 44949)
+++ trunk/efl-sharp/libs/efl-sharp/src/bin/efl_sharp_test.cs    2005-05-24 
23:36:36 UTC (rev 44950)
@@ -6,46 +6,31 @@
 {
 
    private static EcoreEvas EE = new EcoreEvas();
-
    
-   public static void EdjeMouseDown(IntPtr data, IntPtr evas, IntPtr obj, 
IntPtr EventInfo)
+   public static void EdjeMouseDownEventCallback(object o, EvasEventMouseDown 
e)
      {
-       System.Console.WriteLine("Mouse down in edje!");
+       System.Console.WriteLine("Mouse down in edje!");        
        
-       EvasEventMouseDown e = new EvasEventMouseDown(EventInfo);
-       
        System.Console.WriteLine("Pressed button " + e.button + 
                                 " on coord " + e.canvas.x + " " 
                                 + e.canvas.y);
        
      }
    
-   public static void EdjeMouseIn(IntPtr data, IntPtr evas, IntPtr obj, IntPtr 
EventInfo)
+   public static void EdjeMouseInEventCallback(object o, EvasEventMouseIn e)   
  
      {
        System.Console.WriteLine("Mouse in on edje!");
      }
    
-   public static void EdjeMouseOut(IntPtr data, IntPtr evas, IntPtr obj, 
IntPtr EventInfo)
+   public static void EdjeMouseOutEventCallback(object o, EvasEventMouseOut e) 
    
      {
        System.Console.WriteLine("Mouse out on edje!"); 
      }   
-   
-   public static void EdjeKeyDown(IntPtr data, IntPtr evas, IntPtr obj, IntPtr 
EventInfo)
-     { 
-       System.Console.WriteLine("Key down on edje! Showing / hiding image!");
-              
-       Edje edje = new Edje(obj);
-       
-       EvasEventKeyDown e = new EvasEventKeyDown(EventInfo);
-          
-       System.Console.WriteLine("pressed " + e.key);
-       
-       Evas.Image image = new Evas.Image();
-       image = (Evas.Image)edje.GetObject(data);
-       if(image.Visible)
-         image.Hide();
-       else
-         image.Show();
+      
+   public static void EdjeKeyDownEventCallback(object o, EvasEventKeyDown e)
+     {
+       Edje edje = (Edje)o;               
+       System.Console.WriteLine("pressed " + e.key);   
      }
    
    public static int app_signal_exit(IntPtr data, int type, IntPtr ev)
@@ -66,7 +51,7 @@
        edje = (Edje)EE.DataGet("edje");
        EE.GeometryGet(out x, out y, out w, out h);
        edje.Resize(w, h);
-     }
+     }      
    
    public static void Main(string [] args)
      { 
@@ -93,10 +78,10 @@
        if(edje.FileSet(DataConfig.DATADIR + 
"/data/flower.edj","desktop/background") == 0)
          System.Console.WriteLine("Can't load edje object!");
        edje.Focus = 1;
-       edje.EventCallbackAdd(Evas.Object.EVAS_CALLBACK_MOUSE_DOWN, 
EdjeMouseDown, null);
-       edje.EventCallbackAdd(Evas.Object.EVAS_CALLBACK_MOUSE_IN, EdjeMouseIn, 
null);
-       edje.EventCallbackAdd(Evas.Object.EVAS_CALLBACK_MOUSE_OUT, 
EdjeMouseOut, null);
-       edje.EventCallbackAdd(Evas.Object.EVAS_CALLBACK_KEY_DOWN, EdjeKeyDown, 
image);
+       edje.MouseDownEvent  += EdjeMouseDownEventCallback;
+       edje.MouseInEvent    += EdjeMouseInEventCallback;
+       edje.MouseOutEvent   += EdjeMouseOutEventCallback;
+       edje.KeyDownEvent    += EdjeKeyDownEventCallback;
        edje.Move(0, 0);
        edje.Resize(640, 480);
        edje.Show();
@@ -116,8 +101,7 @@
        textblock.Resize(300, 100);
        textblock.Raise();
        textblock.Show();
-       
-       
+               
        Ecore.LoopBegin();              
      }
 }

Modified: trunk/efl-sharp/libs/efl-sharp/src/lib/evas/Evas.cs
===================================================================
--- trunk/efl-sharp/libs/efl-sharp/src/lib/evas/Evas.cs 2005-05-24 23:34:21 UTC 
(rev 44949)
+++ trunk/efl-sharp/libs/efl-sharp/src/lib/evas/Evas.cs 2005-05-24 23:36:36 UTC 
(rev 44950)
@@ -544,7 +544,6 @@
       public IntPtr data;
       public IntPtr modifiers; // handle this later;
       public IntPtr locks; // handle this later;
-      public int flags;
             
       public EvasEventMouseIn()
        {}
@@ -571,7 +570,6 @@
       public IntPtr data;
       public IntPtr modifiers; // handle this later;
       public IntPtr locks; // handle this later;
-      public int flags;
             
       public EvasEventMouseOut()
        {}
@@ -588,6 +586,41 @@
           data = e.data;
           locks = e.locks;
        }
+   }
+   
+   public struct EvasEventMouseMovePos {
+      public EvasEventMouseOutput output;
+      public EvasEventMouseCanvas canvas;
+   }
+   
+   [StructLayout(LayoutKind.Sequential)]
+   public class EvasEventMouseMove {
+      public int buttons;
+      public EvasEventMouseMovePos cur;
+      public EvasEventMouseMovePos prev;      
+      public IntPtr data;
+      public IntPtr modifiers; // handle this later;
+      public IntPtr locks; // handle this later;
+            
+      public EvasEventMouseMove()
+       {}
+      
+      public EvasEventMouseMove(IntPtr EventInfo)
+       {
+          EvasEventMouseMove e = new EvasEventMouseMove();
+          e = (EvasEventMouseMove)Marshal.PtrToStructure(EventInfo, 
typeof(EvasEventMouseMove));
+          buttons = e.buttons;
+          cur.output.x = e.cur.output.x;
+          cur.output.y = e.cur.output.y;          
+          cur.canvas.x = e.cur.canvas.x;
+          cur.canvas.y = e.cur.canvas.y;
+          prev.output.x = e.prev.output.x;
+          prev.output.y = e.prev.output.y;        
+          prev.canvas.x = e.prev.canvas.x;
+          prev.canvas.y = e.prev.canvas.y;        
+          data = e.data;
+          locks = e.locks;
+       }
    }   
 
    [StructLayout(LayoutKind.Sequential)]
@@ -808,18 +841,477 @@
             set { evas_object_focus_set(Raw, value); }
          }             
        
+               
+       [DllImport(Library)]
+       private extern static void evas_object_event_callback_add(IntPtr obj, 
int type, EvasPrivateEventHandler func, IntPtr data);
        
-       public delegate void evas_object_event_callback(IntPtr data, IntPtr 
evas, IntPtr obj, IntPtr EventInfo);
-       [DllImport(Library)]
-       private extern static void evas_object_event_callback_add(IntPtr obj, 
int type, evas_object_event_callback func, IntPtr data);
-       public void EventCallbackAdd(int type, evas_object_event_callback func, 
object data)
+       /* Private event handler type */
+       private delegate void EvasPrivateEventHandler(IntPtr data, IntPtr evas, 
IntPtr obj, IntPtr EventInfo);  
+       
+       /* event handling code for mouse in event */
+       /* user's event handler is saved here */
+       EvasEventMouseInHandler mouse_in_user_handler;
+       
+       /* User event handler type */
+       public delegate void EvasEventMouseInHandler(object obj, 
EvasEventMouseIn info);        
+       
+       private void mouse_in_private_handler(IntPtr data, IntPtr evas, IntPtr 
obj, IntPtr EventInfo)
+         {
+            mouse_in_user_handler(this, new EvasEventMouseIn(EventInfo));
+         }
+                                               
+       public event EvasEventMouseInHandler MouseInEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(mouse_in_private_handler);
+                 mouse_in_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_MOUSE_IN, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }
+       
+       /* event handling code for mouse out event */
+                       
+       /* User event handler type */
+       public delegate void EvasEventMouseOutHandler(object obj, 
EvasEventMouseOut info);
+       
+       /* user's event handler is saved here */
+       EvasEventMouseOutHandler mouse_out_user_handler;        
+       
+       private void mouse_out_private_handler(IntPtr data, IntPtr evas, IntPtr 
obj, IntPtr EventInfo)
+         {
+            mouse_out_user_handler(this, new EvasEventMouseOut(EventInfo));
+         }
+                                               
+       public event EvasEventMouseOutHandler MouseOutEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(mouse_out_private_handler);
+                 mouse_out_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_MOUSE_OUT, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }
+       
+       /* event handling code for mouse down event */
+                       
+       /* User event handler type */
+       public delegate void EvasEventMouseDownHandler(object obj, 
EvasEventMouseDown info);
+       
+       /* user's event handler is saved here */
+       EvasEventMouseDownHandler mouse_down_user_handler;      
+       
+       private void mouse_down_private_handler(IntPtr data, IntPtr evas, 
IntPtr obj, IntPtr EventInfo)
+         {
+            mouse_down_user_handler(this, new EvasEventMouseDown(EventInfo));
+         }
+                                               
+       public event EvasEventMouseDownHandler MouseDownEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(mouse_down_private_handler);
+                 mouse_down_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_MOUSE_DOWN, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for mouse up event */
+                       
+       /* User event handler type */
+       public delegate void EvasEventMouseUpHandler(object obj, 
EvasEventMouseUp info);
+       
+       /* user's event handler is saved here */
+       EvasEventMouseUpHandler mouse_up_user_handler;  
+       
+       private void mouse_up_private_handler(IntPtr data, IntPtr evas, IntPtr 
obj, IntPtr EventInfo)
+         {
+            mouse_up_user_handler(this, new EvasEventMouseUp(EventInfo));
+         }
+                                               
+       public event EvasEventMouseUpHandler MouseUpEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(mouse_up_private_handler);
+                 mouse_up_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_MOUSE_UP, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for mouse move event */
+                       
+       /* User event handler type */
+       public delegate void EvasEventMouseMoveHandler(object obj, 
EvasEventMouseMove info);
+       
+       /* user's event handler is saved here */
+       EvasEventMouseMoveHandler mouse_move_user_handler;      
+       
+       private void mouse_move_private_handler(IntPtr data, IntPtr evas, 
IntPtr obj, IntPtr EventInfo)
+         {
+            mouse_move_user_handler(this, new EvasEventMouseMove(EventInfo));
+         }
+                                               
+       public event EvasEventMouseMoveHandler MouseMoveEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(mouse_move_private_handler);
+                 mouse_move_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_MOUSE_MOVE, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for mouse wheel event */                 
+       /* User event handler type */
+       public delegate void EvasEventMouseWheelHandler(object obj, 
EvasEventMouseWheel info);
+       
+       /* user's event handler is saved here */
+       EvasEventMouseWheelHandler mouse_wheel_user_handler;    
+       
+       private void mouse_wheel_private_handler(IntPtr data, IntPtr evas, 
IntPtr obj, IntPtr EventInfo)
+         {
+            mouse_wheel_user_handler(this, new EvasEventMouseWheel(EventInfo));
+         }
+                                               
+       public event EvasEventMouseWheelHandler MouseWheelEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(mouse_wheel_private_handler);
+                 mouse_wheel_user_handler = value;
+                 evas_object_event_callback_add(Raw, 
EVAS_CALLBACK_MOUSE_WHEEL, tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for free event */                        
+       /* User event handler type */
+       public delegate void EvasEventFreeHandler(object obj, /*EvasEventFree*/ 
object info);
+       
+       /* user's event handler is saved here */
+       EvasEventFreeHandler free_user_handler; 
+       
+       private void free_private_handler(IntPtr data, IntPtr evas, IntPtr obj, 
IntPtr EventInfo)
+         {
+            free_user_handler(this, new object() /*EvasEventFree(EventInfo)*/);
+         }
+                                               
+       public event EvasEventFreeHandler FreeEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(free_private_handler);
+                 free_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_FREE, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for mouse in event */                    
+       /* User event handler type */
+       public delegate void EvasEventFocusInHandler(object obj, 
/*EvasEventFocusIn*/ object info);
+       
+       /* user's event handler is saved here */
+       EvasEventFocusInHandler focus_in_user_handler;  
+       
+       private void focus_in_private_handler(IntPtr data, IntPtr evas, IntPtr 
obj, IntPtr EventInfo)
+         {
+            focus_in_user_handler(this, new object() 
/*EvasEventFocusIn(EventInfo)*/);
+         }
+                                               
+       public event EvasEventFocusInHandler FocusInEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(focus_in_private_handler);
+                 focus_in_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_FOCUS_IN, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for mouse in event */                    
+       /* User event handler type */
+       public delegate void EvasEventFocusOutHandler(object obj, 
/*EvasEventFocusOut*/ object info);
+       
+       /* user's event handler is saved here */
+       EvasEventFocusOutHandler focus_out_user_handler;        
+       
+       private void focus_out_private_handler(IntPtr data, IntPtr evas, IntPtr 
obj, IntPtr EventInfo)
+         {
+            focus_out_user_handler(this, new object() 
/*EvasEventFocusOut(EventInfo)*/);
+         }
+                                               
+       public event EvasEventFocusOutHandler FocusOutEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(focus_out_private_handler);
+                 focus_out_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_FOCUS_OUT, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }
+       
+       /* event handling code for show event */
+       /* User event handler type */
+       public delegate void EvasEventShowHandler(object obj, /*EvasEventShow*/ 
object info);
+       
+       /* user's event handler is saved here */
+       EvasEventShowHandler show_user_handler; 
+       
+       private void show_private_handler(IntPtr data, IntPtr evas, IntPtr obj, 
IntPtr EventInfo)
+         {
+            show_user_handler(this, new object() /*EvasEventShow(EventInfo)*/);
+         }
+                                               
+       public event EvasEventShowHandler ShowEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(show_private_handler);
+                 show_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_SHOW, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for hide event */
+       /* User event handler type */
+       public delegate void EvasEventHideHandler(object obj, /*EvasEventHide*/ 
object info);
+       
+       /* user's event handler is saved here */
+       EvasEventHideHandler hide_user_handler; 
+       
+       private void hide_private_handler(IntPtr data, IntPtr evas, IntPtr obj, 
IntPtr EventInfo)
+         {
+            hide_user_handler(this, new object() /*EvasEventHide(EventInfo)*/);
+         }
+                                               
+       public event EvasEventHideHandler HideEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(hide_private_handler);
+                 hide_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_HIDE, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       
+       /* event handling code for mouse in event */                    
+       /* User event handler type */
+       public delegate void EvasEventMoveHandler(object obj, /*EvasEventMove*/ 
object info);
+       
+       /* user's event handler is saved here */
+       EvasEventMoveHandler move_user_handler; 
+       
+       private void move_private_handler(IntPtr data, IntPtr evas, IntPtr obj, 
IntPtr EventInfo)
+         {
+            move_user_handler(this, new object() /*EvasEventMove(EventInfo)*/);
+         }
+                                               
+       public event EvasEventMoveHandler MoveEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(move_private_handler);
+                 move_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_MOVE, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for resize event */                      
+       /* User event handler type */
+       public delegate void EvasEventResizeHandler(object obj, 
/*EvasEventResize*/ object info);
+       
+       /* user's event handler is saved here */
+       EvasEventResizeHandler resize_user_handler;     
+       
+       private void resize_private_handler(IntPtr data, IntPtr evas, IntPtr 
obj, IntPtr EventInfo)
+         {
+            resize_user_handler(this, new object() 
/*EvasEventResize(EventInfo)*/);
+         }
+                                               
+       public event EvasEventResizeHandler ResizeEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(resize_private_handler);
+                 resize_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_FOCUS_OUT, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for restack event */                     
+       /* User event handler type */
+       public delegate void EvasEventRestackHandler(object obj, 
/*EvasEventRestack*/ object info);
+       
+       /* user's event handler is saved here */
+       EvasEventRestackHandler restack_user_handler;   
+       
+       private void restack_private_handler(IntPtr data, IntPtr evas, IntPtr 
obj, IntPtr EventInfo)
+         {
+            restack_user_handler(this, new object() 
/*EvasEventRestack(EventInfo)*/);
+         }
+                                               
+       public event EvasEventRestackHandler RestackEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(restack_private_handler);
+                 restack_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_RESTACK, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }     
+       
+       /* event handling code for key down event */    
+        /* User event handler type */
+       public delegate void EvasEventKeyDownHandler(object obj, 
EvasEventKeyDown info);        
+       
+       /* user's event handler is saved here */
+       EvasEventKeyDownHandler key_down_user_handler;
+                       
+       private void key_down_private_handler(IntPtr data, IntPtr evas, IntPtr 
obj, IntPtr EventInfo)
+         {
+            key_down_user_handler(this, new EvasEventKeyDown(EventInfo));
+         }
+                                               
+       public event EvasEventKeyDownHandler KeyDownEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(key_down_private_handler);
+                 key_down_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_KEY_DOWN, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }
+       
+       /* event handling code for key up event */
+       
+        /* User event handler type */
+       public delegate void EvasEventKeyUpHandler(object obj, EvasEventKeyUp 
info);
+       
+       
+       /* user's event handler is saved here */
+       EvasEventKeyUpHandler key_up_user_handler;
+       private void key_up_private_handler(IntPtr data, IntPtr evas, IntPtr 
obj, IntPtr EventInfo)
+         {
+            key_up_user_handler(this, new EvasEventKeyUp(EventInfo));
+         }
+                                               
+       public event EvasEventKeyUpHandler KeyUpEvent
+         {
+            add
+              {
+                 EvasPrivateEventHandler tmp_handler = new 
EvasPrivateEventHandler(key_up_private_handler);
+                 key_up_user_handler = value;
+                 evas_object_event_callback_add(Raw, EVAS_CALLBACK_KEY_UP, 
tmp_handler, new IntPtr());
+                 System.GC.KeepAlive(tmp_handler);
+              }
+            
+            remove
+              {
+                 
+              }
+         }                             
+                                       
+       /* this function is stale, remove it later on */
+       /*
+       public void EventCallbackAdd(int type, EvasPrivateEventHandler func, 
object data)
          {                  
             IntPtr p = new IntPtr(dataptrs.Count);
             callbacks[callbacks.Count + 1] = func;
             dataptrs[p] = data;
             evas_object_event_callback_add(Raw, type, func, p);
          }
-                       
+        */ 
        public Canvas evas
          {
             get { return canvas; }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to