kzkの日記: KDE on qt-immodule patch with quiminputcontextplugin 3
日記 by
kzk
タイトル長ぇ。
という訳でDaisukeパッチを適応したqt上でKDEをビルドしてみた。
世界で3-4人目かな(わら
最初「KDEアプリ上で入力出来ねー!やう゛ぇー!」とか思ったのだが、puntiumさんに解決法を教えて貰った。
一行足してリビルドしたら入力できるようになりました。
入力する度に俺のコードが動いてるんだと思うと結構快感だったりする。
候補ウィンドウもQtで実装されている上にKDE/Qtと同じフォントが使われてて見た目の違和感が少ない。
なんか凄く良いんですけど。。。
自分で書いといて感動するのもなんだけど、まぢにいいです。。。
「#kde-jp @irc.freenode.net」で談義中
--------
このバグはどうやらuim-primeの問題だった模様(uim-anthyだと発生しない)
どれのバグだろうか?
* qt-immodule for uim
* uim
* prime
でもuim-anthyでもごく稀に発生する気がしてならないのは気のせいでは無いです(滝汗
--------
QUimInputContext::pushback_cbにおいて
+if(!strcmp(str,""))
-if(!strcmp(str,"") || !(attr & (UPeAttr_Cursor | UPeAttr_Separator)))
とするとうまく行くっぽい。
てか後の条件は何を除いてて、それを除くと何がまずいのかが未だ掴めない。
名無し論理式 (スコア:2, 興味深い)
if(!strcmp(str,"")
&& !(attr & (UPreeditAttr_Cursor | UPreeditAttr_Separator)))
return;
意味はカーソルでも文節セパレータでもないのに空な文字列をrejectするというものです。どっからそんな文字列が渡ってくるのか忘れましたが、rejectしておかないと文節セパレータだけが連続して|こんな|||感じに|表示|されちゃう|場合があるので入れました。
やっぱ何を意図した式なのか意味的な名前を付けないと他人には伝わらないですね。
if (plain_null_str) return;
とか?
Re:名無し論理式 (スコア:1)
ちょっとYamakenさんがレスくれたら嬉しいなーと期待しました(^^;
色々いぢっている過程で"&&"が"||"になってしまっていた様です。
ただ、"||"でも"&&"でも動かないんですけどね。。。
このレスは if(!strcmp(str, "")) の状態で入力していますが、|こんな||風に||表示|されるような事は起こっていません。
この状態でしばらく様子を見てみようかと思っています。
しかしその様な空文字列がどこから送られて来るんでしょうかねぇ。。。
意味的な名前というと、先日は”rk"というのが何の略か?という質問をyusukeさんにしてしまいました。
実は"pushback"っていう語の意味合いも良く分かっていなかったりします(^^;
こういうのはどんどん指摘していった方が後から来る人の為には良かったりするんでしょうかね?
Re:名無し論理式 (スコア:1)
明日になったらちょっと見てみます。
今日はザウルスいじりの日と勝手に決めてるんで。
||が発生する条件はそのコードを入れた時点では明確に把握してたはずなんですけど、これもコメント残しとかないと忘れちゃいますね。
pushbackはSTLのpush_backから取ったんじゃないかと思うんですけど、真実はyusukeさんのみぞ知るです。名前の由来なんかはソース中にどんどんコメントとして入れちゃった方がいいんじゃないですかね。