|
在俺的系统中(Debian Sid, Gnome),候选窗口会遮住正在输入的那一行的光标位置右边的一部分字符。如果候选字窗口在下方则遮住下面一小半,如果候选字窗口在文字的上方则遮住上面一小半。
相关的代码位于ime.c,如下:- INT8 iOffsetY = 12;
- .
- .
- .
- if (iTempInputWindowY < 0)
- iTempInputWindowY = 0;
- else if ((iTempInputWindowY + iInputWindowHeight + iOffsetY) > DisplayHeight (dpy, iScreen))
- iTempInputWindowY = DisplayHeight (dpy, iScreen) - 2 * iInputWindowHeight;
- else
- iTempInputWindowY += iOffsetY;
复制代码 其中,- iTempInputWindowY = DisplayHeight (dpy, iScreen) - 2 * iInputWindowHeight;
复制代码 直接改为- iTempInputWindowY -= iInputWindowHeight;
复制代码 之后,遮住上小半部分字的问题解决了。
把改为后,在一般情况下,遮住下小半部分的问题也改善了。[color="Red"]注意:俺使用的字体大小是12,不是16。但是还是会遮住一点点。而且遮住多少与字体大小有关系,字体大就遮得多。俺想,iOffsetY这个变量一定不能是一个固定值,[color="Red"]要设置为当前字体的高度才可以避免这个问题。
但是,就算是按以上方式解决了一般情况下的候选字窗口遮住当前行的问题,还是有一个问题。在“一般情况”下iTempInputWindowY的值是当前行的上边界,但俺发现在OpenOffice中,iTempInputWindowY是当前行的下边界!所以在OpenOffice中,下半部分是遮不住的,但是上半部分则可能完全把光标右边的字给遮住了。也不知道是哪里的问题。
以上情况完全在Debian Sid官方软件包情况下测试的,希望老大有办法解决。 |
|