diff options
-rw-r--r-- | menu.c | 18 | ||||
-rw-r--r-- | ted.c | 4 | ||||
-rw-r--r-- | ted.h | 4 |
3 files changed, 16 insertions, 10 deletions
@@ -2,7 +2,7 @@ #include "ted-internal.h" -static void menu_close_with_next(Ted *ted, Menu next) { +void menu_close(Ted *ted) { ted_switch_to_buffer(ted, ted->prev_active_buffer); TextBuffer *buffer = ted->active_buffer; ted->prev_active_buffer = NULL; @@ -18,10 +18,8 @@ static void menu_close_with_next(Ted *ted, Menu next) { buffer_clear(&ted->line_buffer); break; case MENU_WARN_UNSAVED: - if (next != MENU_WARN_UNSAVED) { - ted->warn_unsaved = 0; - *ted->warn_unsaved_names = 0; - } + ted->warn_unsaved = 0; + *ted->warn_unsaved_names = 0; break; case MENU_ASK_RELOAD: *ted->ask_reload = 0; @@ -50,13 +48,13 @@ static void menu_close_with_next(Ted *ted, Menu next) { ted->selector_open = NULL; } -void menu_close(Ted *ted) { - menu_close_with_next(ted, 0); -} - void menu_open(Ted *ted, Menu menu) { + if (ted->menu == menu) + return; + if (ted->menu) - menu_close_with_next(ted, menu); + menu_close(ted); + if (ted->find) find_close(ted); autocomplete_close(ted); ted->menu = menu; @@ -42,6 +42,10 @@ TextBuffer *ted_get_active_buffer(Ted *ted) { return ted->active_buffer; } +TextBuffer *ted_get_active_buffer_behind_menu(Ted *ted) { + return ted->prev_active_buffer; +} + void ted_set_window_title(Ted *ted, const char *title) { strbuf_cpy(ted->window_title, title); } @@ -867,6 +867,10 @@ bool tag_goto(Ted *ted, const char *tag); void die(PRINTF_FORMAT_STRING const char *fmt, ...) ATTRIBUTE_PRINTF(1, 2); /// returns the current active buffer, or NULL if no buffer is active. TextBuffer *ted_get_active_buffer(Ted *ted); +/// if a menu is open, returns the buffer that was open before the menu was opened. +/// +/// returns NULL if no menu is open or no buffer was open before the menu was opened. +TextBuffer *ted_get_active_buffer_behind_menu(Ted *ted); /// set title of ted window void ted_set_window_title(Ted *ted, const char *title); /// returns `true` if the given SDL key code is down |