From: Masao M. <mu...@hi...> - 2005-03-04 19:30:13
|
むとうです。 On Sat, 05 Mar 2005 04:00:38 +0900 Chikara Takamatsu <c_t...@yb...> wrote: > 高松です。 > なんだか上手く言えなかったんですが、サンプルを実行して > 何が違和感があったのかわかりました。 > > このメソッドはウィンドウがリサイズした際の挙動を変更するようですが > 第一引数でウィジェットをとっていたので、このウィジェットは何?と思ったの > が一つ。 > 「対象のウィジェット」とあるので、ウィジェットごとに何かできるのかなと > ウィジェットを二つ入れて試そうとしたら怒られました。 > (ウィンドウは基本的にウィジェット一つ、でした) > 何で「対象のウィンドウ」ではなくて「対象のウィジェット」なんですか? > 対象のウィンドウの意味ならインスタンスメソッドだから省略できると思うので > すが。 サンプルがボタン一つだったからウインドウと同じ動きをしたと 思いますが、例えば、複雑なレイアウトウィジェット上の1つの子ウィジェット を指定すると、もっとわかりやすいかもしれませんね。その場合は、ウインドウ 自体は動かないかもしれません。 1つ例を出しましょう。 ------------------ require 'gtk2' Gtk.init geometry = Gdk::Geometry.new geometry.set_min_width(100) geometry.set_min_height(100) button1 = Gtk::Button.new("OK") button2 = Gtk::Button.new("Cancel") window = Gtk::Window.new window.add(Gtk::HPaned.new.add(button1).add(button2)) #window.set_geometry_hints(window, geometry, #(1) window.set_geometry_hints(button2, geometry, #(2) Gdk::Window::HINT_MIN_SIZE) window.show_all Gtk.main ------------------ 高松さんは(1)の可能性のみに言及されていると思いますが 上のサンプルで(1),(2)を両方動かしてみて動きの違いを 見てください。 (1)の方ではWindow全体の最小値を指定していて、 (2)の方はCancelボタンの最小値を指定しているので (2)の方がウインドウ全体として見ると小さくなりません。 > もう一つがマスクの存在理由が良く分からなかったことです。 > こんな感じじゃダメなんでしょうか? > > min_size = Gdk::Geometry.new > min_size.set_min_width(100) > min_size.set_min_height(100) > > max_size = Gdk::Geometry.new > max_size.set_max_width(600) > max_size.set_max_height(600) > > resize_inc = Gdk::Geometry.new > resize_inc.set_width_inc(50) > resize_inc.set_height_inc(100) Gdk::Geometryの各デフォルト値はどうするべきでしょうか? 例えば、min_sizeにとってmin_size.max_sizeの結果は0でしょうか。 それとも-1? #今は特に初期化していなくて不定なので、変な値が返りますね。 #実用上は問題ないですけど、これは直さないといけないかな。 > geometry = min_size | max_size | resize_inc # or min_size + max_size + > resize_inc そして、この計算をしたときに、それらのデフォルト値は どう計算するのでしょうか? そういう、曖昧な部分をなくすためにもmaskがあるのは 有効だと思います。まぁ、ポリシーの違いと言えばそれまでですが。 また、maskを使えば、1つのGdk::Geometryで複数の表現を することができます。 #その使い方を推奨するわけではありませんが。 > window.set_geometry_hints(geometry) > > そのままだとGdk::WindowにGdk::Geometryから何か漏れてるような…。 ここはちょっと意味がわかりませんでした。 それでは。 -- .:% Masao Mutoh<mu...@hi...> |