aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui')
-rw-r--r--calendar/gui/calendar.c4
-rw-r--r--calendar/gui/main.c8
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;