summaryrefslogtreecommitdiff
path: root/gtk/gtkcontainer.c
diff options
context:
space:
mode:
authorTim Janik <timj@gimp.org>1998-02-02 04:54:25 +0000
committerTim Janik <timj@src.gnome.org>1998-02-02 04:54:25 +0000
commiteef38289b2379669784be1b030b1c803ebc7ee69 (patch)
treebbd108413216f18474aac3af49605a79a1264a10 /gtk/gtkcontainer.c
parent81fe36047e9bfbf27b224cd35cc869ca6082bf38 (diff)
downloadgtk+-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.c18
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,