diff options
author | Tim Janik <timj@gimp.org> | 1998-02-02 04:54:25 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-02-02 04:54:25 +0000 |
commit | eef38289b2379669784be1b030b1c803ebc7ee69 (patch) | |
tree | bbd108413216f18474aac3af49605a79a1264a10 /gtk/gtkcontainer.c | |
parent | 81fe36047e9bfbf27b224cd35cc869ca6082bf38 (diff) | |
download | gtk+-eef38289b2379669784be1b030b1c803ebc7ee69.tar.gz |
GTK_RESIZE_NEEDED is a private flag now.
Mon Feb 2 04:15:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: GTK_RESIZE_NEEDED is a private flag now.
(gtk_container_register_toplevel): new function.
(gtk_container_unregister_toplevel): new function.
* gtk/gtkmain.c: GTK_LEAVE_PENDING is a private flag now.
* gtk/gtkmenu.c: call gtk_container_register_toplevel in
gtk_menu_class_init instead of this dirty gtk_widget_set_parent(,NULL)
hack. new default handler gtk_menu_destroy for calling
gtk_container_unregister_toplevel. removed GTK_ANCHORED, GTK_UNMAPPED.
* gtk/gtkobject.h: macro cleanups, added GTK_DESTROYED flag.
* gtk/gtkobject.c: only emit DESTROY signal if !GTK_OBJECT_DESTROYED
(object).
* gtk/gtkprivate.h: new file that will not be automatically included.
it holds the private flags for GtkWidget along with it's SET/UNSET
and examination macros.
* gtk/gtkwidget.c: private flags: GTK_RESIZE_NEEDED, GTK_REDRAW_PENDING,
GTK_RESIZE_PENDING, GTK_IN_REPARENT, GTK_USER_STYLE. GTK_ANCHORED is
replaced by GTK_TOPLEVEL. added missing UNSET for GTK_IN_REPARENT.
removed the gtk_widget_set_parent(, NULL) hack for toplevels.
upon destroy free memory for widgets with GTK_WIDGET_HAS_SHAPE_MASK.
* gtk/gtkwidget.h: split up the widget flags into a public and a private
portion. added an extra field private_flags to GtkWidget without making
it bigger by using an alignment gap of 16 bit. macro cleanups.
* gtk/gtkwindow.c: removed GTK_ANCHORED. new function gtk_window_destroy
for calling gtk_container_unregister_toplevel. removed the
gtk_widget_set_parent(,NULL), call gtk_container_register_toplevel
instead. remove GTK_UNMAPPED. GTK_RESIZE_NEEDED is private now.
* gtk/gtksignal.c (gtk_signal_disconnect): removed a bug on
removal that cut off the handler list -> living_objects == 0
with testgtk. made some warnings more descriptive.
new function gtk_signal_connect_object_while_alive, which
will automatically destroy the connection once one of the objects
is destroyed. didn't include this before removal of the above
mentioned bug.
* reflected refcounting revolution in ChangeLog
Diffstat (limited to 'gtk/gtkcontainer.c')
-rw-r--r-- | gtk/gtkcontainer.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c index ba7cc81527..6dbb089e61 100644 --- a/gtk/gtkcontainer.c +++ b/gtk/gtkcontainer.c @@ -17,6 +17,7 @@ */ #include <string.h> #include "gtkcontainer.h" +#include "gtkprivate.h" #include "gtksignal.h" @@ -215,12 +216,15 @@ gtk_container_destroy (GtkObject *object) { GSList *node; + g_return_if_fail (object != NULL); + g_return_if_fail (GTK_IS_CONTAINER (object)); + for (node = GTK_CONTAINER (object)->resize_widgets; node; node = node->next) { GtkWidget *child; child = (GtkWidget*) node->data; - GTK_WIDGET_UNSET_FLAGS (child, GTK_RESIZE_NEEDED); + GTK_PRIVATE_UNSET_FLAGS (child, GTK_RESIZE_NEEDED); } g_slist_free (GTK_CONTAINER (object)->resize_widgets); GTK_CONTAINER (object)->resize_widgets = NULL; @@ -466,6 +470,18 @@ gtk_container_children (GtkContainer *container) return g_list_reverse (children); } +void +gtk_container_register_toplevel (GtkContainer *container) +{ + gtk_widget_ref (GTK_WIDGET (container)); + gtk_object_sink (GTK_OBJECT (container)); +} + +void +gtk_container_unregister_toplevel (GtkContainer *container) +{ + gtk_widget_unref (GTK_WIDGET (container)); +} static void gtk_container_marshal_signal_1 (GtkObject *object, |