From 21ddf9210850a8be8590f6d1ee35b778b199f459 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Tue, 17 Feb 2004 21:49:24 +0000 Subject: [PATCH] 2004-02-17 Radek Doulik * glib/Value.cs: use g_value_set_pointer for GType.Pointer/IWrapper objects * glib/TypeConverter.cs: return GType.Pointer for Opaque objects which do not have GType property svn path=/trunk/gtk-sharp/; revision=23197 --- ChangeLog | 8 ++++++++ glib/TypeConverter.cs | 2 ++ glib/Value.cs | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/ChangeLog b/ChangeLog index 200f014f7..da90ce11d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-02-17 Radek Doulik + + * glib/Value.cs: use g_value_set_pointer for + GType.Pointer/IWrapper objects + + * glib/TypeConverter.cs: return GType.Pointer for Opaque objects + which do not have GType property + 2004-02-17 John Luke * gdk/Gdk.metadata: set Gdk.Window.Cursor null_ok diff --git a/glib/TypeConverter.cs b/glib/TypeConverter.cs index 9910e1990..1a0d27041 100644 --- a/glib/TypeConverter.cs +++ b/glib/TypeConverter.cs @@ -42,6 +42,8 @@ namespace GLibSharp { PropertyInfo pi = type.GetProperty ("GType", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy); if (pi != null) return (GType) pi.GetValue (null, null); + if (type.IsSubclassOf (typeof (GLib.Opaque))) + return GType.Pointer; if (type.IsValueType) return GType.Pointer; diff --git a/glib/Value.cs b/glib/Value.cs index a7460272a..8628e87e3 100755 --- a/glib/Value.cs +++ b/glib/Value.cs @@ -392,6 +392,10 @@ namespace GLib { else if (type == GType.Object) g_value_set_object (_val, ((GLib.Object) obj).Handle); else if (type == GType.Pointer) { + if (obj is IWrapper) { + g_value_set_pointer (_val, ((IWrapper)obj).Handle); + return; + } buf = Marshal.AllocHGlobal (Marshal.SizeOf (obj.GetType())); Marshal.StructureToPtr (obj, buf, false); g_value_set_pointer (_val, buf);