From: Masao M. <mu...@hi...> - 2003-07-04 19:31:15
|
むとうです。 On Sat, 5 Jul 2003 02:54:27 +0900 "Tadashi Saito" <sh...@ma...> wrote: > Ruby/GTK2を勉強中の、斎藤と申します。 > すごい些細なものなんで迷ったのですが、一応報告させて下さい。 > > サンプルのSimple Text Editorで、redoがおかしい感じがします。 > 入力→undo→入力→redoで、最初の入力が出てきてしまいます。 > > redoは「undoのundo」なので、 > 「ユーザからの文字入力があった」=「直前の動作がundoでない」 > 時点で、redoできなくなるべきではないでしょうか。 ありがとうございます。 些細だなんてとんでもないです。助かりました。 さっそくWebsiteの方を反映させていただきました。 > ところで上と直接の関係はないのですが、むとうさんや他の方々は > どのようにGTK2を勉強されているのでしょうか。 > たとえば、自分はGtkTextBufferの"begin-user-action"シグナルの意味を > 知るためにリファレンスをのぞいてみましたが、説明はさっぱりありません。 > やっぱりソースが一番、ということでしょうか。 種明かしをしますと、Undo/Redoの部分はgeditのコードを参考にしました。 #の割には今回のようなバグがあったりするのがイケテナイのですが(^^;)。 参考にできそうなものがない場合はGTK+自体のコードを読むこともあります。 でも、実は、シグナル周りって実際体感できるんですよね。 以下のようなサンプルを使ってみて、しばらくして気になるシグナルを 適宜指定するようにすることが多いですね。 案外、ソース見るより早いですし確実ですよ;)。 ----- require 'gtk2' Gtk.init tv = Gtk::TextView.new Gtk::TextBuffer.signals(false).each do |v| p v tv.buffer.signal_connect(v) do p "#{v} is occured." end end Gtk::Window.new.set_default_size(100, 100).add(tv).show_all Gtk.main ---- 蛇足ですが、GObject#signalsの仕様はinstance_methodsなんかに 合わせて変更する予定です。 なので、ここでは明示的にinherited_too = falseを指定してます。 trueにすると親クラスをたどっていきます。 それでは。 -- .:% Masao Mutoh<mu...@hi...> |