From 98a2c856275ec6b1f9ce60449e7b124a1dd7e7f0 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Mon, 17 Dec 2001 23:09:54 +0000 Subject: Merging changes: 2001-12-17 Christopher James Lahey * gal/widgets/e-selection-model-simple.c (e_selection_model_simple_set_row_count): Set esma->selected_row and esma->selected_range_end to -1 here. * gal/widgets/e-selection-model-array.c (e_selection_model_array_confirm_row_count): Set selected_row and selected_range_end to -1 here. (esma_select_single_row): Check that selected_row is within the range of possible rows. This should never happen, but this check will help if it does. svn path=/trunk/; revision=15142 --- widgets/misc/e-selection-model-array.c | 7 +++++-- widgets/misc/e-selection-model-simple.c | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/widgets/misc/e-selection-model-array.c b/widgets/misc/e-selection-model-array.c index dd81fb2554..2ed1f0a6be 100644 --- a/widgets/misc/e-selection-model-array.c +++ b/widgets/misc/e-selection-model-array.c @@ -44,6 +44,8 @@ e_selection_model_array_confirm_row_count(ESelectionModelArray *esma) if (esma->eba == NULL) { int row_count = e_selection_model_array_get_row_count(esma); esma->eba = e_bit_array_new(row_count); + esma->selected_row = -1; + esma->selected_range_end = -1; } } @@ -384,10 +386,11 @@ esma_real_select_single_row (ESelectionModel *selection, int row) static void esma_select_single_row (ESelectionModel *selection, int row) { - int selected_row = E_SELECTION_MODEL_ARRAY(selection)->selected_row; + ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection); + int selected_row = esma->selected_row; esma_real_select_single_row (selection, row); - if (selected_row != -1) { + if (selected_row != -1 && esma->eba && selected_row < e_bit_array_bit_count (esma->eba)) { if (selected_row != row) { e_selection_model_selection_row_changed(selection, selected_row); e_selection_model_selection_row_changed(selection, row); diff --git a/widgets/misc/e-selection-model-simple.c b/widgets/misc/e-selection-model-simple.c index b35ac7d497..0d87cdc779 100644 --- a/widgets/misc/e-selection-model-simple.c +++ b/widgets/misc/e-selection-model-simple.c @@ -77,6 +77,8 @@ e_selection_model_simple_set_row_count (ESelectionModelSimple *esms, if (esma->eba) gtk_object_unref(GTK_OBJECT(esma->eba)); esma->eba = NULL; + esma->selected_row = -1; + esma->selected_range_end = -1; } esms->row_count = row_count; } -- cgit v1.2.3