diff options
author | Lukas Fleischer <lfleischer@calcurse.org> | 2018-05-23 17:52:05 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2018-05-23 17:52:05 +0200 |
commit | 912124bcdcd223981db535ebb784789d4bd03ede (patch) | |
tree | 3d6dbf25592ce35e0f2484aa87b90721b15b91dd | |
parent | 2d19605ba8f2a630d762e08578206c4935723da4 (diff) | |
download | calcurse-912124bcdcd223981db535ebb784789d4bd03ede.tar.gz calcurse-912124bcdcd223981db535ebb784789d4bd03ede.zip |
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 <lfleischer@calcurse.org>
-rw-r--r-- | src/calcurse.c | 4 | ||||
-rw-r--r-- | src/io.c | 6 |
2 files changed, 8 insertions, 2 deletions
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(); @@ -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(); |