Author: nigel
Date: 2005-05-25 19:25:19 -0400 (Wed, 25 May 2005)
New Revision: 45020
Modified:
trunk/efl-sharp/libs/efl-sharp/src/bin/ewl_sharp_test.cs
trunk/efl-sharp/libs/efl-sharp/src/lib/ewl/ewl_window.cs
Log:
ewl events
Modified: trunk/efl-sharp/libs/efl-sharp/src/bin/ewl_sharp_test.cs
===================================================================
--- trunk/efl-sharp/libs/efl-sharp/src/bin/ewl_sharp_test.cs 2005-05-25
23:16:30 UTC (rev 45019)
+++ trunk/efl-sharp/libs/efl-sharp/src/bin/ewl_sharp_test.cs 2005-05-25
23:25:19 UTC (rev 45020)
@@ -14,9 +14,7 @@
win.Name = "EWL_WINDOW";
win.Class = "EWLWindow";
win.SizeRequest(200, 100);
- //int i = EventType.VALUE_CHANGED;
- //Console.WriteLine(i);
- win.DeleteEvent += new DeleteEventHandler(winDelete);
+ win.DeleteEvent += winDelete;
win.Show();
@@ -26,7 +24,7 @@
//lbl.Style = "soft_shadow";
//lbl.SizeRequest(win.Width, win.Height);
//lbl.Disable();
- lbl.ChangedEvent += new EwlEventHandler(txtChanged);
+ //lbl.ChangedEvent += new EwlEventHandler(txtChanged);
lbl.Text = "Enlightenment";
Console.WriteLine(lbl.Text);
@@ -54,7 +52,7 @@
}
- void winDelete(IntPtr w, IntPtr evnt, IntPtr data) {
+ void winDelete(object o, DeleteEventInfo info) {
win.Destroy();
Application.Quit();
Modified: trunk/efl-sharp/libs/efl-sharp/src/lib/ewl/ewl_window.cs
===================================================================
--- trunk/efl-sharp/libs/efl-sharp/src/lib/ewl/ewl_window.cs 2005-05-25
23:16:30 UTC (rev 45019)
+++ trunk/efl-sharp/libs/efl-sharp/src/lib/ewl/ewl_window.cs 2005-05-25
23:25:19 UTC (rev 45020)
@@ -3,31 +3,54 @@
using System;
using System.Runtime.InteropServices;
- public delegate void DeleteEventHandler(IntPtr w, IntPtr evnt, IntPtr
data);
+ [StructLayout(LayoutKind.Sequential)]
+ public class DeleteEventInfo
+ {
+ public DeleteEventInfo()
+ { }
+
+ public DeleteEventInfo(IntPtr EventInfo)
+ { }
+ };
public class Window : Embed {
HandleRef objRaw;
const string Library = "ewl";
- [DllImport(Library)]
- static extern int ewl_callback_append(IntPtr wid, int i,
DeleteEventHandler de, IntPtr data);
+ DeleteEventHandler userHandler;
+ privDeleteEventHandler tmp_handler;
[DllImport(Library)]
- static extern void ewl_callback_del_with_data(IntPtr wid, int
i, DeleteEventHandler de, IntPtr data);
+ static extern int ewl_callback_append(IntPtr wid, int i,
privDeleteEventHandler de, IntPtr data);
+ [DllImport(Library)]
+ static extern void ewl_callback_del_with_data(IntPtr wid, int
i, privDeleteEventHandler de, IntPtr data);
+ public delegate void DeleteEventHandler(object o,
DeleteEventInfo info);
+ private delegate void privDeleteEventHandler(IntPtr w, IntPtr
info, IntPtr data);
+
+ private void transferDeleteEvent(IntPtr w, IntPtr info, IntPtr
data)
+ {
+
+ userHandler(this, new DeleteEventInfo(info));
+
+ }
+
public event DeleteEventHandler DeleteEvent {
add {
- ewl_callback_append(Raw, 6, value, new
IntPtr());
- System.GC.KeepAlive(value);
+ tmp_handler = new
privDeleteEventHandler(transferDeleteEvent);
+ userHandler = value;
+ ewl_callback_append(Raw, 6, tmp_handler, new
IntPtr());
+ System.GC.KeepAlive(tmp_handler);
}
remove {
- ewl_callback_del_with_data(Raw, 6, value, new
IntPtr());
+ ewl_callback_del_with_data(Raw, 6, tmp_handler,
new IntPtr());
+ userHandler = null;
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches