From: Richard Russon Date: Tue, 15 Oct 2019 10:45:44 +0000 (+0100) Subject: ssl dialog X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d17571926961382168f42f5c7ed816a0ba0753cf;p=neomutt ssl dialog --- diff --git a/conn/ssl.c b/conn/ssl.c index f14473aef..243684601 100644 --- a/conn/ssl.c +++ b/conn/ssl.c @@ -58,11 +58,13 @@ #include "conn_globals.h" #include "connaccount.h" #include "connection.h" +#include "dialog.h" #include "globals.h" #include "keymap.h" #include "mutt_account.h" #include "mutt_logging.h" #include "mutt_menu.h" +#include "mutt_window.h" #include "muttlib.h" #include "opcodes.h" #include "options.h" @@ -892,12 +894,32 @@ static bool interactive_check_cert(X509 *cert, int idx, size_t len, SSL *ssl, bo char helpstr[1024]; char buf[256]; char title[256]; - struct Menu *menu = mutt_menu_new(MENU_GENERIC); int done; FILE *fp = NULL; int ALLOW_SKIP = 0; /* All caps tells Coverity that this is effectively a preproc condition */ bool reset_ignoremacro = false; + struct MuttWindow *root = mutt_window_new(MUTT_WIN_ORIENT_VERTICAL, MUTT_WIN_SIZE_MAXIMISE, MUTT_WIN_SIZE_UNLIMITED, MUTT_WIN_SIZE_UNLIMITED); + root->name = "ssl-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 = "ssl-pager"; + struct MuttWindow *pbar = mutt_window_new(MUTT_WIN_ORIENT_VERTICAL, MUTT_WIN_SIZE_FIXED, 1, MUTT_WIN_SIZE_UNLIMITED); + pbar->name = "ssl-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(); + + struct Menu *menu = mutt_menu_new(MENU_GENERIC); + menu->pagelen = pager->state.rows; + menu->indexwin = pager; + menu->statuswin = pbar; + mutt_menu_push_current(menu); struct Buffer *drow = mutt_buffer_pool_get(); @@ -1041,6 +1063,8 @@ static bool interactive_check_cert(X509 *cert, int idx, size_t len, SSL *ssl, bo mutt_buffer_pool_release(&drow); mutt_menu_pop_current(menu); mutt_menu_free(&menu); + dialog_pop(); + mutt_window_free(&root); mutt_debug(LL_DEBUG2, "done=%d\n", done); return done == 2; }