From f37e02b5b24683738832966327a7376af15a9798 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Tue, 25 May 2004 13:35:38 +0000 Subject: [PATCH] 2004-05-25 Mike Kestner * 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 --- ChangeLog | 6 ++++++ gtk/Container.custom | 19 +++++++++++-------- gtk/glue/container.c | 7 +++++++ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 860c49f1f..6d39cd334 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-05-25 Mike Kestner + + * 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 * generator/SignalHandler.cs : put back the ObjectGen hack diff --git a/gtk/Container.custom b/gtk/Container.custom index 017814647..741a7f760 100644 --- a/gtk/Container.custom +++ b/gtk/Container.custom @@ -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); } diff --git a/gtk/glue/container.c b/gtk/glue/container.c index f92146d23..5283e5da2 100644 --- a/gtk/glue/container.c +++ b/gtk/glue/container.c @@ -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); +}