[Canna-dev 292] duplicate the preedit strings by delete

Back to archive index

Akira TAGOH at****@gclab*****
2004年 3月 4日 (木) 22:42:38 JST


たごうです.

http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=117140
このようなバグが報告されたのですが,どのように修正すべきかい
まいちよく分からないので,質問させてください.

簡単に現象を説明します.
bugzillaに報告された問題はbreak-into-romanをtに設定していて,
かつ子音を重ねることで,「っ」を出力するケースで問題が起きる
ようです.

どこが問題なのかを探ってみたところ,一番最初の削除によってロー
マ字へ戻されるまではいいのですが,その後の削除で,直前の
kAttrの値にHENKANSUMIが入っててもSENTOUがないため,
kanaReplace()のみが呼ばれています.これによってkRStartp,
kCurs, kEndpとrStartp, rCurs, rEndpの間に矛盾が生じます.そ
して,何か入力され,再びgeneralFlagsにCANNA_YOMI_BREAK_ROMAN
が入り,romajiReplace()が呼ばれ,その後のkanaReplace()でこの
矛盾によって,rCurs - rStartp分だけ重複してしまうようです.

ここまでは,すべて lib/canna/romaji.c KanaDeletePrevious()の
中で起こっている問題ですが,

* KanaDeletePrevious()のCANNA_YOMI_BREAK_ROMANが設定されてい
  なかった場合の処理がおかしい

のか

* kAttrに設定されているフラグがおかしい

のか,見当がつきません.
これはどうあるべきなのでしょうか?

--
Akira TAGOH  : tagoh****@gnome*****  / Japan GNOME Users Group
at****@gclab***** : tagoh****@gnome***** / GNOME-DB Project
             : tagoh****@redha*****   / Red Hat, Inc.
             : tagoh****@debia*****   / Debian Project



Canna-dev メーリングリストの案内
Back to archive index