diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-07-19 14:57:15 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-07-19 14:57:15 +0000 |
commit | aa49527fa78bf5b3a3f1394092b248e27e1bfa3f (patch) | |
tree | a1b7651c9e379ab1f7ffe2af68727cdccdf682e6 /gtk/gtkbin.c | |
parent | 8f2bf7976d73ba58b808002268c49a19e9b586ee (diff) | |
download | gtk+-aa49527fa78bf5b3a3f1394092b248e27e1bfa3f.tar.gz |
Enforce the widget/child realization/mapping invariants.
Sat Jul 7 02:50:14 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_set_parent): Enforce
the widget/child realization/mapping invariants.
* gtk/gtkwidget.[ch] gtk/gtkprivate.h: Add functions
gtk_widget_[get/set]_child_visible() to control
whether visible children of a mapped window are
mapped.
* docs/widget_system.txt: Updated for changes in
container contract, and addition of GTK_CHILD_VISIBLE.
* gtk/gtkcontainer.c: Add generic map()/unmap()
functions that work for almost all containers.
* gtk/gtknotebook.c gtk/gtkpacker.c: Use
gtk_widget_set_child_visible() where necessary.
* gtk/*.c: Remove excess map(), unmap(), and
realization/mapping invariant enforcing code
from many containers.
Diffstat (limited to 'gtk/gtkbin.c')
-rw-r--r-- | gtk/gtkbin.c | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/gtk/gtkbin.c b/gtk/gtkbin.c index d6a21eb9b9..e412869b24 100644 --- a/gtk/gtkbin.c +++ b/gtk/gtkbin.c @@ -29,8 +29,6 @@ static void gtk_bin_class_init (GtkBinClass *klass); static void gtk_bin_init (GtkBin *bin); -static void gtk_bin_map (GtkWidget *widget); -static void gtk_bin_unmap (GtkWidget *widget); static void gtk_bin_add (GtkContainer *container, GtkWidget *widget); static void gtk_bin_remove (GtkContainer *container, @@ -83,9 +81,6 @@ gtk_bin_class_init (GtkBinClass *class) parent_class = gtk_type_class (GTK_TYPE_CONTAINER); - widget_class->map = gtk_bin_map; - widget_class->unmap = gtk_bin_unmap; - container_class->add = gtk_bin_add; container_class->remove = gtk_bin_remove; container_class->forall = gtk_bin_forall; @@ -111,42 +106,6 @@ gtk_bin_child_type (GtkContainer *container) } static void -gtk_bin_map (GtkWidget *widget) -{ - GtkBin *bin; - - g_return_if_fail (GTK_IS_BIN (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); - bin = GTK_BIN (widget); - - if (bin->child && - GTK_WIDGET_VISIBLE (bin->child) && - !GTK_WIDGET_MAPPED (bin->child)) - gtk_widget_map (bin->child); - - if (!GTK_WIDGET_NO_WINDOW (widget)) - gdk_window_show (widget->window); -} - -static void -gtk_bin_unmap (GtkWidget *widget) -{ - GtkBin *bin; - - g_return_if_fail (GTK_IS_BIN (widget)); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED); - bin = GTK_BIN (widget); - - if (!GTK_WIDGET_NO_WINDOW (widget)) - gdk_window_hide (widget->window); - - if (bin->child && GTK_WIDGET_MAPPED (bin->child)) - gtk_widget_unmap (bin->child); -} - -static void gtk_bin_add (GtkContainer *container, GtkWidget *child) { @@ -171,17 +130,6 @@ gtk_bin_add (GtkContainer *container, gtk_widget_set_parent (child, GTK_WIDGET (bin)); bin->child = child; - - if (GTK_WIDGET_REALIZED (child->parent)) - gtk_widget_realize (child); - - if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child)) - { - if (GTK_WIDGET_MAPPED (child->parent)) - gtk_widget_map (child); - - gtk_widget_queue_resize (child); - } } static void |