2004-05-25 Mike Kestner <mkestner@ximian.com>

* gtk/Container.custom : use glue to invoke the GtkCallback in
	Forall.
	* gtk/glue/container.c : add gtksharp_container_invoke_gtk_callback.

svn path=/trunk/gtk-sharp/; revision=28047
This commit is contained in:
Mike Kestner 2004-05-25 13:35:38 +00:00
parent ca91d3c85f
commit f37e02b5b2
3 changed files with 24 additions and 8 deletions

View file

@ -1,3 +1,9 @@
2004-05-25 Mike Kestner <mkestner@ximian.com>
* gtk/Container.custom : use glue to invoke the GtkCallback in
Forall.
* gtk/glue/container.c : add gtksharp_container_invoke_gtk_callback.
2004-05-23 Mike Kestner <mkestner@ximian.com>
* generator/SignalHandler.cs : put back the ObjectGen hack

View file

@ -50,20 +50,23 @@ public Widget[] FocusChain {
}
[DllImport("gtksharpglue")]
static extern void gtksharp_container_base_forall (IntPtr handle, bool include_internals, GtkSharp.CallbackNative cb, IntPtr data);
static extern void gtksharp_container_base_forall (IntPtr handle, bool include_internals, IntPtr cb, IntPtr data);
[DllImport("gtksharpglue")]
static extern void gtksharp_container_override_forall (GLib.GType gtype, ForallDelegate cb);
delegate void ForallDelegate (IntPtr container, bool include_internals, GtkSharp.CallbackNative cb, IntPtr data);
[DllImport("gtksharpglue")]
static extern void gtksharp_container_invoke_gtk_callback (IntPtr cb, IntPtr handle, IntPtr data);
delegate void ForallDelegate (IntPtr container, bool include_internals, IntPtr cb, IntPtr data);
static ForallDelegate ForallCallback;
public struct CallbackInvoker {
GtkSharp.CallbackNative cb;
IntPtr cb;
IntPtr data;
internal CallbackInvoker (GtkSharp.CallbackNative cb, IntPtr data)
internal CallbackInvoker (IntPtr cb, IntPtr data)
{
this.cb = cb;
this.data = data;
@ -75,7 +78,7 @@ public struct CallbackInvoker {
}
}
internal GtkSharp.CallbackNative Delegate {
internal IntPtr Callback {
get {
return cb;
}
@ -83,11 +86,11 @@ public struct CallbackInvoker {
public void Invoke (Widget w)
{
cb (w.Handle, data);
gtksharp_container_invoke_gtk_callback (cb, w.Handle, data);
}
}
static void Forall_cb (IntPtr container, bool include_internals, GtkSharp.CallbackNative cb, IntPtr data)
static void Forall_cb (IntPtr container, bool include_internals, IntPtr cb, IntPtr data)
{
Container obj = GLib.Object.GetObject (container, false) as Container;
CallbackInvoker invoker = new CallbackInvoker (cb, data);
@ -103,6 +106,6 @@ protected static void OverrideForall (GLib.GType gtype)
protected virtual void OnForall (bool include_internals, CallbackInvoker invoker)
{
gtksharp_container_base_forall (Handle, include_internals, invoker.Delegate, invoker.Data);
gtksharp_container_base_forall (Handle, include_internals, invoker.Callback, invoker.Data);
}

View file

@ -28,3 +28,10 @@ gtksharp_container_override_forall (GType gtype, gpointer cb)
((GtkContainerClass *) klass)->forall = cb;
}
void gtksharp_container_invoke_gtk_callback (GtkCallback cb, GtkWidget *widget, gpointer data);
void
gtksharp_container_invoke_gtk_callback (GtkCallback cb, GtkWidget *widget, gpointer data)
{
cb (widget, data);
}