aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@ximian.com>2001-12-18 07:09:54 +0800
committerChris Lahey <clahey@src.gnome.org>2001-12-18 07:09:54 +0800
commit98a2c856275ec6b1f9ce60449e7b124a1dd7e7f0 (patch)
treea597a0534ce192fe854b6eaaaeb634ca59bd7d32
parentd39ecffd6d964357c55bd6cebc2cc4bb9fd4f547 (diff)
downloadgsoc2013-evolution-98a2c856275ec6b1f9ce60449e7b124a1dd7e7f0.tar.gz
gsoc2013-evolution-98a2c856275ec6b1f9ce60449e7b124a1dd7e7f0.tar.zst
gsoc2013-evolution-98a2c856275ec6b1f9ce60449e7b124a1dd7e7f0.zip
Merging changes:
2001-12-17 Christopher James Lahey <clahey@ximian.com> * 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
-rw-r--r--widgets/misc/e-selection-model-array.c7
-rw-r--r--widgets/misc/e-selection-model-simple.c2
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;
}