glib: install properties before class_init finishes

Recently glib started to warn about the future deprecation of adding
interfaces after class_init, which we fixed here [1].

Now, a similar warning has started to happen for the addition of
properties, example:

(Nereid:23225): GLib-GObject-WARNING **: Attempt to add property __gtksharp_33_Banshee_Widgets_TileView::gtk-sharp-managed-instance after class was initialised

So we need to add them before class_init finishes too, and this
change makes it this way.

[1] 9ff7ec8b2c
This commit is contained in:
Andrés G. Aragoneses 2013-10-21 00:37:29 +02:00
parent 8b998861e1
commit e9d5d1803d

View File

@ -206,7 +206,6 @@ namespace GLib {
AddGInterfaces (); AddGInterfaces ();
gtype.EnsureClass (); //calls class_init gtype.EnsureClass (); //calls class_init
AddProperties ();
ConnectDefaultHandlers (); ConnectDefaultHandlers ();
InvokeTypeInitializers (); InvokeTypeInitializers ();
AddInterfaceProperties (); AddInterfaceProperties ();
@ -242,6 +241,8 @@ namespace GLib {
foreach (GInterfaceAdapter adapter in adapters) { foreach (GInterfaceAdapter adapter in adapters) {
InitializeProperties (adapter, gobject_class_handle); InitializeProperties (adapter, gobject_class_handle);
} }
AddProperties (gobject_class_handle);
} }
private void InitializeProperties (GInterfaceAdapter adapter, IntPtr gobject_class_handle) private void InitializeProperties (GInterfaceAdapter adapter, IntPtr gobject_class_handle)
@ -288,12 +289,11 @@ namespace GLib {
HandlersOverriden = true; HandlersOverriden = true;
} }
void AddProperties () void AddProperties (IntPtr gobject_class_handle)
{ {
if (is_first_subclass) { if (is_first_subclass) {
IntPtr declaring_class = gtype.GetClassPtr ();
ParamSpec pspec = new ParamSpec ("gtk-sharp-managed-instance", "", "", GType.Pointer, ParamFlags.Writable | ParamFlags.ConstructOnly); ParamSpec pspec = new ParamSpec ("gtk-sharp-managed-instance", "", "", GType.Pointer, ParamFlags.Writable | ParamFlags.ConstructOnly);
g_object_class_install_property (declaring_class, idx, pspec.Handle); g_object_class_install_property (gobject_class_handle, idx, pspec.Handle);
idx++; idx++;
} }