とみたです。

At Sun, 06 Feb 2000 14:18:02 +0900,
Hiroshi IGARASHI <igarashi / ueda.info.waseda.ac.jp> wrote:

> ただ将来pointerの値を変更したいという要望が出てきたら、
> 何か方法を考えなくてはいけませんが。

その時が来たら考えましょう (^^;

私は Gtk の API 自体がもうちょっと変わった方がいいと思ってます。

今の "insert-text" シグナルハンドラの API はなんか中途半端だと思うんです。
文字列の中身を変更できるんだけど、あらかじめ渡された文字列長以上にはでき
ないというのが…。

# たしかにやる方法はあるけど、なんかコテコテって感じで美しくない。
# だからといって改善案があるわけではないんだけど…(^^;


> > ぜんぜん、ダメでした (^^; なんで当時 OK だと思ったのかわかりません。今回
> > 確認するまでずっと OK だと思ってました…(^^;; このパッチを適用すれば道が
> > ひらけます。

> ???
> このパッチではpositionの変更はできませんよね。
> 挿入されるtextの変更だけですむようになったのでしょうか?

はい。どうやら Gtk は text を最大 length 文字の '\0' で終わる文字列と解
釈するようです(少なくとも insert-text シグナルのデフォルトハンドラでは)。
私のやりたかったことは入力された文字列を削るだけですんで、適当なところに 
'\0' を突っ込むだけで実現できました (^^)


> # [ruby-ext:00789]のやすしさんの案も結構いいかなと思えてきました。

今気が付いたんですけど、gtk_editable_insert_text() の position も 
in/out パラメータなんですね。Ruby/Gtk の Gtk::Editable::insert_text() は
どうやってるのかと思ったら、戻り値で position を返してるんですね
(gtk_editable_insert_text() の戻り値は void)。

もし "insert-text" シグナルハンドラの引数を変更するんなら、
Gtk::Editable::insert_text() の引数もこれに合わせた方がいいと思います。

--
とみたまさひろ <tommy / tmtm.org>