[讨论] getyx_ansi好像没考虑roll的影响

楼主: x4base (RU~)   2012-04-12 17:09:27
screen.c里
GetCurrentLine里用了roll来决定应该取big_picture的第几项
screenline_t* GetCurrentLine(){
register int i = cur_ln + roll;
if(i >= scr_lns)
i %= scr_lns;
return &big_picture[i];
}
但相较之下getyx_ansi就没有
142 getyx_ansi(int *py, int *px)
143 {
146 int y = cur_ln, x = cur_col;
159 slp = &big_picture[y];
164 *px -= (strlen((char*)slp->data)
- strlen_noansi((char*)slp->data));
这样似乎会造成slp设错行的情形
164行的那个计算也会出错
而导致最后的px是错的
造成的影响是文章读到一半(roll不为0时)再推文时光标的位置会怪怪的
因为用了别行的长度来判断位置
参考GetCurrentLine的算法
我把
159 slp = &big_picture[y];
改成
slp = &big_picture[(y+roll)%scr_lns];
目前好像蛮正常的
不知道有没有副作用

Links booklink

Contact Us: admin [ a t ] ucptt.com