diff --git a/ChangeLog b/ChangeLog index 866637bf5d..6c931162c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Tue Aug 11 20:52:58 1998 Tim Janik + + * gtk/gtktypeutils.c (gtk_type_class_init): relookup nodes after + external functions have been called. also relookup nodes after + this function has been invoked. + Tue Aug 11 15:04:52 1998 Owen Taylor * gtk/gtktext.[ch]: Removed has_cursor, set the cursor diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 866637bf5d..6c931162c5 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,9 @@ +Tue Aug 11 20:52:58 1998 Tim Janik + + * gtk/gtktypeutils.c (gtk_type_class_init): relookup nodes after + external functions have been called. also relookup nodes after + this function has been invoked. + Tue Aug 11 15:04:52 1998 Owen Taylor * gtk/gtktext.[ch]: Removed has_cursor, set the cursor diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 866637bf5d..6c931162c5 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Tue Aug 11 20:52:58 1998 Tim Janik + + * gtk/gtktypeutils.c (gtk_type_class_init): relookup nodes after + external functions have been called. also relookup nodes after + this function has been invoked. + Tue Aug 11 15:04:52 1998 Owen Taylor * gtk/gtktext.[ch]: Removed has_cursor, set the cursor diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 866637bf5d..6c931162c5 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,9 @@ +Tue Aug 11 20:52:58 1998 Tim Janik + + * gtk/gtktypeutils.c (gtk_type_class_init): relookup nodes after + external functions have been called. also relookup nodes after + this function has been invoked. + Tue Aug 11 15:04:52 1998 Owen Taylor * gtk/gtktext.[ch]: Removed has_cursor, set the cursor diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 866637bf5d..6c931162c5 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Tue Aug 11 20:52:58 1998 Tim Janik + + * gtk/gtktypeutils.c (gtk_type_class_init): relookup nodes after + external functions have been called. also relookup nodes after + this function has been invoked. + Tue Aug 11 15:04:52 1998 Owen Taylor * gtk/gtktext.[ch]: Removed has_cursor, set the cursor diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 866637bf5d..6c931162c5 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Tue Aug 11 20:52:58 1998 Tim Janik + + * gtk/gtktypeutils.c (gtk_type_class_init): relookup nodes after + external functions have been called. also relookup nodes after + this function has been invoked. + Tue Aug 11 15:04:52 1998 Owen Taylor * gtk/gtktext.[ch]: Removed has_cursor, set the cursor diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 866637bf5d..6c931162c5 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Tue Aug 11 20:52:58 1998 Tim Janik + + * gtk/gtktypeutils.c (gtk_type_class_init): relookup nodes after + external functions have been called. also relookup nodes after + this function has been invoked. + Tue Aug 11 15:04:52 1998 Owen Taylor * gtk/gtktext.[ch]: Removed has_cursor, set the cursor diff --git a/gtk/gtk.defs b/gtk/gtk.defs index f67841bd5f..181a95047d 100644 --- a/gtk/gtk.defs +++ b/gtk/gtk.defs @@ -474,7 +474,19 @@ (define-enum GdkFunction (copy GDK_COPY) (invert GDK_INVERT) - (xor GDK_XOR)) + (xor GDK_XOR) + (clear GDK_CLEAR) + (and GDK_AND) + (and-reverse GDK_AND_REVERSE) + (and-invert GDK_AND_INVERT) + (noop GDK_NOOP) + (or GDK_OR) + (equiv GDK_EQUIV) + (or-reverse GDK_OR_REVERSE) + (copy-invert GDK_COPY_INVERT) + (or-invert GDK_OR_INVERT) + (nand GDK_NAND) + (set GDK_SET)) (define-enum GdkFill (solid GDK_SOLID) diff --git a/gtk/gtktypebuiltins_evals.c b/gtk/gtktypebuiltins_evals.c index 3034fe698e..ba0eee19d5 100644 --- a/gtk/gtktypebuiltins_evals.c +++ b/gtk/gtktypebuiltins_evals.c @@ -501,6 +501,18 @@ static GtkEnumValue _gdk_function_values[] = { { GDK_COPY, "GDK_COPY", "copy" }, { GDK_INVERT, "GDK_INVERT", "invert" }, { GDK_XOR, "GDK_XOR", "xor" }, + { GDK_CLEAR, "GDK_CLEAR", "clear" }, + { GDK_AND, "GDK_AND", "and" }, + { GDK_AND_REVERSE, "GDK_AND_REVERSE", "and-reverse" }, + { GDK_AND_INVERT, "GDK_AND_INVERT", "and-invert" }, + { GDK_NOOP, "GDK_NOOP", "noop" }, + { GDK_OR, "GDK_OR", "or" }, + { GDK_EQUIV, "GDK_EQUIV", "equiv" }, + { GDK_OR_REVERSE, "GDK_OR_REVERSE", "or-reverse" }, + { GDK_COPY_INVERT, "GDK_COPY_INVERT", "copy-invert" }, + { GDK_OR_INVERT, "GDK_OR_INVERT", "or-invert" }, + { GDK_NAND, "GDK_NAND", "nand" }, + { GDK_SET, "GDK_SET", "set" }, { 0, NULL, NULL } }; static GtkEnumValue _gdk_fill_values[] = { diff --git a/gtk/gtktypeutils.c b/gtk/gtktypeutils.c index a876a7d884..0181d7dc60 100644 --- a/gtk/gtktypeutils.c +++ b/gtk/gtktypeutils.c @@ -53,7 +53,7 @@ struct _GtkTypeNode node_var = NULL; \ } -static void gtk_type_class_init (GtkTypeNode *node); +static void gtk_type_class_init (GtkType node_type); static guint gtk_type_name_hash (const char *key); static gint gtk_type_name_compare (const char *a, const char *b); @@ -296,7 +296,11 @@ gtk_type_parent_class (GtkType type) if (node) { if (!node->klass) - gtk_type_class_init (node); + { + type = node->type; + gtk_type_class_init (type); + LOOKUP_TYPE_NODE (node, type); + } return node->klass; } @@ -314,7 +318,11 @@ gtk_type_class (GtkType type) g_return_val_if_fail (node != NULL, NULL); if (!node->klass) - gtk_type_class_init (node); + { + type = node->type; + gtk_type_class_init (type); + LOOKUP_TYPE_NODE (node, type); + } return node->klass; } @@ -483,8 +491,13 @@ gtk_type_is_a (GtkType type, } static void -gtk_type_class_init (GtkTypeNode *node) +gtk_type_class_init (GtkType type) { + GtkTypeNode *node; + + /* we need to relookup nodes everytime we called an external function */ + LOOKUP_TYPE_NODE (node, type); + if (!node->klass && node->type_info.class_size) { GtkObjectClass *object_class; @@ -501,7 +514,11 @@ gtk_type_class_init (GtkTypeNode *node) LOOKUP_TYPE_NODE (parent, node->parent_type); if (!parent->klass) - gtk_type_class_init (parent); + { + gtk_type_class_init (parent->type); + LOOKUP_TYPE_NODE (node, type); + LOOKUP_TYPE_NODE (parent, node->parent_type); + } if (parent->klass) memcpy (node->klass, parent->klass, parent->type_info.class_size); @@ -531,6 +548,7 @@ gtk_type_class_init (GtkTypeNode *node) base_class_init = walk->data; base_class_init (node->klass); + LOOKUP_TYPE_NODE (node, type); } g_slist_free (slist); }