From: Hiroshi IGARASHI Date: 1999-10-17T08:36:21+09:00 Subject: [ruby-list:17766] Re: gtk texthook.rb いがらしです。 At Sat, 16 Oct 1999 22:40:08 +0900, in [ruby-list:17755] gtk texthook.rb, akaishi@ruby.freak.ne.jp wrote: > > Ruby/Gtk についてくる sample/texthook.rb は、入力した小文字を大文字に変 > 換してテキストウィジェットに挿入するというものですが、このプログラムを実 > 行して > > a を入力して、カーソルを左に戻して b を入力する > > とすると、BA と表示されるはずが AB となってしまいます。どうもスクリプト > 中から insert する場合のカーソル位置と、キーボードから入力する場合のカー > ソル位置がずれているように見えるのですが、これを回避する方法はないでしょ > うか? いままでぜんぜん気づきませんでした…… 挿入位置がGtk::Editable#get_lengthになっているので、 テキスト末尾に文字が入ってしまいますね。 以下のようにGtk::Editable#positionを使えば正しい位置に 挿入されるのですが、このメソッド、まだ定義していませんでした;-< 次のリリースには入れておきます。 diff -u -r1.1.1.1 texthook.rb --- sample/texthook.rb 1999/08/25 03:21:39 1.1.1.1 +++ sample/texthook.rb 1999/10/16 14:54:43 @@ -14,7 +14,7 @@ if widget.editable? if event.length == 1 and ?a <= event.keyval and event.keyval <= ?z widget.delete_selection() - widget.insert_text(event.string.capitalize, widget.get_length) + widget.insert_text(event.string.capitalize, widget.position) widget.signal_emit_stop("key_press_event") ret = true -- 五十嵐 宏 (Hiroshi IGARASHI)