diff options
author | Christopher James Lahey <clahey@helixcode.com> | 2000-05-30 21:19:32 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2000-05-30 21:19:32 +0800 |
commit | a076f5b58f51b45bf5308f7b077d6314dc893f29 (patch) | |
tree | a9a9c17a8db8028145847823e3e04f747882684c /widgets/e-table/e-table.c | |
parent | bdf6f37a8afa9988de108ac207b48de01fee6141 (diff) | |
download | gsoc2013-evolution-a076f5b58f51b45bf5308f7b077d6314dc893f29.tar gsoc2013-evolution-a076f5b58f51b45bf5308f7b077d6314dc893f29.tar.gz gsoc2013-evolution-a076f5b58f51b45bf5308f7b077d6314dc893f29.tar.bz2 gsoc2013-evolution-a076f5b58f51b45bf5308f7b077d6314dc893f29.tar.lz gsoc2013-evolution-a076f5b58f51b45bf5308f7b077d6314dc893f29.tar.xz gsoc2013-evolution-a076f5b58f51b45bf5308f7b077d6314dc893f29.tar.zst gsoc2013-evolution-a076f5b58f51b45bf5308f7b077d6314dc893f29.zip |
Fixed a bunch of selection bugs. Removed "spreadsheet" argument (for now.)
2000-05-30 Christopher James Lahey <clahey@helixcode.com>
* e-table-group-container.c, e-table-group-container.h,
e-table-group-leaf.c, e-table-group-leaf.h, e-table-group.c,
e-table-group.h, e-table-item.c, e-table-item.h, e-table.c,
e-table.h, test-check.c, test-cols.c, test-table.c: Fixed a bunch
of selection bugs. Removed "spreadsheet" argument (for now.)
Added "cursor_mode" argument. Added "cursor_change" signal.
Temporarily removed "selection_mode" argument.
svn path=/trunk/; revision=3277
Diffstat (limited to 'widgets/e-table/e-table.c')
-rw-r--r-- | widgets/e-table/e-table.c | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/widgets/e-table/e-table.c b/widgets/e-table/e-table.c index f5abd29d5a..25095db72d 100644 --- a/widgets/e-table/e-table.c +++ b/widgets/e-table/e-table.c @@ -40,6 +40,7 @@ static GtkObjectClass *e_table_parent_class; enum { ROW_SELECTION, + CURSOR_CHANGE, DOUBLE_CLICK, LAST_SIGNAL }; @@ -48,7 +49,7 @@ enum { ARG_0, ARG_TABLE_DRAW_GRID, ARG_TABLE_DRAW_FOCUS, - ARG_MODE_SPREADSHEET, + ARG_CURSOR_MODE, ARG_LENGTH_THRESHOLD, }; @@ -105,7 +106,7 @@ e_table_init (GtkObject *object) e_table->draw_grid = 1; e_table->draw_focus = 1; - e_table->spreadsheet = 1; + e_table->cursor_mode = E_TABLE_CURSOR_SIMPLE; e_table->length_threshold = 200; e_table->need_rebuild = 0; @@ -190,6 +191,14 @@ group_row_selection (ETableGroup *etg, int row, gboolean selected, ETable *et) } static void +group_cursor_change (ETableGroup *etg, int row, ETable *et) +{ + gtk_signal_emit (GTK_OBJECT (et), + et_signals [CURSOR_CHANGE], + row); +} + +static void group_double_click (ETableGroup *etg, int row, ETable *et) { gtk_signal_emit (GTK_OBJECT (et), @@ -213,11 +222,13 @@ changed_idle (gpointer data) gnome_canvas_item_set(GNOME_CANVAS_ITEM(et->group), "drawgrid", et->draw_grid, "drawfocus", et->draw_focus, - "spreadsheet", et->spreadsheet, + "cursor_mode", et->cursor_mode, "length_threshold", et->length_threshold, NULL); gtk_signal_connect (GTK_OBJECT (et->group), "row_selection", GTK_SIGNAL_FUNC (group_row_selection), et); + gtk_signal_connect (GTK_OBJECT (et->group), "cursor_change", + GTK_SIGNAL_FUNC (group_cursor_change), et); gtk_signal_connect (GTK_OBJECT (et->group), "double_click", GTK_SIGNAL_FUNC (group_double_click), et); e_table_fill_table (et, et->model); @@ -294,12 +305,14 @@ e_table_setup_table (ETable *e_table, ETableHeader *full_header, ETableHeader *h gnome_canvas_item_set(GNOME_CANVAS_ITEM(e_table->group), "drawgrid", e_table->draw_grid, "drawfocus", e_table->draw_focus, - "spreadsheet", e_table->spreadsheet, + "cursor_mode", e_table->cursor_mode, "length_threshold", e_table->length_threshold, NULL); gtk_signal_connect (GTK_OBJECT (e_table->group), "row_selection", GTK_SIGNAL_FUNC(group_row_selection), e_table); + gtk_signal_connect (GTK_OBJECT (e_table->group), "cursor_change", + GTK_SIGNAL_FUNC(group_cursor_change), e_table); gtk_signal_connect (GTK_OBJECT (e_table->group), "double_click", GTK_SIGNAL_FUNC(group_double_click), e_table); @@ -629,7 +642,7 @@ e_table_save_specification (ETable *e_table, gchar *filename) void e_table_select_row (ETable *e_table, int row) { - + e_table_group_select_row(e_table->group, row); } static void @@ -686,11 +699,11 @@ et_set_arg (GtkObject *o, GtkArg *arg, guint arg_id) } break; - case ARG_MODE_SPREADSHEET: - etable->spreadsheet = GTK_VALUE_BOOL (*arg); + case ARG_CURSOR_MODE: + etable->cursor_mode = GTK_VALUE_INT (*arg); if (etable->group) { gnome_canvas_item_set (GNOME_CANVAS_ITEM(etable->group), - "spreadsheet", GTK_VALUE_BOOL (*arg), + "cursor_mode", GTK_VALUE_INT (*arg), NULL); } break; @@ -708,6 +721,7 @@ e_table_class_init (GtkObjectClass *object_class) object_class->get_arg = et_get_arg; klass->row_selection = NULL; + klass->cursor_change = NULL; klass->double_click = NULL; et_signals [ROW_SELECTION] = @@ -718,6 +732,14 @@ e_table_class_init (GtkObjectClass *object_class) gtk_marshal_NONE__INT_INT, GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT); + et_signals [CURSOR_CHANGE] = + gtk_signal_new ("cursor_change", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (ETableClass, cursor_change), + gtk_marshal_NONE__INT, + GTK_TYPE_NONE, 1, GTK_TYPE_INT); + et_signals [DOUBLE_CLICK] = gtk_signal_new ("double_click", GTK_RUN_LAST, @@ -732,8 +754,8 @@ e_table_class_init (GtkObjectClass *object_class) GTK_ARG_READWRITE, ARG_TABLE_DRAW_GRID); gtk_object_add_arg_type ("ETable::drawfocus", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_TABLE_DRAW_FOCUS); - gtk_object_add_arg_type ("ETable::spreadsheet", GTK_TYPE_BOOL, - GTK_ARG_WRITABLE, ARG_MODE_SPREADSHEET); + gtk_object_add_arg_type ("ETable::cursor_mode", GTK_TYPE_INT, + GTK_ARG_WRITABLE, ARG_CURSOR_MODE); gtk_object_add_arg_type ("ETable::length_threshold", GTK_TYPE_INT, GTK_ARG_WRITABLE, ARG_LENGTH_THRESHOLD); |