From 86755b7d11c4773744cf42ed75667c7cc6aff0c7 Mon Sep 17 00:00:00 2001 From: Damon Chaplin Date: Mon, 3 Dec 2001 22:59:20 +0000 Subject: make sure we call e_table_model_pre_change() before changing the model. 2001-12-03 Damon Chaplin * gui/e-meeting-model.c: * gui/calendar-model.c: make sure we call e_table_model_pre_change() before changing the model. * gui/calendar-config.c (calendar_config_configure_e_calendar_table): removed call to e_table_model_changed(). calendar_model_refresh() results in that anyway. svn path=/trunk/; revision=14854 --- calendar/ChangeLog | 10 ++++++++++ calendar/gui/calendar-config.c | 5 ----- calendar/gui/calendar-model.c | 10 ++++++++++ calendar/gui/e-meeting-model.c | 17 ++++++++++++++--- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 8409c7c76b..50392c0a88 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,13 @@ +2001-12-03 Damon Chaplin + + * gui/e-meeting-model.c: + * gui/calendar-model.c: make sure we call e_table_model_pre_change() + before changing the model. + + * gui/calendar-config.c (calendar_config_configure_e_calendar_table): + removed call to e_table_model_changed(). calendar_model_refresh() + results in that anyway. + 2001-12-03 Damon Chaplin * gui/e-calendar-table.etspec: disabled 'Alarms', 'End Date' and diff --git a/calendar/gui/calendar-config.c b/calendar/gui/calendar-config.c index b5ae415faf..b594423446 100644 --- a/calendar/gui/calendar-config.c +++ b/calendar/gui/calendar-config.c @@ -908,11 +908,6 @@ calendar_config_configure_e_calendar_table (ECalendarTable *cal_table) /* Reload the event/tasks, since the 'Hide Completed Tasks' option may have been changed, so the query needs to be updated. */ calendar_model_refresh (model); - - /* This is for changing the colors of the text; they will be re-fetched - * by ECellText when the table is redrawn. - */ - e_table_model_changed (E_TABLE_MODEL (model)); } diff --git a/calendar/gui/calendar-model.c b/calendar/gui/calendar-model.c index e0e4f97d7e..f2b9d8b428 100644 --- a/calendar/gui/calendar-model.c +++ b/calendar/gui/calendar-model.c @@ -1773,6 +1773,8 @@ query_obj_updated_cb (CalQuery *query, const char *uid, model = CALENDAR_MODEL (data); priv = model->priv; + e_table_model_pre_change (E_TABLE_MODEL (model)); + orig_idx = remove_object (model, uid); status = cal_client_get_object (priv->client, uid, &new_comp); @@ -1836,6 +1838,8 @@ query_obj_updated_cb (CalQuery *query, const char *uid, */ if (orig_idx != -1) e_table_model_row_deleted (E_TABLE_MODEL (model), orig_idx); + else + e_table_model_no_change (E_TABLE_MODEL (model)); break; @@ -1845,6 +1849,8 @@ query_obj_updated_cb (CalQuery *query, const char *uid, /* Same notification as above */ if (orig_idx != -1) e_table_model_row_deleted (E_TABLE_MODEL (model), orig_idx); + else + e_table_model_no_change (E_TABLE_MODEL (model)); break; @@ -1862,10 +1868,14 @@ query_obj_removed_cb (CalQuery *query, const char *uid, gpointer data) model = CALENDAR_MODEL (data); + e_table_model_pre_change (E_TABLE_MODEL (model)); + idx = remove_object (model, uid); if (idx != -1) e_table_model_row_deleted (E_TABLE_MODEL (model), idx); + else + e_table_model_no_change (E_TABLE_MODEL (model)); } /* Callback used when a query ends */ diff --git a/calendar/gui/e-meeting-model.c b/calendar/gui/e-meeting-model.c index f8daf00cf8..d80c95fb41 100644 --- a/calendar/gui/e-meeting-model.c +++ b/calendar/gui/e-meeting-model.c @@ -847,6 +847,8 @@ e_meeting_model_add_attendee (EMeetingModel *im, EMeetingAttendee *ia) priv = im->priv; + e_table_model_pre_change (E_TABLE_MODEL (im)); + gtk_object_ref (GTK_OBJECT (ia)); g_ptr_array_add (priv->attendees, ia); @@ -908,6 +910,8 @@ e_meeting_model_remove_attendee (EMeetingModel *im, EMeetingAttendee *ia) } if (row != -1) { + e_table_model_pre_change (E_TABLE_MODEL (im)); + g_ptr_array_remove_index (priv->attendees, row); gtk_object_unref (GTK_OBJECT (ia)); @@ -919,17 +923,21 @@ void e_meeting_model_remove_all_attendees (EMeetingModel *im) { EMeetingModelPrivate *priv; - gint i; + gint i, len; priv = im->priv; - for (i = 0; i < priv->attendees->len; i++) { + e_table_model_pre_change (E_TABLE_MODEL (im)); + + len = priv->attendees->len; + + for (i = 0; i < len; i++) { EMeetingAttendee *ia = g_ptr_array_index (priv->attendees, i); gtk_object_unref (GTK_OBJECT (ia)); } - e_table_model_rows_deleted (E_TABLE_MODEL (im), 0, priv->attendees->len); g_ptr_array_set_size (priv->attendees, 0); + e_table_model_rows_deleted (E_TABLE_MODEL (im), 0, len); } EMeetingAttendee * @@ -1613,6 +1621,9 @@ attendee_changed_cb (EMeetingAttendee *ia, gpointer data) if (row == -1) return; + /* FIXME: Ideally I think you are supposed to call pre_change() before + the data structures are changed. */ + e_table_model_pre_change (E_TABLE_MODEL (im)); e_table_model_row_changed (E_TABLE_MODEL (im), row); } -- cgit v1.2.3