From e0a055f18ab797025d83fb542982f99e4348208e Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Sat, 17 Apr 2021 14:32:31 -0700
Subject: [PATCH] Support WIN_ORG and WIN_BOT modes in uifc.input

---
 src/uifc/uifc32.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c
index 2b003e3af4..bcde2329b0 100644
--- a/src/uifc/uifc32.c
+++ b/src/uifc/uifc32.c
@@ -1849,6 +1849,7 @@ int uinput(int mode, int left, int top, char *inprompt, char *str,
 	int s_top=SCRN_TOP;
 	int s_left=SCRN_LEFT;
 	int s_right=SCRN_RIGHT;
+	int s_bottom=api->scrn_len-3;
 	int hbrdrsize=2;
 	int tbrdrwidth=1;
 
@@ -1877,6 +1878,8 @@ int uinput(int mode, int left, int top, char *inprompt, char *str,
 		width=(s_right-s_left+1);
 	if(mode&WIN_T2B)
 		top=(api->scrn_len-height+1)/2-2;
+	else if(mode&WIN_BOT)
+		top=s_bottom-height-top;
 	if(mode&WIN_L2R)
 		left=(s_right-s_left-width+1)/2;
 	if(left<=-(s_left))
@@ -1886,6 +1889,19 @@ int uinput(int mode, int left, int top, char *inprompt, char *str,
 	if(mode&WIN_SAV)
 		vmem_gettext(s_left+left,s_top+top,s_left+left+width+1
 			,s_top+top+height,save_buf);
+	if(mode&WIN_ORG) { /* Clear around menu */
+		if(top)
+			vmem_puttext(1,2,api->scrn_width,s_top+top-1,blk_scrn);
+		if((unsigned)(s_top+height+top)<=api->scrn_len)
+			vmem_puttext(1,s_top+height+top,api->scrn_width,api->scrn_len,blk_scrn);
+		if(left)
+			vmem_puttext(1,s_top+top,s_left+left-1,s_top+height+top
+				,blk_scrn);
+		if(s_left+left+width<=s_right)
+			vmem_puttext(s_left+left+width,s_top+top,/* s_right+2 */api->scrn_width
+				,s_top+height+top,blk_scrn);
+	}
+
 	iwidth=width-plen-slen;
 	while(iwidth<1 && plen>4) {
 		plen=strlen(prompt);
-- 
GitLab