derive GtkObject from GUnowned if possible. gtk_object_class_init():
Thu Dec 22 17:30:59 2005 Tim Janik <timj@gtk.org> * gtk/gtkobject.c: derive GtkObject from GUnowned if possible. gtk_object_class_init(): install a floating flag handler with libgobject, so for GtkObjects the flag is stored as GTK_FLOATING in the ->flags member. * configure.in: depend on GLib-2.8.5.
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
Thu Dec 22 17:30:59 2005 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkobject.c: derive GtkObject from GUnowned if possible.
|
||||
gtk_object_class_init(): install a floating flag handler with
|
||||
libgobject, so for GtkObjects the flag is stored as GTK_FLOATING
|
||||
in the ->flags member.
|
||||
|
||||
* configure.in: depend on GLib-2.8.5.
|
||||
|
||||
2005-12-21 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtkiconview.c (adjust_wrap_width): Adjust the
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
Thu Dec 22 17:30:59 2005 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkobject.c: derive GtkObject from GUnowned if possible.
|
||||
gtk_object_class_init(): install a floating flag handler with
|
||||
libgobject, so for GtkObjects the flag is stored as GTK_FLOATING
|
||||
in the ->flags member.
|
||||
|
||||
* configure.in: depend on GLib-2.8.5.
|
||||
|
||||
2005-12-21 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtkiconview.c (adjust_wrap_width): Adjust the
|
||||
|
||||
@@ -31,7 +31,7 @@ m4_define([gtk_api_version], [2.0])
|
||||
m4_define([gtk_binary_version], [2.4.0])
|
||||
|
||||
# required versions of other packages
|
||||
m4_define([glib_required_version], [2.7.1])
|
||||
m4_define([glib_required_version], [2.8.5])
|
||||
m4_define([pango_required_version], [1.9.0])
|
||||
m4_define([atk_required_version], [1.0.1])
|
||||
m4_define([cairo_required_version], [0.9.2])
|
||||
|
||||
@@ -95,7 +95,7 @@ gtk_object_get_type (void)
|
||||
NULL, /* value_table */
|
||||
};
|
||||
|
||||
object_type = g_type_register_static (G_TYPE_OBJECT, "GtkObject",
|
||||
object_type = g_type_register_static (g_object_compat_control (1, 0), "GtkObject",
|
||||
&object_info, G_TYPE_FLAG_ABSTRACT);
|
||||
}
|
||||
|
||||
@@ -313,6 +313,29 @@ gtk_object_add_arg_type (const gchar *arg_name,
|
||||
g_object_class_install_property (oclass, arg_id, pspec);
|
||||
}
|
||||
|
||||
static guint
|
||||
gtk_object_floating_flag_handler (GtkObject *object,
|
||||
gint job)
|
||||
{
|
||||
/* FIXME: remove this whole thing once GTK+ breaks ABI */
|
||||
switch (job)
|
||||
{
|
||||
guint32 oldvalue;
|
||||
case +1: /* force floating if possible */
|
||||
do
|
||||
oldvalue = g_atomic_int_get (&object->flags);
|
||||
while (!g_atomic_int_compare_and_exchange (&object->flags, oldvalue, oldvalue | GTK_FLOATING));
|
||||
return oldvalue & GTK_FLOATING;
|
||||
case -1: /* sink if possible */
|
||||
do
|
||||
oldvalue = g_atomic_int_get (&object->flags);
|
||||
while (!g_atomic_int_compare_and_exchange (&object->flags, oldvalue, oldvalue & ~(guint32) GTK_FLOATING));
|
||||
return oldvalue & GTK_FLOATING;
|
||||
default: /* check floating */
|
||||
return 0 != (g_atomic_int_get (&object->flags) & GTK_FLOATING);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_object_class_init (GtkObjectClass *class)
|
||||
{
|
||||
@@ -320,6 +343,8 @@ gtk_object_class_init (GtkObjectClass *class)
|
||||
|
||||
parent_class = g_type_class_ref (G_TYPE_OBJECT);
|
||||
|
||||
g_object_compat_control (2, gtk_object_floating_flag_handler);
|
||||
|
||||
gobject_class->set_property = gtk_object_set_property;
|
||||
gobject_class->get_property = gtk_object_get_property;
|
||||
gobject_class->dispose = gtk_object_dispose;
|
||||
|
||||
Reference in New Issue
Block a user