* atk/Object.custom:

* atk/glue/object.c:
Temporary workaround for infinite recursion issue.

svn path=/trunk/gtk-sharp/; revision=105329
This commit is contained in:
Andrés G. Aragoneses 2008-06-09 16:12:03 +00:00
parent f006f28918
commit bd2330adf2
3 changed files with 14 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2008-06-09 Andrés G. Aragoneses <aaragoneses@novell.com>
* atk/Object.custom:
* atk/glue/object.c:
Temporary workaround for infinite recursion issue.
2008-06-06 Andrés G. Aragoneses <aaragoneses@novell.com>
* glib/glue/thread.c: Fix a warning.

View File

@ -110,7 +110,7 @@
static extern void atksharp_object_override_ref_state_set (IntPtr type, RefStateSetDelegate cb);
[DllImport("atksharpglue-2")]
static extern IntPtr atksharp_object_base_ref_state_set (IntPtr atk_obj);
static extern IntPtr atksharp_object_base_ref_state_set (IntPtr atk_obj, IntPtr gtype);
[GLib.CDeclCallback]
delegate IntPtr RefStateSetDelegate (IntPtr raw);
@ -142,7 +142,8 @@
[GLib.DefaultSignalHandler (Type=typeof(Atk.Object), ConnectionMethod="OverrideRefStateSet")]
protected virtual Atk.StateSet OnRefStateSet ()
{
IntPtr raw = atksharp_object_base_ref_state_set (Handle);
IntPtr raw = atksharp_object_base_ref_state_set (Handle, GLib.GType.FromName("AtkObject").Val);
return GLib.Object.GetObject (raw, true) as StateSet;
}

View File

@ -28,7 +28,7 @@ void atksharp_object_override_ref_child (GType gtype, gpointer cb);
void atksharp_object_override_ref_state_set (GType gtype, gpointer cb);
AtkStateSet* atksharp_object_base_ref_state_set (AtkObject *base);
AtkStateSet* atksharp_object_base_ref_state_set (AtkObject *base, GType gtype);
void
@ -59,9 +59,11 @@ atksharp_object_override_ref_state_set (GType gtype, gpointer cb)
}
AtkStateSet*
atksharp_object_base_ref_state_set (AtkObject *atk_obj)
atksharp_object_base_ref_state_set (AtkObject *atk_obj, GType gtype)
{
AtkObjectClass *parent = g_type_class_peek_parent (G_OBJECT_GET_CLASS (atk_obj));
//FIXME: find a cleaner way of doing this (it comes from a managed call to GType.FromName() :
AtkObjectClass *parent = g_type_class_peek (gtype);
if (parent->ref_state_set)
return (*parent->ref_state_set) (atk_obj);
return NULL;