LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1592|回复: 7

fcitx的bug?

[复制链接]
发表于 2006-6-13 22:49:30 | 显示全部楼层 |阅读模式
如果输入方案设置为只使用双拼,你会发现实际上输入法用的是拼音输入方案。尽管主窗口显示的是双拼输入。不知是不是bug。
发表于 2006-6-13 23:43:44 | 显示全部楼层
如果是这样……那肯定是BUG了,我看看……
谢谢!
回复 支持 反对

使用道具 举报

发表于 2006-6-14 09:52:04 | 显示全部楼层
以前我就发现,要使用双拼,必须在config文件里面这样设置:
  1. [输入法]
  2. 使用拼音=1
  3. 使用双拼=1
复制代码
如果 使用拼音=0 ,那么即使 使用双拼=1 也用不了双拼。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-14 09:58:17 | 显示全部楼层
Post by windrose
以前我就发现,要使用双拼,必须在config文件里面这样设置:

  1. [输入法]
  2. 使用拼音=1
  3. 使用双拼=1
复制代码

如果 使用拼音=0 ,那么即使 使用双拼=1 也用不了双拼。

不错,是这样的。
回复 支持 反对

使用道具 举报

发表于 2006-6-14 19:35:19 | 显示全部楼层
呵呵,那肯定就是我的错,不过应该不难改……
回复 支持 反对

使用道具 举报

发表于 2006-6-14 23:20:40 | 显示全部楼层
但在逻辑上我觉得配置文件本身没有问题,“使用拼音”应该是“使用双拼”的前提,正确的做法应该是当 使用拼音=0 时,拼音输入也用不了。
回复 支持 反对

使用道具 举报

发表于 2006-6-14 23:37:45 | 显示全部楼层
嗯,逻辑上是的,不过本意并不是这样的,呵呵……
已经修正这个问题了……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-9 08:45:53 | 显示全部楼层
这个bug  Yuking曾经修正过,不过我发现现在又重现了,因为Yuking放弃fcitx开发了,我就自己试着写了个patch,还有那个iIMCount += 4我看不出有什么必要,就去掉了。
with fcitx-3.5-20070713
  1. diff -Naur fcitx-3.5/src/ime.c fcitx-3.5-new/src/ime.c
  2. --- fcitx-3.5/src/ime.c 2007-07-05 20:57:16.000000000 +0800
  3. +++ fcitx-3.5-new/src/ime.c     2007-11-09 08:26:12.000000000 +0800
  4. @@ -1035,16 +1035,21 @@
  5.      DrawMainWindow ();
  6. -    if (iIMCount == 1)
  7. +    if (iIMCount == 1 && im[iIMIndex].ACTIVE_D)
  8.         return;
  9.      if (index != (INT8) - 2) {
  10.         if (im[iLastIM].Destroy)
  11.             im[iLastIM].Destroy ();
  12. +       im[iLastIM].ACTIVE_D = False;
  13.         if (im[iIMIndex].Init)
  14.             im[iIMIndex].Init ();
  15. +       im[iIMIndex].ACTIVE_D = True;
  16.      }
  17. +    if (iIMCount == 1)
  18. +           return;
  19. +
  20.      ResetInput ();
  21.      XUnmapWindow (dpy, inputWindow);
  22. @@ -1077,6 +1082,7 @@
  23.      im[iIMCount].PhraseTips = PhraseTips;
  24.      im[iIMCount].Init = Init;
  25.      im[iIMCount].Destroy = Destroy;
  26. +    im[iIMCount].ACTIVE_D = False;
  27.      iIMCount++;
  28. }
  29. @@ -1121,9 +1127,10 @@
  30.      if (!iIMCount)
  31.         iIMCount = 1;
  32. -    iIMCount += 4;
  33. +/*    iIMCount += 4;  for what? */
  34.      im = (IM *) malloc (sizeof (IM) * iIMCount);
  35. +    memset(im, 0, sizeof(IM) * iIMCount);
  36.      iIMCount = 0;
  37.      /*
  38. diff -Naur fcitx-3.5/src/ime.h fcitx-3.5-new/src/ime.h
  39. --- fcitx-3.5/src/ime.h 2007-05-28 12:18:59.000000000 +0800
  40. +++ fcitx-3.5-new/src/ime.h     2007-11-09 08:21:11.000000000 +0800
  41. @@ -97,6 +97,7 @@
  42.                      Bool (*PhraseTips) (void);
  43.      void            (*Init) (void);
  44.      void            (*Destroy) (void);
  45. +    Bool           ACTIVE_D;
  46. } IM;
  47. typedef int     HOTKEYS;
复制代码
因为我只是看了部分fcitx的源码,因此这个patch可能问题多多。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表