From 83db21790e6de0285462a849430b0f8121fd4de0 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Mon, 20 Sep 2004 04:44:42 +0000 Subject: [PATCH] Attemtp to make at least one char of the imput box visible... fixes corruption on ridiculously long input prompts. --- src/uifc/uifc32.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c index d458c31185..73d8562928 100644 --- a/src/uifc/uifc32.c +++ b/src/uifc/uifc32.c @@ -1375,7 +1375,7 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar /*************************************************************************/ /* This function is a windowed input string input routine. */ /*************************************************************************/ -int uinput(int mode, int left, int top, char *prompt, char *str, +int uinput(int mode, int left, int top, char *inprompt, char *str, int max, int kmode) { unsigned char save_buf[2048],in_win[2048] @@ -1384,9 +1384,11 @@ int uinput(int mode, int left, int top, char *prompt, char *str, int height=3; int i,plen,slen,j; int iwidth; + char *prompt; reset_dynamic(); - plen=strlen(prompt); + plen=strlen(inprompt); + prompt=strdup(inprompt); if(!plen) slen=4; else @@ -1406,6 +1408,16 @@ int uinput(int mode, int left, int top, char *prompt, char *str, gettext(SCRN_LEFT+left,SCRN_TOP+top,SCRN_LEFT+left+width+1 ,SCRN_TOP+top+height,save_buf); iwidth=width-plen-slen; + while(iwidth<1 && plen>4) { + plen=strlen(prompt); + prompt[plen-1]=0; + prompt[plen-2]='.'; + prompt[plen-3]='.'; + prompt[plen-4]='.'; + plen--; + iwidth=width-plen-slen; + } + i=0; in_win[i++]='�'; in_win[i++]=hclr|(bclr<<4); @@ -1495,6 +1507,7 @@ int uinput(int mode, int left, int top, char *prompt, char *str, if(mode&WIN_SAV) puttext(SCRN_LEFT+left,SCRN_TOP+top,SCRN_LEFT+left+width+1 ,SCRN_TOP+top+height,save_buf); + free(prompt); return(i); } -- GitLab