summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2009-10-20 09:47:52 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2009-10-20 09:47:52 +0800
commit7f74e222a4968ca9113a988b2ad378114a8e1324 (patch)
treec5da843320662cbea143df141ba0c758e4d9c194
parentba9b863d630b3e160918e21d0a809a84ef6c3a63 (diff)
downloadpttbbs-7f74e222a4968ca9113a988b2ad378114a8e1324.tar
pttbbs-7f74e222a4968ca9113a988b2ad378114a8e1324.tar.gz
pttbbs-7f74e222a4968ca9113a988b2ad378114a8e1324.tar.bz2
pttbbs-7f74e222a4968ca9113a988b2ad378114a8e1324.tar.lz
pttbbs-7f74e222a4968ca9113a988b2ad378114a8e1324.tar.xz
pttbbs-7f74e222a4968ca9113a988b2ad378114a8e1324.tar.zst
pttbbs-7f74e222a4968ca9113a988b2ad378114a8e1324.zip
* add missing page_dirty (cleartobot)
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@4941 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/mbbsd/name.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/pttbbs/mbbsd/name.c b/pttbbs/mbbsd/name.c
index 8ed2138b..2706569d 100644
--- a/pttbbs/mbbsd/name.c
+++ b/pttbbs/mbbsd/name.c
@@ -237,7 +237,7 @@ gnc_complete(char *data, int *start, int *end,
typedef struct {
int start, end, nmemb, ptr;
int morelist;
- int clearbot; // YEA if screen was dirty
+ int page_dirty; // YEA if screen was dirty and needs a clrtobot().
gnc_comp_func compar;
gnc_perm_func permission;
gnc_getname_func getname;
@@ -250,9 +250,10 @@ gnc_cb_data(int key, VGET_RUNTIME *prt, void *instance)
char *data = prt->buf;
int ret = VGETCB_NEXT; // reject by default
int i;
- gc_int->morelist = -1;
- assert(prt->icurr+1 < prt->len);
+ assert(prt->icurr+1 < prt->len); // verify size
+ assert(prt->icurr == prt->iend); // verify cursor position
+ gc_int->morelist = -1;
// try to add character
data[prt->icurr] = key;
data[prt->icurr+1]= 0;
@@ -271,6 +272,8 @@ gnc_cb_data(int key, VGET_RUNTIME *prt, void *instance)
return ret;
}
+#define GNC_PAGE_START_Y (2)
+
static int
gnc_cb_peek(int key, VGET_RUNTIME *prt, void *instance)
{
@@ -311,8 +314,8 @@ gnc_cb_peek(int key, VGET_RUNTIME *prt, void *instance)
return VGETCB_NEXT;
// rendef list
- gc_int->clearbot = YEA;
- move(2, 0);
+ gc_int->page_dirty = YEA;
+ move(GNC_PAGE_START_Y, 0);
clrtobot();
printdash(COMPLETE_LIST_TITLE, 0);
{
@@ -348,7 +351,7 @@ generalnamecomplete(const char *prompt, char *data, int len, size_t nmemb,
.end = nmemb-1,
.nmemb = nmemb,
.morelist = -1,
- .clearbot = NA,
+ .page_dirty = NA,
.compar = compar,
.permission = permission,
.getname = getname,
@@ -365,6 +368,10 @@ generalnamecomplete(const char *prompt, char *data, int len, size_t nmemb,
// init vector
ret = vgetstring(data, len, VGET_NO_NAV_EDIT, NULL, &vcb, &gc_int);
outc('\n');
+ if (gc_int.page_dirty) {
+ move(GNC_PAGE_START_Y, 0);
+ clrtobot();
+ }
// vgetstring() return string length, but namecomplete needs to return
// the index of input string.