From: Richard Russon Date: Thu, 26 Sep 2019 13:21:51 +0000 (+0100) Subject: addrbook dialog X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c2f9a6fd0d064e27dce7a32a2ce9e2d2e6b19890;p=neomutt addrbook dialog --- diff --git a/addrbook.c b/addrbook.c index c40eb5e99..4a83feb83 100644 --- a/addrbook.c +++ b/addrbook.c @@ -37,6 +37,7 @@ #include "mutt.h" #include "alias.h" #include "curs_lib.h" +#include "dialog.h" #include "format_flags.h" #include "globals.h" #include "keymap.h" @@ -208,7 +209,28 @@ void mutt_alias_menu(char *buf, size_t buflen, struct AliasList *aliases) return; } + struct MuttWindow *root = mutt_window_new(MUTT_WIN_ORIENT_VERTICAL, MUTT_WIN_SIZE_MAXIMISE, MUTT_WIN_SIZE_UNLIMITED, MUTT_WIN_SIZE_UNLIMITED); + root->name = "addr-root"; + struct MuttWindow *pager = mutt_window_new(MUTT_WIN_ORIENT_VERTICAL, MUTT_WIN_SIZE_MAXIMISE, MUTT_WIN_SIZE_UNLIMITED, MUTT_WIN_SIZE_UNLIMITED); + pager->name = "addr-pager"; + struct MuttWindow *pbar = mutt_window_new(MUTT_WIN_ORIENT_VERTICAL, MUTT_WIN_SIZE_FIXED, 1, MUTT_WIN_SIZE_UNLIMITED); + pbar->name = "addr-bar"; + + struct Dialog *dialog = mutt_mem_calloc(1, sizeof (*dialog)); + dialog->root = root; + + mutt_window_add_child(root, pager); + mutt_window_add_child(root, pbar); + + dialog_push(dialog); + win_dump(); + menu = mutt_menu_new(MENU_ALIAS); + + menu->pagelen = pager->state.rows; + menu->indexwin = pager; + menu->statuswin = pbar; + menu->menu_make_entry = alias_make_entry; menu->menu_tag = alias_tag; menu->title = _("Aliases"); @@ -229,7 +251,7 @@ new_aliases: mutt_mem_realloc(&alias_table, menu->max * sizeof(struct Alias *)); menu->data = alias_table; if (!alias_table) - return; + goto mam_done; if (last) a = TAILQ_NEXT(last, entries); @@ -307,7 +329,12 @@ new_aliases: mutt_addrlist_write(buf, buflen, &alias_table[t]->addr, true); } + FREE(&alias_table); + +mam_done: mutt_menu_pop_current(menu); mutt_menu_free(&menu); - FREE(&alias_table); + dialog_pop(); + mutt_window_free(&root); + FREE(&dialog); } diff --git a/dialog.c b/dialog.c index b7bb179e3..a71fb1a1a 100644 --- a/dialog.c +++ b/dialog.c @@ -17,6 +17,7 @@ void dialog_push(struct Dialog *dlg) TAILQ_INSERT_TAIL(&MuttDialogWindow->children, dlg->root, entries); dlg->root->state.visible = true; + mutt_window_reflow(MuttDialogWindow); } void dialog_pop(void)