diff --git a/src/uifc/filepick.c b/src/uifc/filepick.c index 389a3fd10c77ce1c158874a70eb71a4665164cd6..dfd1f2a648c7dfc7f78736e5c3455105532d893b 100644 --- a/src/uifc/filepick.c +++ b/src/uifc/filepick.c @@ -315,6 +315,7 @@ int filepick(uifcapi_t *api, char *title, struct file_pick *fp, char *dir, char listwidth-=3; listwidth/=2; /* Draw the file picker itself... */ + hold_update = TRUE; drawfpwindow(api); /* Display the title centered */ i=strlen(title); @@ -323,6 +324,7 @@ int filepick(uifcapi_t *api, char *title, struct file_pick *fp, char *dir, char api->printf(SCRN_LEFT+2, SCRN_TOP+1, api->hclr|(api->bclr<<4), "%*s%-*s", (width-i)/2-2, "", i, title); api->printf(SCRN_LEFT+2, SCRN_TOP+height-3, api->hclr|(api->bclr<<4), "Mask: "); while(!finished) { + hold_update = TRUE; api->printf(SCRN_LEFT+8, SCRN_TOP+height-3, api->lclr|(api->bclr<<4), "%-*s", width-7, cmsk); tmppath=strdup(cpath); if(tmppath != NULL) @@ -353,6 +355,7 @@ int filepick(uifcapi_t *api, char *title, struct file_pick *fp, char *dir, char retval=-1; goto cleanup; } + hold_update=FALSE; api->msg("Cannot read directory!"); SAFECOPY(cpath, lastpath); FREE_AND_NULL(lastpath); @@ -369,6 +372,7 @@ int filepick(uifcapi_t *api, char *title, struct file_pick *fp, char *dir, char reread=FALSE; dircur=dirbar=filecur=filebar=0; while(!reread) { + hold_update=TRUE; display_current_path(api, cfile); api->lbclr=api->lclr|(api->bclr<<4); api->list(WIN_NOBRDR|WIN_FIXEDHEIGHT|WIN_IMM|WIN_REDRAW,1,3,listwidth,&dircur,&dirbar,NULL,dir_list); @@ -376,6 +380,7 @@ int filepick(uifcapi_t *api, char *title, struct file_pick *fp, char *dir, char api->lbclr=lbclr; lastfield=currfield; fieldmove=0; + hold_update = FALSE; switch(currfield) { case DIR_LIST: i=api->list(WIN_NOBRDR|WIN_FIXEDHEIGHT|WIN_EXTKEYS|WIN_UNGETMOUSE,1,3,listwidth,&dircur,&dirbar,NULL,dir_list); @@ -461,7 +466,8 @@ int filepick(uifcapi_t *api, char *title, struct file_pick *fp, char *dir, char } sprintf(cfile,"%s%s%s%s",drive,tdir,fname,ext); if(strchr(fname,'*') !=NULL || strchr(fname,'?') !=NULL - || strchr(ext,'*') !=NULL || strchr(ext,'?') !=NULL) { + || strchr(ext,'*') !=NULL || strchr(ext,'?') !=NULL + || !isdir(cfile)) { if(opts & UIFC_FP_MSKNOCHG) { sprintf(cfile,"%s%s%s",drive,tdir,cmsk); FREE_AND_NULL(tmplastpath);