いがらしです。

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)