From a1ff88caaea1a091973d73df5ab4aa3dbfde081b Mon Sep 17 00:00:00 2001 From: John Hernandez <129467592+H3rnand3zzz@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:57:50 +0100 Subject: [PATCH] Introduce `/redraw` command `/redraw` command allows resolve problem for usual users, as well as developers. Incredibly useful when debugging with something that can trash out the output, like GDB. Not to mention many asynchronous commands that can break the UI at any point. --- src/command/cmd_defs.c | 12 ++++++++++++ src/command/cmd_funcs.c | 8 ++++++++ src/command/cmd_funcs.h | 1 + 3 files changed, 21 insertions(+) diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c index fecb1975..e5d997b9 100644 --- a/src/command/cmd_defs.c +++ b/src/command/cmd_defs.c @@ -2729,6 +2729,18 @@ static const struct cmd_t command_defs[] = { "/privacy logging off", "/privacy os off") }, + + { CMD_PREAMBLE("/redraw", + parse_args, 0, 0, NULL) + CMD_MAINFUNC(cmd_redraw) + CMD_TAGS( + CMD_TAG_UI) + CMD_SYN( + "/redraw") + CMD_DESC( + "Redraw user interface. Can be used when some other program interrupted profanity or wrote to the same terminal and the interface looks \"broken\"." ) + }, + // NEXT-COMMAND (search helper) }; diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index 48790e88..b19facd9 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -9727,6 +9727,14 @@ cmd_correct_editor(ProfWin* window, const char* const command, gchar** args) return TRUE; } +gboolean +cmd_redraw(ProfWin* window, const char* const command, gchar** args) +{ + ui_resize(); + + return TRUE; +} + gboolean cmd_silence(ProfWin* window, const char* const command, gchar** args) { diff --git a/src/command/cmd_funcs.h b/src/command/cmd_funcs.h index 234febec..1579e543 100644 --- a/src/command/cmd_funcs.h +++ b/src/command/cmd_funcs.h @@ -255,6 +255,7 @@ gboolean cmd_executable_vcard_photo(ProfWin* window, const char* const command, gboolean cmd_mam(ProfWin* window, const char* const command, gchar** args); gboolean cmd_editor(ProfWin* window, const char* const command, gchar** args); gboolean cmd_correct_editor(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_redraw(ProfWin* window, const char* const command, gchar** args); gboolean cmd_silence(ProfWin* window, const char* const command, gchar** args); gboolean cmd_register(ProfWin* window, const char* const command, gchar** args); gboolean cmd_mood(ProfWin* window, const char* const command, gchar** args);