Etsushi Kato
ekato****@ees*****
2004年 3月 21日 (日) 00:16:12 JST
もう一つ focused context がおかしくなる例がありました。また XIM 関連で 申し訳ないのですが、OpenOffice を使っているときにフォーカスをそのウィ ンドウから一旦外したあと、元のウィンドウに戻すと、applet のラベルが変 更されません。Tgif での文字入力中でも同様な症状です。 これらのアプリケーションでは、ウィンドウからフォーカスを外しても、 XIM_UNSET_IC_FOCUS が生じないようで、そのため XimIC::unsetFocus() も呼 ばれず mIsActive が true のままになります。その後、そのウィンドウにフォー カスを戻すと XIM_SET_IC_FOCUS が呼ばれ、XimIC::setFocus() が動きますが、 mIsActive が true なので、ラベルなどがアップデートされません。 ということで、mIsActive でも setFocus() で focusIn() と mConvdisp->set_focus() を呼ぶべきかなと思います。 とりあえず少しはましになるといった程度の hack ですが、このあたりは難 しそうですね… --- ximic.cpp.orig 2004-02-26 02:17:21.000000000 +0900 +++ ximic.cpp 2004-03-20 23:59:12.000000000 +0900 @@ -362,12 +362,11 @@ void XimIC::setFocus() { - if (mIsActive) { - return ; + if (!mIsActive) { + nrActiveIC ++; } current_ic = this; mIsActive = true; - nrActiveIC ++; ui_update_ic_stat(); ui_update_input_mode(m_kkContext->getMode()); m_kkContext->focusIn(); -- Etsushi Kato ekato****@ees*****