From 8fb12c9538858bbfdaa6e74f8c08c6f86acbe66d Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Thu, 24 Feb 2000 08:23:00 +0000 Subject: Made keyboard focus navigation work across groups. 2000-02-24 Christopher James Lahey * e-table-item.c: Made keyboard focus navigation work across groups. * e-table-header.c: Made e_table_header_col_diff not crash if you give it a column less than 0 (it truncates negative column values to 0.) * e-table-group.c, e-table-group.h: Added e_table_group_get_header to get the ETableHeader for this ETableGroup. * e-table-group-container.c: Made shift tab work. svn path=/trunk/; revision=1917 --- widgets/e-table/ChangeLog | 14 ++++++++++++++ widgets/e-table/e-table-group-container.c | 4 ++++ widgets/e-table/e-table-group.c | 9 +++++++++ widgets/e-table/e-table-group.h | 1 + widgets/e-table/e-table-header.c | 8 +++++--- widgets/e-table/e-table-item.c | 2 +- widgets/table/e-table-group-container.c | 4 ++++ widgets/table/e-table-group.c | 9 +++++++++ widgets/table/e-table-group.h | 1 + widgets/table/e-table-header.c | 8 +++++--- widgets/table/e-table-item.c | 2 +- 11 files changed, 54 insertions(+), 8 deletions(-) diff --git a/widgets/e-table/ChangeLog b/widgets/e-table/ChangeLog index b231b5cee1..e4caa9707c 100644 --- a/widgets/e-table/ChangeLog +++ b/widgets/e-table/ChangeLog @@ -1,3 +1,17 @@ +2000-02-24 Christopher James Lahey + + * e-table-item.c: Made keyboard focus navigation work across + groups. + + * e-table-header.c: Made e_table_header_col_diff not crash if you + give it a column less than 0 (it truncates negative column values + to 0.) + + * e-table-group.c, e-table-group.h: Added e_table_group_get_header + to get the ETableHeader for this ETableGroup. + + * e-table-group-container.c: Made shift tab work. + 2000-02-24 Christopher James Lahey * e-table-item.c: Made changing focus work. diff --git a/widgets/e-table/e-table-group-container.c b/widgets/e-table/e-table-group-container.c index a9f494db04..634d7934ef 100644 --- a/widgets/e-table/e-table-group-container.c +++ b/widgets/e-table/e-table-group-container.c @@ -416,6 +416,10 @@ etgc_event (GnomeCanvasItem *item, GdkEvent *event) ETableGroup *child = child_node->child; if (e_table_group_get_focus(child)) { old_col = e_table_group_get_focus_column(child); + if ( old_col == -1 ) + old_col = 0; + if ( start_col == -1 ) + start_col = e_table_header_count(e_table_group_get_header(child)) - 1; if (direction == E_FOCUS_END) list = list->prev; diff --git a/widgets/e-table/e-table-group.c b/widgets/e-table/e-table-group.c index 68bc3e7abf..1f4e2037cd 100644 --- a/widgets/e-table/e-table-group.c +++ b/widgets/e-table/e-table-group.c @@ -205,6 +205,15 @@ e_table_group_resize (ETableGroup *e_table_group) etg_signals [RESIZE]); } +ETableHeader * +e_table_group_get_header (ETableGroup *etg) +{ + g_return_val_if_fail (etg != NULL, NULL); + g_return_val_if_fail (E_IS_TABLE_GROUP (etg), NULL); + + return etg->header; +} + static int etg_event (GnomeCanvasItem *item, GdkEvent *event) { diff --git a/widgets/e-table/e-table-group.h b/widgets/e-table/e-table-group.h index 1b3f346290..0dd62eb125 100644 --- a/widgets/e-table/e-table-group.h +++ b/widgets/e-table/e-table-group.h @@ -71,6 +71,7 @@ void e_table_group_set_focus (ETableGroup *etg, gint view_col); gboolean e_table_group_get_focus (ETableGroup *etg); gint e_table_group_get_focus_column (ETableGroup *etg); +ETableHeader *e_table_group_get_header (ETableGroup *etg); ETableCol *e_table_group_get_ecol (ETableGroup *etg); ETableGroup *e_table_group_new (GnomeCanvasGroup *parent, diff --git a/widgets/e-table/e-table-header.c b/widgets/e-table/e-table-header.c index af3989beff..91aa366932 100644 --- a/widgets/e-table/e-table-header.c +++ b/widgets/e-table/e-table-header.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * E-table-col-head.c: TableColHead implementation * @@ -328,13 +329,14 @@ e_table_header_col_diff (ETableHeader *eth, int start_col, int end_col) g_return_val_if_fail (E_IS_TABLE_HEADER (eth), 0); { - const int max_col = eth->col_count; + if ( start_col < 0 ) + start_col = 0; + if ( end_col > eth->col_count ) + end_col = eth->col_count - 1; total = 0; for (col = start_col; col < end_col; col++){ - if (col == max_col) - break; total += eth->columns [col]->width; } } diff --git a/widgets/e-table/e-table-item.c b/widgets/e-table/e-table-item.c index 6c1dd1d07f..286b1a8352 100644 --- a/widgets/e-table/e-table-item.c +++ b/widgets/e-table/e-table-item.c @@ -1083,7 +1083,7 @@ eti_event (GnomeCanvasItem *item, GdkEvent *e) default: return_val = FALSE; } - return TRUE; + return return_val; } /* diff --git a/widgets/table/e-table-group-container.c b/widgets/table/e-table-group-container.c index a9f494db04..634d7934ef 100644 --- a/widgets/table/e-table-group-container.c +++ b/widgets/table/e-table-group-container.c @@ -416,6 +416,10 @@ etgc_event (GnomeCanvasItem *item, GdkEvent *event) ETableGroup *child = child_node->child; if (e_table_group_get_focus(child)) { old_col = e_table_group_get_focus_column(child); + if ( old_col == -1 ) + old_col = 0; + if ( start_col == -1 ) + start_col = e_table_header_count(e_table_group_get_header(child)) - 1; if (direction == E_FOCUS_END) list = list->prev; diff --git a/widgets/table/e-table-group.c b/widgets/table/e-table-group.c index 68bc3e7abf..1f4e2037cd 100644 --- a/widgets/table/e-table-group.c +++ b/widgets/table/e-table-group.c @@ -205,6 +205,15 @@ e_table_group_resize (ETableGroup *e_table_group) etg_signals [RESIZE]); } +ETableHeader * +e_table_group_get_header (ETableGroup *etg) +{ + g_return_val_if_fail (etg != NULL, NULL); + g_return_val_if_fail (E_IS_TABLE_GROUP (etg), NULL); + + return etg->header; +} + static int etg_event (GnomeCanvasItem *item, GdkEvent *event) { diff --git a/widgets/table/e-table-group.h b/widgets/table/e-table-group.h index 1b3f346290..0dd62eb125 100644 --- a/widgets/table/e-table-group.h +++ b/widgets/table/e-table-group.h @@ -71,6 +71,7 @@ void e_table_group_set_focus (ETableGroup *etg, gint view_col); gboolean e_table_group_get_focus (ETableGroup *etg); gint e_table_group_get_focus_column (ETableGroup *etg); +ETableHeader *e_table_group_get_header (ETableGroup *etg); ETableCol *e_table_group_get_ecol (ETableGroup *etg); ETableGroup *e_table_group_new (GnomeCanvasGroup *parent, diff --git a/widgets/table/e-table-header.c b/widgets/table/e-table-header.c index af3989beff..91aa366932 100644 --- a/widgets/table/e-table-header.c +++ b/widgets/table/e-table-header.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * E-table-col-head.c: TableColHead implementation * @@ -328,13 +329,14 @@ e_table_header_col_diff (ETableHeader *eth, int start_col, int end_col) g_return_val_if_fail (E_IS_TABLE_HEADER (eth), 0); { - const int max_col = eth->col_count; + if ( start_col < 0 ) + start_col = 0; + if ( end_col > eth->col_count ) + end_col = eth->col_count - 1; total = 0; for (col = start_col; col < end_col; col++){ - if (col == max_col) - break; total += eth->columns [col]->width; } } diff --git a/widgets/table/e-table-item.c b/widgets/table/e-table-item.c index 6c1dd1d07f..286b1a8352 100644 --- a/widgets/table/e-table-item.c +++ b/widgets/table/e-table-item.c @@ -1083,7 +1083,7 @@ eti_event (GnomeCanvasItem *item, GdkEvent *e) default: return_val = FALSE; } - return TRUE; + return return_val; } /* -- cgit v1.2.3