From 2f81032abc0e68f1a2cdbc88c23b0febd2524bb1 Mon Sep 17 00:00:00 2001 From: JP Rosevear Date: Fri, 10 Aug 2001 15:47:18 +0000 Subject: new proto and virtual method 2001-08-10 JP Rosevear * gal/widgets/e-canvas-vbox.h: new proto and virtual method * gal/widgets/e-canvas-vbox.c (e_canvas_vbox_real_add_item_start): adds the the item to the beginning (e_canvas_vbox_add_item_start): call the virtual method 2001-08-10 JP Rosevear * e-table.c (et_build_groups): add the items to the start or end based on where the click to add should be (e_table_setup_table): ditto (et_real_construct): read additional spec flag * e-table.h: new flag * e-table-specification.c (etsp_init): init new flag (e_table_specification_load_from_node): set click to add end flag (e_table_specification_save_to_node): write out flag * e-table-specification.h: new flag svn path=/trunk/; revision=11880 --- widgets/misc/e-canvas-vbox.c | 25 +++++++++++++++++++++++++ widgets/misc/e-canvas-vbox.h | 2 ++ 2 files changed, 27 insertions(+) (limited to 'widgets/misc') 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 -- cgit