glib/Object.cs: Rewrote the way the wrapper is kept track of.
svn path=/trunk/gtk-sharp/; revision=921
This commit is contained in:
parent
3432779d13
commit
5056f3e4b3
2 changed files with 6 additions and 19 deletions
|
@ -1,6 +1,7 @@
|
|||
2001-09-21
|
||||
|
||||
* Signal system totally reworked. It should be stable now.
|
||||
* glib/Object.cs: Rewrote the way the wrapper is kept track of.
|
||||
|
||||
2001-09-20
|
||||
|
||||
|
|
|
@ -13,18 +13,11 @@ namespace GLib {
|
|||
|
||||
public class Object {
|
||||
protected static Hashtable Objects = new Hashtable();
|
||||
protected const String GOBJECTKEY = "gobject#-object";
|
||||
public static Object GetObject(IntPtr o)
|
||||
{
|
||||
IntPtr key = g_object_get_data (o, GOBJECTKEY);
|
||||
Object obj;
|
||||
if((int)key != 0)
|
||||
{
|
||||
obj = (Object)Objects[(int)key];
|
||||
if (obj != null) return obj;
|
||||
}
|
||||
obj = new Object(o); //FIXME: Cast up when we know how.
|
||||
return obj;
|
||||
Object obj = (Object)Objects[(int)o];
|
||||
if (obj != null) return obj;
|
||||
return new Object(o); //FIXME: Cast up when we know how.
|
||||
}
|
||||
|
||||
public Object(IntPtr o)
|
||||
|
@ -40,15 +33,8 @@ namespace GLib {
|
|||
return _obj;
|
||||
}
|
||||
set {
|
||||
IntPtr key = g_object_get_data (value, GOBJECTKEY);
|
||||
if ((int)key != 0)
|
||||
{
|
||||
Object obj = (Object)Objects[(int)key];
|
||||
if (obj != null) Objects.Remove((int)key);
|
||||
}
|
||||
key = new IntPtr(this.GetHashCode());
|
||||
Objects[(int)key] = this;
|
||||
g_object_set_data (value, GOBJECTKEY, key);
|
||||
if ((Object)Objects[(int)value] != null) Objects.Remove((int)value);
|
||||
Objects[(int)value] = this;
|
||||
_obj = value;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue