diff options
Diffstat (limited to 'addressbook/gui/widgets')
-rw-r--r-- | addressbook/gui/widgets/e-addressbook-model.c | 10 | ||||
-rw-r--r-- | addressbook/gui/widgets/e-addressbook-view.c | 52 |
2 files changed, 41 insertions, 21 deletions
diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index fd67d5fd23..a93ae6aa28 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -75,8 +75,9 @@ remove_book_view(EAddressbookModel *model) model->search_in_progress = FALSE; - if (model->book_view) + if (model->book_view) { gtk_object_unref(GTK_OBJECT(model->book_view)); + } model->book_view = NULL; } @@ -87,8 +88,10 @@ addressbook_destroy(GtkObject *object) EAddressbookModel *model = E_ADDRESSBOOK_MODEL(object); int i; - if (model->get_view_idle) + if (model->get_view_idle) { g_source_remove(model->get_view_idle); + model->get_view_idle = 0; + } remove_book_view(model); @@ -100,12 +103,15 @@ addressbook_destroy(GtkObject *object) model->writable_status_id = 0; gtk_object_unref(GTK_OBJECT(model->book)); + model->book = NULL; } for ( i = 0; i < model->data_count; i++ ) { gtk_object_unref(GTK_OBJECT(model->data[i])); } + g_free(model->data); + model->data = NULL; } static void diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 8c0bed0939..c12e14dcbe 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -257,12 +257,18 @@ e_addressbook_view_destroy (GtkObject *object) { EAddressbookView *eav = E_ADDRESSBOOK_VIEW(object); - if (eav->model) + if (eav->model) { gtk_object_unref(GTK_OBJECT(eav->model)); + eav->model = NULL; + } - if (eav->book) + if (eav->book) { gtk_object_unref(GTK_OBJECT(eav->book)); + eav->book = NULL; + } + g_free(eav->query); + eav->query = NULL; if (eav->view_collection) { gtk_object_unref (GTK_OBJECT (eav->view_collection)); @@ -280,8 +286,10 @@ e_addressbook_view_destroy (GtkObject *object) eav->clipboard_cards = NULL; } - if (eav->invisible) + if (eav->invisible) { gtk_widget_destroy (eav->invisible); + eav->invisible = NULL; + } if (GTK_OBJECT_CLASS(parent_class)->destroy) GTK_OBJECT_CLASS(parent_class)->destroy(object); @@ -858,8 +866,9 @@ writable_status (GtkObject *object, gboolean writable, EAddressbookView *eav) static void command_state_change (EAddressbookView *eav) { - gtk_signal_emit (GTK_OBJECT (eav), - e_addressbook_view_signals [COMMAND_STATE_CHANGE]); + gtk_object_ref (GTK_OBJECT (eav)); /* who knows what might happen during this emission? */ + gtk_signal_emit (GTK_OBJECT (eav), e_addressbook_view_signals [COMMAND_STATE_CHANGE]); + gtk_object_unref (GTK_OBJECT (eav)); } #ifdef JUST_FOR_TRANSLATORS @@ -1409,6 +1418,8 @@ get_selected_cards (EAddressbookView *view) for (iterator = list; iterator; iterator = iterator->next) { iterator->data = e_addressbook_model_card_at (view->model, GPOINTER_TO_INT (iterator->data)); + if (iterator->data) + gtk_object_ref (iterator->data); } list = g_list_reverse (list); return list; @@ -1485,7 +1496,8 @@ e_addressbook_view_show_all(EAddressbookView *view) void e_addressbook_view_stop(EAddressbookView *view) { - e_addressbook_model_stop (view->model); + if (view) + e_addressbook_model_stop (view->model); } static gboolean @@ -1503,64 +1515,66 @@ e_addressbook_view_selection_nonempty (EAddressbookView *view) gboolean e_addressbook_view_can_create (EAddressbookView *view) { - return e_addressbook_model_editable (view->model); + return view ? e_addressbook_model_editable (view->model) : FALSE; } gboolean e_addressbook_view_can_print (EAddressbookView *view) { - return e_addressbook_view_selection_nonempty (view); + return view ? e_addressbook_view_selection_nonempty (view) : FALSE; } gboolean e_addressbook_view_can_save_as (EAddressbookView *view) { - return e_addressbook_view_selection_nonempty (view); + return view ? e_addressbook_view_selection_nonempty (view) : FALSE; } -gboolean e_addressbook_view_can_send (EAddressbookView *view) +gboolean +e_addressbook_view_can_send (EAddressbookView *view) { - return e_addressbook_view_selection_nonempty (view); + return view ? e_addressbook_view_selection_nonempty (view) : FALSE; } -gboolean e_addressbook_view_can_send_to (EAddressbookView *view) +gboolean +e_addressbook_view_can_send_to (EAddressbookView *view) { - return e_addressbook_view_selection_nonempty (view); + return view ? e_addressbook_view_selection_nonempty (view) : FALSE; } gboolean e_addressbook_view_can_delete (EAddressbookView *view) { - return e_addressbook_view_selection_nonempty (view) && e_addressbook_model_editable (view->model); + return view ? e_addressbook_view_selection_nonempty (view) && e_addressbook_model_editable (view->model) : FALSE; } gboolean e_addressbook_view_can_cut (EAddressbookView *view) { - return e_addressbook_view_selection_nonempty (view) && e_addressbook_model_editable (view->model); + return view ? e_addressbook_view_selection_nonempty (view) && e_addressbook_model_editable (view->model) : FALSE; } gboolean e_addressbook_view_can_copy (EAddressbookView *view) { - return e_addressbook_view_selection_nonempty (view); + return view ? e_addressbook_view_selection_nonempty (view) : FALSE; } gboolean e_addressbook_view_can_paste (EAddressbookView *view) { - return e_addressbook_model_editable (view->model); + return view ? e_addressbook_model_editable (view->model) : FALSE; } gboolean e_addressbook_view_can_select_all (EAddressbookView *view) { - return e_addressbook_model_card_count (view->model) != 0; + return view ? e_addressbook_model_card_count (view->model) != 0 : FALSE; } gboolean e_addressbook_view_can_stop (EAddressbookView *view) { - return e_addressbook_model_can_stop (view->model); + return view ? e_addressbook_model_can_stop (view->model) : FALSE; } |