Author Archives: csslayer
Fcitx 4.2.1
fcitx 4.2.1 Changes related to API: 1. Cleanup Unused macro and API 2. Some new FcitxInputState series API for get the origin key event for frontend. 3. Portable with custom path, hide two path related API that may break portable. … Continue reading
为什么Gtk程序总爱给我找麻烦
http://code.google.com/p/fcitx/issues/detail?id=528 这是起因,当然铺垫还有很多,我就懒得说了。 Glib 使用 C 实现 signal 的一个缺陷。具体来讲就是这么回事,在glib里面,很多时候处理signal,为了通用,以及能够使用同一个函数作为signal_connect,于是所有的函数指针都会转化为 (void*)(G_CALLBACK) g_signal_connect(context->slave, “commit”, G_CALLBACK(_slave_commit_cb), context); 那么问题在于,缺少对 callback 函数的合法性验证,可能会出现各种潜在的问题。在不是有意为之的前提下,程序员仍然会更容易犯错误。 拿pidgin里面的一个问题举例,pidgin的状态输入框,不知道有没有人注意到,在里面用backspace和输入法是很不正常的,会同时删掉输入法这边和pidgin里面两个字符。 为什么?明显是一个按键事件被搞了两次。 我的一个朋友花了一些时间去debug这个问题: Finally I traced it down to the problem. 我本来是看见这么一行: g_signal_connect(G_OBJECT(gtkconv->entry), “key-release-event”, G_CALLBACK(gtk_conv_key_press_cb), NULL); 去掉就没事了。 这个函数如下: static void … Continue reading
M17N & Mozc
Compiling Mozc is a really just as hard as Chromimum, so I don’t recommend to try it now, I haven’t finished doing all the build system related work for Mozc. fcitx-m17n is quite a lot simple, just use the regular … Continue reading