]> git.draconx.ca Git - aspectbin.git/blobdiff - aspectbin.c
Implement container's add method.
[aspectbin.git] / aspectbin.c
index 7e9095fd70c87119dab63a03cc08437e50e6350c..82aba4025bd47482e052a69d9c5e090647916ae1 100644 (file)
@@ -3,6 +3,7 @@
 
 static void aspect_bin_size_request(GtkWidget *, GtkRequisition *);
 static void aspect_bin_size_allocate(GtkWidget *, GtkAllocation *);
+static void aspect_bin_add(GtkContainer *, GtkWidget *);
 static void aspect_bin_remove(GtkContainer *, GtkWidget *);
 static void aspect_bin_forall(GtkContainer *, gboolean, GtkCallback, gpointer);
 static GType aspect_bin_child_type(GtkContainer *);
@@ -28,6 +29,7 @@ static void aspect_bin_class_init(AspectBinClass *class)
        widget_class->size_request  = aspect_bin_size_request;
        widget_class->size_allocate = aspect_bin_size_allocate;
 
+       container_class->add        = aspect_bin_add;
        container_class->remove     = aspect_bin_remove;
        container_class->forall     = aspect_bin_forall;
        container_class->child_type = aspect_bin_child_type;
@@ -38,6 +40,20 @@ GtkWidget *aspect_bin_new(void)
        return GTK_WIDGET(g_object_new(ASPECT_BIN_TYPE, NULL));
 }
 
+static void aspect_bin_add(GtkContainer *container, GtkWidget *widget)
+{
+       AspectBin *abin;
+       g_return_if_fail(IS_ASPECT_BIN(container));
+       abin = ASPECT_BIN(container);
+
+       if (!abin->body)
+               aspect_bin_set_body(abin, widget, 1);
+       else if (!abin->side)
+               aspect_bin_set_side(abin, widget);
+       else
+               g_warning("AspectBin cannot have more than 2 children.\n");
+}
+
 static void aspect_bin_remove(GtkContainer *container, GtkWidget *child)
 {
        AspectBin *abin = ASPECT_BIN(container);