diff options
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/calendar.c | 4 | ||||
-rw-r--r-- | calendar/gui/main.c | 8 |
2 files changed, 10 insertions, 2 deletions
diff --git a/calendar/gui/calendar.c b/calendar/gui/calendar.c index dfeb1d6cc8..e6c6dddf59 100644 --- a/calendar/gui/calendar.c +++ b/calendar/gui/calendar.c @@ -133,7 +133,7 @@ calendar_add_object (Calendar *cal, iCalObject *obj) cal->modified = TRUE; - /* FIXME: do we have to set the last_mod field in the object? */ + obj->last_mod = time (NULL); } void @@ -504,6 +504,8 @@ calendar_get_events_in_range (Calendar *cal, time_t start, time_t end) void calendar_object_changed (Calendar *cal, iCalObject *obj, int flags) { + obj->last_mod = time (NULL); + if (!(flags & CHANGE_DATES)) return; diff --git a/calendar/gui/main.c b/calendar/gui/main.c index 6c4a4b4522..1cd65f331e 100644 --- a/calendar/gui/main.c +++ b/calendar/gui/main.c @@ -15,6 +15,7 @@ #include <sys/stat.h> #include <string.h> #include <ctype.h> +#include <errno.h> #include "calendar.h" #include "alarm.h" #include "eventedit.h" @@ -422,7 +423,12 @@ save_calendar_cmd (GtkWidget *widget, void *data) if (gcal->cal->filename){ struct stat s; - stat (gcal->cal->filename, &s); + if (stat (gcal->cal->filename, &s) == -1){ + if (errno == ENOENT) + calendar_save (gcal->cal, gcal->cal->filename); + + return; + } if (s.st_mtime != gcal->cal->file_time){ GtkWidget *box; |