[Anthy-dev 687] Re: focus context, skk.scm

Back to archive index

Etsushi Kato ekato****@ees*****
2004年 3月 20日 (土) 10:47:46 JST


こんにちは。

On Sat, Mar 20, 2004 at 02:34:19AM +0900,
TOKUNAGA Hiroyuki <tkng****@xem*****> wrote:

> On Fri, 19 Mar 2004 00:40:40 +0900
> Etsushi Kato <ekato****@ees*****> wrote:
> 
> > 前者は、skk.scm の skk-prop-handler の修正と、半角カナもラベルに表示す
> > るようにしたものです。また skk-commit-newline-explicitly はデフォルト
> > で true のほうが良い思うので変えてあります。
> 
>  これに関しては私はどうなっているのかわかってないので、とりあえず#fのま
> まにしておきました。ヤマケンさんの意見が知りたいです。

▽にほんご

の状態で Enter キーを押した場合、im-uim なら #t でも #f でも期待どおり
の挙動 (「にほんご」とその場で確定されて、カーソルは次の行に移る)を
するのですが、uim-xim の場合、例えば rxvt 上で vim を使っている場合、
#f であると、確定された「にほんご」が次の行に来て、カーソルがその後ろ
に位置してしまいます。また、#f の場合、確定したつもりの文字が消えてし
まうこともあったのですが、ちょっと今は再現できません。#t なら期待どお
りの挙動です。

> > 後者は、uim-xim と im-uim のフォーカスコンテキストを修正したものです。
> > uim-0.3.2 に対するパッチなので、すでに修正が入っている部分も含んでいる
> > かと思います。
> 
> 
> immoduleに対するパッチなのですが、
> 
> -    } else if(strncmp("focus_in", str, 8) == 0) {
> -      /*      focused_context = NULL; */
> +    } else if (strncmp("focus_in", str, 8) == 0) {
> +      focused_context = NULL;
> 
>  ここでfocused_context = NULLがコメントアウトしてあるのはxfwm4のバグ対
> 策だったりします。xfwm4はalt+tabでフォーカスを移動させた場合にバグがあっ
> て、このコメントアウトを外すとうまく動きません。
> 
>  これがmetacityに同じようなバグがあるとかならこのバグ対策は絶対に外せな
> いと思うのですが、xfwmのようなマイナーWMへの対策なので、どうするべきかは
> 得失次第だと思います。ここのコメントアウトを外すことで具体的にどのような
> バグが解決できるのか、もう少し詳しく説明していただけますか?

まずウィンドウマネージャーは metacity 2.6.3 を使っています。

im-uim についてですが、focus_out() のときに focused_context = NULL し
てしまうと、applet を使ってモードを変えようとしたときに 
focused_context が NULL になってしまい、結局 applet によるモードの変更
ができませんでした。そのため、この部分は除きました (uim-xim も 
focusOut() では、mFocusedContext を NULL にはしていないようです)。この
状態だと、最後にフォーカスしたウィンドウに focused context が残るので、
applet によるモードの変更が確実になります。

しかしこの状態では、im-uim と uim-xim がそれぞれ focusedContext を残し
てしまっているので、applet によって uim のモードを変更すると、im-uim 
と uim-xim のそれぞれの最後にフォーカスされたウィンドウの 2つの uim モー
ドが変ってしまいます。これではちょっと気持悪いので、画面上で一番最後に
フォーカスされたウィンドウのみ applet によって変更できるようにしたつも
りです。

つまり、im-uim では im_uim_parse_helper_str() において、
focused_context がある場合、"focus_in" を helper から伝えられた場合に 
focused_context = NULL すれば問題なくなります。uim-xim にも同様に 
helper_str_parse() において "focus_in" を受けとった場合、もし 
focusedContext が有れば NULL にしました。


-- 
Etsushi Kato
ekato****@ees*****



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