From 912124bcdcd223981db535ebb784789d4bd03ede Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 23 May 2018 17:52:05 +0200 Subject: Run pre-load hook before testing for modifications The pre-load hook is often used to manipulate the data files before loading, such as by synchronizing with a remote calendar. Make sure we always execute the pre-load hook upon reloads, even if the data files have not been modified. Fixes GitHub issue #98. Signed-off-by: Lukas Fleischer --- src/calcurse.c | 4 ++++ src/io.c | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/calcurse.c b/src/calcurse.c index 2c5cd9f..8e1978e 100644 --- a/src/calcurse.c +++ b/src/calcurse.c @@ -619,7 +619,11 @@ int main(int argc, char **argv) config_load(); wins_erase_status_bar(); io_load_keys(conf.pager); + + run_hook("pre-load"); io_load_data(NULL); + run_hook("post-load"); + io_unset_modified(); wins_slctd_set(conf.default_panel); wins_resize(); diff --git a/src/io.c b/src/io.c index cc2cb28..d358263 100644 --- a/src/io.c +++ b/src/io.c @@ -893,12 +893,10 @@ void io_load_todo(struct item_filter *filter) /* Load appointments and todo items */ void io_load_data(struct item_filter *filter) { - run_hook("pre-load"); io_mutex_lock(); io_load_app(filter); io_load_todo(filter); io_mutex_unlock(); - run_hook("post-load"); } int io_reload_data(void) @@ -934,6 +932,8 @@ int io_reload_data(void) } } + run_hook("pre-load"); + if (!io_check_data_files_modified()) goto cleanup; @@ -962,6 +962,8 @@ int io_reload_data(void) ui_todo_sel_reset(); io_load_data(NULL); + run_hook("post-load"); + io_unset_modified(); ui_todo_load_items(); ui_todo_sel_reset(); -- cgit v1.2.3-70-g09d2