发信人: karaoke()
整理人: microant(1999-11-30 11:50:00), 站内信件
|
FireBird 2.66M 增加了一个新功能,就是用^Z可以把以前的信息调回来回,
这样一些暂时不想回的信息就可以放心的忽略过去,等有空了再^Z回来,功能很好
但是有一个小bug,就是你用^Z回以前的信息时(不是接到信息立即回时)如果再接
到一个新的信息,回完这个信息,再把刚才的信息写完发出后,屏幕顶端两行的内容
不会消失,毛病虽小,但总是不爽.
我估计肯定是保存屏幕内容和恢复屏幕内容的程序做的有些问题,导致只有
一次保存的缓冲,两次则后面的覆盖前面的,恢复时自然就错了,看了看源码,果然
如此.一下给出解决方法:
screen.c:中 saveline函数 修改为:
saveline(line, mode) /* 0,2 : save, 1,3 : restore, 4,6:save, 5,7:rest ore */
int line, mode;
{
register struct screenline *bp = big_picture ;
static char tmp[4][256]; /* modified by douglas 981210 ^Z problem */
int x,y;
switch (mode) {
case 0: case 2: case 4: case 6:
strncpy(tmp[mode/2], bp[line].data, LINELEN);
tmp[mode/2][bp[line].len]='\0';
break;
case 1: case 3: case 5: case 7:
getyx(&x,&y);
move(line,0);
clrtoeol();
refresh();
prints("%s",tmp[(mode-1)/2]);
move(x,y);
refresh();
}
}
---------------
sendmsg.c 中r_msg2() 函数中:
.
.
.
if (RMSG == NA)
{
saveline(line, 0); -> saveline(line, 4);
saveline(line+1,2); -> saveline(line+1,6);
}
.
.
.
break;
}
saveline(line, 1); -> saveline(line, 5);
saveline(line+1,3); -> saveline(line+1,7);
-- Oooo 风吹云起
oooO ( ) 一切无踪
( ) )/ 记得的往往竟是该忘的
\( (_) 一个眼神
(_) ~ 一句话语
~ ~~~~~~~~~乡巴佬
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.133.148]
|
|