aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/misc')
-rw-r--r--widgets/misc/e-canvas-vbox.c25
-rw-r--r--widgets/misc/e-canvas-vbox.h2
2 files changed, 27 insertions, 0 deletions
diff --git a/widgets/misc/e-canvas-vbox.c b/widgets/misc/e-canvas-vbox.c
index 5879d4f672..465548b885 100644
--- a/widgets/misc/e-canvas-vbox.c
+++ b/widgets/misc/e-canvas-vbox.c
@@ -41,6 +41,7 @@ static void e_canvas_vbox_realize (GnomeCanvasItem *item);
static void e_canvas_vbox_reflow (GnomeCanvasItem *item, int flags);
static void e_canvas_vbox_real_add_item(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item);
+static void e_canvas_vbox_real_add_item_start(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item);
static void e_canvas_vbox_resize_children (GnomeCanvasItem *item);
static GnomeCanvasGroupClass *parent_class = NULL;
@@ -100,6 +101,7 @@ e_canvas_vbox_class_init (ECanvasVboxClass *klass)
GTK_ARG_READWRITE, ARG_SPACING);
klass->add_item = e_canvas_vbox_real_add_item;
+ klass->add_item_start = e_canvas_vbox_real_add_item_start;
object_class->set_arg = e_canvas_vbox_set_arg;
object_class->get_arg = e_canvas_vbox_get_arg;
@@ -265,6 +267,21 @@ e_canvas_vbox_real_add_item(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item)
}
}
+
+static void
+e_canvas_vbox_real_add_item_start(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item)
+{
+ e_canvas_vbox->items = g_list_prepend(e_canvas_vbox->items, item);
+ gtk_signal_connect(GTK_OBJECT(item), "destroy",
+ GTK_SIGNAL_FUNC(e_canvas_vbox_remove_item), e_canvas_vbox);
+ if ( GTK_OBJECT_FLAGS( e_canvas_vbox ) & GNOME_CANVAS_ITEM_REALIZED ) {
+ gnome_canvas_item_set(item,
+ "width", (double) e_canvas_vbox->minimum_width,
+ NULL);
+ e_canvas_item_request_reflow(item);
+ }
+}
+
static void
e_canvas_vbox_resize_children (GnomeCanvasItem *item)
{
@@ -348,3 +365,11 @@ e_canvas_vbox_add_item(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item)
if (E_CANVAS_VBOX_CLASS(GTK_OBJECT(e_canvas_vbox)->klass)->add_item)
(E_CANVAS_VBOX_CLASS(GTK_OBJECT(e_canvas_vbox)->klass)->add_item) (e_canvas_vbox, item);
}
+
+void
+e_canvas_vbox_add_item_start(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item)
+{
+ if (E_CANVAS_VBOX_CLASS(GTK_OBJECT(e_canvas_vbox)->klass)->add_item_start)
+ (E_CANVAS_VBOX_CLASS(GTK_OBJECT(e_canvas_vbox)->klass)->add_item_start) (e_canvas_vbox, item);
+}
+
diff --git a/widgets/misc/e-canvas-vbox.h b/widgets/misc/e-canvas-vbox.h
index 1dfaf7a726..3a98264cd1 100644
--- a/widgets/misc/e-canvas-vbox.h
+++ b/widgets/misc/e-canvas-vbox.h
@@ -69,6 +69,7 @@ struct _ECanvasVboxClass
/* Virtual methods. */
void (* add_item) (ECanvasVbox *CanvasVbox, GnomeCanvasItem *item);
+ void (* add_item_start) (ECanvasVbox *CanvasVbox, GnomeCanvasItem *item);
};
/*
@@ -78,6 +79,7 @@ struct _ECanvasVboxClass
* changes.
*/
void e_canvas_vbox_add_item(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item);
+void e_canvas_vbox_add_item_start(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item);
GtkType e_canvas_vbox_get_type (void);
#ifdef __cplusplus