KIHARA Hideto
deton****@m1*****
2004年 1月 2日 (金) 14:36:37 JST
tutcode.scmのproperty対応パッチを送ります。 uim-0.2.0でモード表示用メニューが削除されたので、 uim-helper-toolbar-gtkでモード表示をするためです。 ところで、uim-helper-toolbar-gtkのボタンを押して モードを変えようとしても何も起こらないので、 uim-helper.cのsend massage(原文ママ)のコメントアウトを外して見たところ、 prop-listで渡した文字列が送られておらず、 "浅"のような文字列が送られていました。 どうもコールバック関数activate_event()が呼ばれた時点で 既に壊れているようなので、 以下のようにstrdup()するようにしてみたところ問題なさそうでした。 ただ、(glibやgtkは使ったことがないので、こういう場合の定石がわからず)、 どこでfree()すればいいか困ったので、 buttonにg_object_set_data()するようにしてみました。 diff -ur uim-0.2.2.orig/helper/helper-toolbar-common-gtk.c uim-0.2.2/helper/helper-toolbar-common-gtk.c --- uim-0.2.2.orig/helper/helper-toolbar-common-gtk.c Wed Dec 17 06:13:39 2003 +++ uim-0.2.2/helper/helper-toolbar-common-gtk.c Fri Jan 2 13:16:16 2004 @@ -61,7 +61,7 @@ helper_applet_prop_list_update(gchar **tmp) { GtkItemFactory *mode_item_fact = NULL; /* quiet gcc */ - GtkWidget *button; + GtkWidget *button = NULL; int i = 0; gchar **tmp2 = NULL; gchar *charset = NULL; @@ -110,11 +110,16 @@ gtk_item_factory_set_translate_func(mode_item_fact, translate, NULL, NULL); gtk_widget_show(button); } else if(strcmp("leaf", tmp2[0]) == 0) { + gchar *message; GtkItemFactoryEntry entry = {NULL, NULL, G_CALLBACK(activate_event), 0, ""}; path = g_string_new(""); g_string_printf(path, "/%s", tmp2[2]); entry.path = path->str; - gtk_item_factory_create_item ( mode_item_fact, &entry, tmp2[4], 1); + /* コールバックされた側では壊れてるようなのでstrdup()する */ + message = g_strdup(tmp2[4]); + /* messageがfree()されるようにするため */ + g_object_set_data_full(G_OBJECT(button), message, message, g_free); + gtk_item_factory_create_item ( mode_item_fact, &entry, message, 1); g_string_free(path, TRUE); } g_strfreev(tmp2); -- 木原 英人 / KIHARA, Hideto / deton****@m1***** http://www1.interq.or.jp/~deton/ -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: uim-0.2.2-tutcode-prop.patch.gz 型: application/x-gunzip サイズ: 1355 バイト 説明: 無し Descargar