summaryrefslogtreecommitdiff
path: root/src/dged
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2024-02-01 09:51:44 +0100
committerAlbert Cervin <albert@acervin.com>2024-02-01 09:51:44 +0100
commit9be0d9bddd6189ce82ea3775571b5b94d6e168ca (patch)
tree1d52c65d2e9b93e3116cb74323fec91081bdf20e /src/dged
parent1653dfaef03d48a8a3aacfdea33ec6d82cab2a06 (diff)
downloaddged-9be0d9bddd6189ce82ea3775571b5b94d6e168ca.tar.gz
dged-9be0d9bddd6189ce82ea3775571b5b94d6e168ca.tar.xz
dged-9be0d9bddd6189ce82ea3775571b5b94d6e168ca.zip
Fix minibuffer execute clearing when it should not
Diffstat (limited to 'src/dged')
-rw-r--r--src/dged/minibuffer.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/dged/minibuffer.c b/src/dged/minibuffer.c
index bbe80ed..64b0a98 100644
--- a/src/dged/minibuffer.c
+++ b/src/dged/minibuffer.c
@@ -37,6 +37,8 @@ uint32_t minibuffer_draw_prompt(struct command_list *commands) {
return len;
}
+static void minibuffer_abort_prompt_internal(bool clear);
+
int32_t minibuffer_execute() {
if (g_minibuffer.prompt_active) {
struct command_ctx *c = &g_minibuffer.prompt_command_ctx;
@@ -64,9 +66,9 @@ int32_t minibuffer_execute() {
}
}
+ minibuffer_abort_prompt_internal(false);
int32_t res = execute_command(c->self, c->commands, c->active_window,
c->buffers, argc, (const char **)argv);
- minibuffer_abort_prompt();
free(l);
@@ -231,8 +233,10 @@ void minibuffer_set_prompt(const char *fmt, ...) {
va_end(args);
}
-void minibuffer_abort_prompt() {
- minibuffer_clear();
+static void minibuffer_abort_prompt_internal(bool clear) {
+ if (clear) {
+ minibuffer_clear();
+ }
g_minibuffer.prompt_active = false;
if (g_minibuffer.prev_window != NULL) {
@@ -240,6 +244,8 @@ void minibuffer_abort_prompt() {
}
}
+void minibuffer_abort_prompt() { minibuffer_abort_prompt_internal(true); }
+
bool minibuffer_empty() { return !minibuffer_displaying(); }
bool minibuffer_displaying() {