diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index ca58fc15..64edb515 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -384,7 +384,9 @@ cmd_connect(ProfWin* window, const char* const command, gchar** args) // use eval_password if set } else if (account->eval_password) { + ui_suspend(); gboolean res = account_eval_password(account); + ui_resume(); ui_resize(); if (res) { conn_status = cl_ev_connect_account(account); diff --git a/src/config/accounts.c b/src/config/accounts.c index 6bd77e7b..3938f4a3 100644 --- a/src/config/accounts.c +++ b/src/config/accounts.c @@ -75,6 +75,17 @@ _accounts_save(const char* account_name) auto_gchar gchar* sanitized = _sanitize_account_name(account_name); if (_accounts_has_group(sanitized)) { + // Remove keys from file that are no longer in memory + gsize nkeys_disk; + auto_gcharv gchar** keys_disk = g_key_file_get_keys(current.keyfile, sanitized, &nkeys_disk, NULL); + if (keys_disk) { + for (gsize j = 0; j < nkeys_disk; ++j) { + if (!g_key_file_has_key(accounts_prof_keyfile.keyfile, sanitized, keys_disk[j], NULL)) { + g_key_file_remove_key(current.keyfile, sanitized, keys_disk[j], NULL); + } + } + } + gsize nkeys; auto_gcharv gchar** keys = g_key_file_get_keys(accounts_prof_keyfile.keyfile, sanitized, &nkeys, NULL); if (keys) { diff --git a/src/ui/core.c b/src/ui/core.c index bec9f534..ac287383 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -171,6 +171,18 @@ ui_reset_idle_time(void) g_timer_start(ui_idle_time); } +void +ui_suspend(void) +{ + endwin(); +} + +void +ui_resume(void) +{ + refresh(); +} + void ui_resize(void) { diff --git a/src/ui/ui.h b/src/ui/ui.h index 4ab2ac53..31b0a961 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -36,6 +36,8 @@ // core UI void ui_init(void); +void ui_suspend(void); +void ui_resume(void); void ui_load_colours(void); void ui_update(void); void ui_redraw(void); diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c index 80328825..2f46dd70 100644 --- a/tests/unittests/ui/stub_ui.c +++ b/tests/unittests/ui/stub_ui.c @@ -62,6 +62,14 @@ ui_init(void) { } void +ui_suspend(void) +{ +} +void +ui_resume(void) +{ +} +void ui_load_colours(void) { }