diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c
index af66fe15260b57ae75f726217eaaf184125dd988..f6d6e9931efdc350aa52fcbb218a235e3c00e536 100644
--- a/src/uifc/uifc32.c
+++ b/src/uifc/uifc32.c
@@ -558,6 +558,8 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
 				width=j;
 		}
 	}
+	if(!(mode&WIN_NOBRDR) && api->mode&UIFC_MOUSE && bline&BL_HELP && width<8)
+		width=8;
 	if(width>(s_right+1)-s_left) {
 		width=(s_right+1)-s_left;
 		if(title_len>(width-hbrdrsize-2)) {
@@ -663,13 +665,16 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
 				*(ptr++)=api->lclr|(api->bclr<<4);
 				*(ptr++)=']';
 				*(ptr++)=api->hclr|(api->bclr<<4);
-				*(ptr++)='[';
-				*(ptr++)=api->hclr|(api->bclr<<4);
-				*(ptr++)='?';
-				*(ptr++)=api->lclr|(api->bclr<<4);
-				*(ptr++)=']';
-				*(ptr++)=api->hclr|(api->bclr<<4);
-				i=6;
+				i=3;
+				if(bline&BL_HELP) {
+					*(ptr++)='[';
+					*(ptr++)=api->hclr|(api->bclr<<4);
+					*(ptr++)='?';
+					*(ptr++)=api->lclr|(api->bclr<<4);
+					*(ptr++)=']';
+					*(ptr++)=api->hclr|(api->bclr<<4);
+					i+=3;
+				}
 				api->buttony=s_top+top;
 				api->exitstart=s_left+left+1;
 				api->exitend=s_left+left+3;
@@ -1537,6 +1542,7 @@ int uinput(int mode, int left, int top, char *inprompt, char *str,
 	int height=3;
 	int i,plen,slen,j;
 	int	iwidth;
+	int l;
 	char *prompt;
 	int s_top=SCRN_TOP;
 	int s_left=SCRN_LEFT;
@@ -1567,8 +1573,8 @@ int uinput(int mode, int left, int top, char *inprompt, char *str,
 		height=1;
 	}
 
-	plen=strlen(inprompt);
-	prompt=strdup(inprompt);
+	prompt=strdup(inprompt==NULL ? "":inprompt);
+	plen=strlen(prompt);
 	if(!plen)
 		slen=2+hbrdrsize;
 	else
@@ -1608,24 +1614,29 @@ int uinput(int mode, int left, int top, char *inprompt, char *str,
 			in_win[i++]=api->hclr|(api->bclr<<4);
 		}
 		if(api->mode&UIFC_MOUSE && width>6) {
-			in_win[2]='[';
-			in_win[3]=api->hclr|(api->bclr<<4);
+			j=2;
+			in_win[j++]='[';
+			in_win[j++]=api->hclr|(api->bclr<<4);
 			/* in_win[4]='�'; */
-			in_win[4]=0xfe;
-			in_win[5]=api->lclr|(api->bclr<<4);
-			in_win[6]=']';
-			in_win[7]=api->hclr|(api->bclr<<4);
-			in_win[8]='[';
-			in_win[9]=api->hclr|(api->bclr<<4);
-			in_win[10]='?';
-			in_win[11]=api->lclr|(api->bclr<<4);
-			in_win[12]=']';
-			in_win[13]=api->hclr|(api->bclr<<4);
+			in_win[j++]=0xfe;
+			in_win[j++]=api->lclr|(api->bclr<<4);
+			in_win[j++]=']';
+			in_win[j++]=api->hclr|(api->bclr<<4);
+			l=3;
+			if(api->helpbuf!=NULL || api->helpixbfile[0]!=0) {
+				in_win[j++]='[';
+				in_win[j++]=api->hclr|(api->bclr<<4);
+				in_win[j++]='?';
+				in_win[j++]=api->lclr|(api->bclr<<4);
+				in_win[j++]=']';
+				in_win[j++]=api->hclr|(api->bclr<<4);
+				l+=3;
+			}
 			api->buttony=s_top+top;
 			api->exitstart=s_left+left+1;
 			api->exitend=s_left+left+3;
 			api->helpstart=s_left+left+4;
-			api->helpend=s_left+left+6;
+			api->helpend=s_left+left+l;
 		}
 
 		in_win[i++]='�';