* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
+#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
+
#ifndef __GTK_OBJECT_H__
#define __GTK_OBJECT_H__
+#include <gdkconfig.h>
#include <gtk/gtkenums.h>
#include <gtk/gtktypeutils.h>
#include <gtk/gtkdebug.h>
+
G_BEGIN_DECLS
/* macros for casting a pointer to a GtkObject or GtkObjectClass pointer,
* and to test whether `object' and `klass' are of type GTK_TYPE_OBJECT.
* these are the standard macros for all GtkObject-derived classes.
*/
-#define GTK_TYPE_OBJECT (gtk_object_get_type ())
-#define GTK_OBJECT(object) (GTK_CHECK_CAST ((object), GTK_TYPE_OBJECT, GtkObject))
-#define GTK_OBJECT_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_OBJECT, GtkObjectClass))
-#define GTK_IS_OBJECT(object) (GTK_CHECK_TYPE ((object), GTK_TYPE_OBJECT))
-#define GTK_IS_OBJECT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_OBJECT))
-#define GTK_OBJECT_GET_CLASS(object) (GTK_CHECK_GET_CLASS ((object), GTK_TYPE_OBJECT, GtkObjectClass))
+#define GTK_TYPE_OBJECT (gtk_object_get_type ())
+#define GTK_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_OBJECT, GtkObject))
+#define GTK_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_OBJECT, GtkObjectClass))
+#define GTK_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_OBJECT))
+#define GTK_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_OBJECT))
+#define GTK_OBJECT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GTK_TYPE_OBJECT, GtkObjectClass))
/* Macros for extracting various fields from GtkObject and GtkObjectClass.
*/
*/
typedef enum
{
- GTK_DESTROYED = 1 << 0,
+ GTK_IN_DESTRUCTION = 1 << 0, /* Used internally during dispose */
+#if !defined (GTK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION)
GTK_FLOATING = 1 << 1,
+#endif
GTK_RESERVED_1 = 1 << 2,
GTK_RESERVED_2 = 1 << 3
} GtkObjectFlags;
/* Macros for extracting the object_flags from GtkObject.
*/
#define GTK_OBJECT_FLAGS(obj) (GTK_OBJECT (obj)->flags)
-#define GTK_OBJECT_DESTROYED(obj) ((GTK_OBJECT_FLAGS (obj) & GTK_DESTROYED) != 0)
-#define GTK_OBJECT_FLOATING(obj) ((GTK_OBJECT_FLAGS (obj) & GTK_FLOATING) != 0)
-#define GTK_OBJECT_CONNECTED(obj) ((GTK_OBJECT_FLAGS (obj) & GTK_CONNECTED) != 0)
+#ifndef GTK_DISABLE_DEPRECATED
+#define GTK_OBJECT_FLOATING(obj) (g_object_is_floating (obj))
+#endif
/* Macros for setting and clearing bits in the object_flags field of GtkObject.
*/
typedef struct _GtkObjectClass GtkObjectClass;
-/* The GtkObject structure is the base of the Gtk+ objects hierarchy,
- * it ``inherits'' from the GtkTypeObject by mirroring its fields,
- * which must always be kept in sync completely. The GtkObject defines
- * the few basic items that all derived classes contain.
- */
struct _GtkObject
{
- GObject parent_instance;
-
+ GInitiallyUnowned parent_instance;
+
/* 32 bits of flags. GtkObject only uses 4 of these bits and
* GtkWidget uses the rest. This is done because structs are
* aligned on 4 or 8 byte boundaries. If a new bitfield were
* used in GtkWidget much space would be wasted.
*/
- guint32 flags;
+ guint32 GSEAL (flags);
};
-/* The GtkObjectClass is the base of the Gtk+ objects classes hierarchy,
- * it ``inherits'' from the GtkTypeClass by mirroring its fields, which
- * must always be kept in sync completely. The GtkObjectClass defines
- * the basic necessities for the object inheritance mechanism to work.
- */
struct _GtkObjectClass
{
- GObjectClass parent_class;
-
+ GInitiallyUnownedClass parent_class;
+
/* Non overridable class methods to set and get per class arguments */
void (*set_arg) (GtkObject *object,
GtkArg *arg,
void (*get_arg) (GtkObject *object,
GtkArg *arg,
guint arg_id);
-
- /* The function that will end an objects life time. In one way ore
- * another all three of them are defined for all objects. If an
- * object class overrides one of the methods in order to perform class
+
+ /* Default signal handler for the ::destroy signal, which is
+ * invoked to request that references to the widget be dropped.
+ * If an object class overrides destroy() in order to perform class
* specific destruction then it must still invoke its superclass'
* implementation of the method after it is finished with its
- * own cleanup. (See the destroy function for GtkWidget for
- * an example of how to do this).
+ * own cleanup. (See gtk_widget_real_destroy() for an example of
+ * how to do this).
*/
void (*destroy) (GtkObject *object);
};
/* Application-level methods */
-GtkType gtk_object_get_type (void) G_GNUC_CONST;
-
-GtkObject* gtk_object_new (GtkType type,
- const gchar *first_property_name,
- ...);
+GType gtk_object_get_type (void) G_GNUC_CONST;
+#ifndef GTK_DISABLE_DEPRECATED
void gtk_object_sink (GtkObject *object);
+#endif
void gtk_object_destroy (GtkObject *object);
/****************************************************************/
-#ifndef GTK_DISABLE_DEPRECATED
+#ifndef GTK_DISABLE_DEPRECATED
+GtkObject* gtk_object_new (GType type,
+ const gchar *first_property_name,
+ ...);
GtkObject* gtk_object_ref (GtkObject *object);
void gtk_object_unref (GtkObject *object);
void gtk_object_weakref (GtkObject *object,
- GtkDestroyNotify notify,
+ GDestroyNotify notify,
gpointer data);
void gtk_object_weakunref (GtkObject *object,
- GtkDestroyNotify notify,
+ GDestroyNotify notify,
gpointer data);
/* Set 'data' to the "object_data" field of the object. The
void gtk_object_set_data_full (GtkObject *object,
const gchar *key,
gpointer data,
- GtkDestroyNotify destroy);
+ GDestroyNotify destroy);
void gtk_object_remove_data (GtkObject *object,
const gchar *key);
gpointer gtk_object_get_data (GtkObject *object,
void gtk_object_set_data_by_id_full (GtkObject *object,
GQuark data_id,
gpointer data,
- GtkDestroyNotify destroy);
+ GDestroyNotify destroy);
gpointer gtk_object_get_data_by_id (GtkObject *object,
GQuark data_id);
void gtk_object_remove_data_by_id (GtkObject *object,
#define GTK_ARG_READWRITE (GTK_ARG_READABLE | GTK_ARG_WRITABLE)
void gtk_object_get (GtkObject *object,
const gchar *first_property_name,
- ...);
+ ...) G_GNUC_NULL_TERMINATED;
void gtk_object_set (GtkObject *object,
const gchar *first_property_name,
- ...);
-void gtk_object_add_arg_type (const gchar *arg_name,
- GtkType arg_type,
- guint arg_flags,
- guint arg_id);
+ ...) G_GNUC_NULL_TERMINATED;
+void gtk_object_add_arg_type (const gchar *arg_name,
+ GType arg_type,
+ guint arg_flags,
+ guint arg_id);
#endif /* GTK_DISABLE_DEPRECATED */