diff options
author | Christopher James Lahey <clahey@ximian.com> | 2001-10-03 21:47:56 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2001-10-03 21:47:56 +0800 |
commit | 2e93b3da0b04b8f262891ebf38827b2d21f80905 (patch) | |
tree | 558cec578eea4edff7c667b6d4bf8c19fae42b2e /widgets/table/e-table-click-to-add.c | |
parent | d3798ab87ef00d8c3944b362bd4960b33d95f4d3 (diff) | |
download | gsoc2013-evolution-2e93b3da0b04b8f262891ebf38827b2d21f80905.tar.gz gsoc2013-evolution-2e93b3da0b04b8f262891ebf38827b2d21f80905.tar.zst gsoc2013-evolution-2e93b3da0b04b8f262891ebf38827b2d21f80905.zip |
Pick which field of the row to select based on priority.
2001-10-03 Christopher James Lahey <clahey@ximian.com>
* e-table-click-to-add.c (set_initial_selection): Pick which field
of the row to select based on priority.
* e-table-col.c, e-table-col.h: Added the priority field to this
class. Adapted the _new functions appropriately.
* e-table-column-specification.c, e-table-column-specification.h:
Added the priority field to this class.
* e-table-utils.c (et_col_spec_to_col): Handle the priority field here.
svn path=/trunk/; revision=13370
Diffstat (limited to 'widgets/table/e-table-click-to-add.c')
-rw-r--r-- | widgets/table/e-table-click-to-add.c | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/widgets/table/e-table-click-to-add.c b/widgets/table/e-table-click-to-add.c index a7cc26273f..3759b32e3e 100644 --- a/widgets/table/e-table-click-to-add.c +++ b/widgets/table/e-table-click-to-add.c @@ -281,6 +281,30 @@ item_key_press (ETableItem *item, int row, int col, GdkEvent *event, ETableClick } static void +set_initial_selection (ETableClickToAdd *etcta) +{ + int best_model_col = 0; + int best_priority; + int i; + int count; + + count = e_table_header_count (etcta->eth); + if (count == 0) + return; + best_priority = e_table_header_get_column (etcta->eth, 0)->priority; + best_model_col = e_table_header_get_column (etcta->eth, 0)->col_idx; + for (i = 1; i < count; i++) { + int priority = e_table_header_get_column (etcta->eth, i)->priority; + if (priority > best_priority) { + best_priority = priority; + best_model_col = e_table_header_get_column (etcta->eth, i)->col_idx; + } + + } + e_selection_model_do_something (E_SELECTION_MODEL(etcta->selection), 0, best_model_col, 0); +} + +static void finish_editing (ETableClickToAdd *etcta) { if (etcta->row) { @@ -311,7 +335,7 @@ finish_editing (ETableClickToAdd *etcta) gtk_signal_connect(GTK_OBJECT(etcta->row), "key_press", GTK_SIGNAL_FUNC(item_key_press), etcta); - e_table_item_set_cursor(E_TABLE_ITEM(etcta->row), 0, 0); + set_initial_selection (etcta); } } @@ -322,7 +346,6 @@ static int etcta_event (GnomeCanvasItem *item, GdkEvent *e) { ETableClickToAdd *etcta = E_TABLE_CLICK_TO_ADD (item); - int ret_val = TRUE; switch (e->type){ case GDK_BUTTON_PRESS: @@ -357,11 +380,9 @@ etcta_event (GnomeCanvasItem *item, GdkEvent *e) gtk_signal_connect(GTK_OBJECT(etcta->row), "key_press", GTK_SIGNAL_FUNC(item_key_press), etcta); - gnome_canvas_item_i2w (item, &e->button.x, &e->button.y); - gnome_canvas_item_w2i (etcta->row, &e->button.x, &e->button.y); - gtk_signal_emit_by_name(GTK_OBJECT(etcta->row), "event", e, &ret_val); - gnome_canvas_item_i2w (etcta->row, &e->button.x, &e->button.y); - gnome_canvas_item_w2i (item, &e->button.x, &e->button.y); + e_canvas_item_grab_focus (GNOME_CANVAS_ITEM(etcta->row), TRUE); + + set_initial_selection (etcta); } break; |