Jun Mukai
mukai****@jmuk*****
2005年 2月 8日 (火) 21:21:26 JST
向井です。 > 日本語入力をオンにしたままだと赤バックになるようです。 あーなるほど。 scim-skk がなんで大丈夫だったのかはよくわからないのですが、 uim や scim-anthy で試してみたところ、確かに再現しました。 uim-skk だと l や Ctrl-j などのモード変更キーを押すだけで白に戻りますね。 ちょっと見ていて気付いたのですが、 Enter の入力は cb_find_keyword の方 を呼ぶことになります。ここから先の挙動はたぶん変換エンジンに依存すると 思うのですが、変換エンジンの側で key-release-event を補足していて風博 士側には渡されないようになっており、 cb_find_key_release が呼ばれてい なかったのが原因ではないかと思います。 なので、 cb_find_keyword の方にも同種の修正を施してみて、scim-anthy、 uim-skk、uim-anthy(ただしscim-uim経由)でテストしてみたところ、正しく 「全部空白にして Enter」すると背景が白に戻るという動作になりました。 ついでに、過去の修正の場合、文字列が空白の場合にも検索をしてしまうのが ちょっとださいと思ったので、検索前に文字列のチェックをするように変更し てみました。 パッチを添付します。 ところで見つからなかった時の色ですが、確かに真っ赤なのはちょっとどぎつ いかな、と思います、私も。 -------------- next part -------------- --- kz-window.c.orig 2005-02-08 21:01:31.165611392 +0900 +++ kz-window.c 2005-02-08 20:57:44.120127552 +0900 @@ -2450,14 +2450,17 @@ const gchar *text = gtk_entry_get_text(GTK_ENTRY(widget)); gboolean back = gtk_toggle_button_get_active(toggle); - kz->priv->did_find = kz_embed_find(embed, text, back); - if(text && *text) + if (!text || !(*text)) { - if(kz->priv->did_find) - search_found(widget, kz); - else - search_not_found(widget, kz); + search_found(widget, kz); + return; } + + kz->priv->did_find = kz_embed_find(embed, text, back); + if(kz->priv->did_find) + search_found(widget, kz); + else + search_not_found(widget, kz); } static gboolean @@ -2472,6 +2475,11 @@ embed = KZ_EMBED(KZ_WINDOW_CURRENT_PAGE(kz)); toggle = GTK_TOGGLE_BUTTON(kz->find_direction); text = gtk_entry_get_text(GTK_ENTRY(widget)); + if (!text || !(*text)) + { + search_found(widget,kz); + return FALSE; + } if (event->keyval == GDK_Return || event->keyval == GDK_ISO_Enter) { @@ -2494,17 +2502,10 @@ } } - if(text && *text) - { - if(kz->priv->did_find) - search_found(widget, kz); - else - search_not_found(widget, kz); - } + if(kz->priv->did_find) + search_found(widget, kz); else - { - search_found(widget,kz); - } + search_not_found(widget, kz); return FALSE; }