diff options
Diffstat (limited to 'calendar')
-rw-r--r-- | calendar/ChangeLog | 5 | ||||
-rw-r--r-- | calendar/gui/dialogs/calendar-setup.c | 25 |
2 files changed, 25 insertions, 5 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 6e4ed7f378..1e4da7b719 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,8 @@ +2004-05-05 Larry Ewing <lewing@ximian.com> + + * gui/dialogs/calendar-setup.c: make sure that we don't crash if + there are no sources. + 2004-05-04 Larry Ewing <lewing@ximian.com> * gui/dialogs/calendar-setup.c: fix logic error. diff --git a/calendar/gui/dialogs/calendar-setup.c b/calendar/gui/dialogs/calendar-setup.c index f2a8db178d..4aed80ff77 100644 --- a/calendar/gui/dialogs/calendar-setup.c +++ b/calendar/gui/dialogs/calendar-setup.c @@ -120,6 +120,9 @@ source_group_is_remote (ESourceGroup *group) { EUri *uri; gboolean is_remote = FALSE; + + if (!group) + return FALSE; uri = e_uri_new (e_source_group_peek_base_uri (group)); if (!uri) @@ -202,6 +205,9 @@ source_group_can_add (ESourceGroup *source_group) gboolean can_add; EUri *uri; + if (!source_group) + return FALSE; + can_add = !e_source_group_is_readonly (source_group); if (can_add) { @@ -223,6 +229,9 @@ source_group_menu_add_groups (GtkMenuShell *menu_shell, ESourceList *source_list GSList *groups, *sl; int index=-1, i=0; + if (source_list == NULL) + return index; + groups = e_source_list_peek_groups (source_list); for (sl = groups; sl; sl = g_slist_next (sl)) { GtkWidget *menu_item; @@ -351,11 +360,13 @@ general_entry_modified (SourceDialog *source_dialog) { const char *text = gtk_entry_get_text (GTK_ENTRY (source_dialog->name_entry)); gboolean sensitive = text && *text != '\0'; + + sensitive &= (source_dialog->source_group != NULL); if (source_group_is_remote (source_dialog->source_group)) { sensitive &= remote_page_verify (source_dialog); } - + gtk_widget_set_sensitive (source_dialog->add_button, sensitive); } @@ -684,8 +695,10 @@ calendar_setup_new_calendar (GtkWindow *parent) * on startup of the calendar component. */ index = source_group_menu_add_groups (GTK_MENU_SHELL (gtk_option_menu_get_menu ( GTK_OPTION_MENU (source_dialog->group_optionmenu))), source_dialog->source_list); - gtk_option_menu_set_history (GTK_OPTION_MENU (source_dialog->group_optionmenu), index); - source_dialog->source_group = e_source_list_peek_groups (source_dialog->source_list)->data; + if (index > -1) { + gtk_option_menu_set_history (GTK_OPTION_MENU (source_dialog->group_optionmenu), index); + source_dialog->source_group = e_source_list_peek_groups (source_dialog->source_list)->data; + } g_signal_connect_swapped (source_dialog->group_optionmenu, "changed", G_CALLBACK (source_group_changed_sensitive), source_dialog); @@ -847,8 +860,10 @@ calendar_setup_new_task_list (GtkWindow *parent) * on startup of the calendar component. */ index = source_group_menu_add_groups (GTK_MENU_SHELL (gtk_option_menu_get_menu ( GTK_OPTION_MENU (source_dialog->group_optionmenu))), source_dialog->source_list); - gtk_option_menu_set_history (GTK_OPTION_MENU (source_dialog->group_optionmenu), index); - source_dialog->source_group = e_source_list_peek_groups (source_dialog->source_list)->data; + if (index > -1) { + gtk_option_menu_set_history (GTK_OPTION_MENU (source_dialog->group_optionmenu), index); + source_dialog->source_group = e_source_list_peek_groups (source_dialog->source_list)->data; + } g_signal_connect_swapped (source_dialog->group_optionmenu, "changed", G_CALLBACK (source_group_changed_sensitive), source_dialog); |