[ruby-list:41651] Re: MacOS X Aqua 対応のための tcltklib の extconf.rb

From: Hidetoshi NAGAI <nagai@...>
Date: 2005-12-04 03:52:12 UTC
List: ruby-list #41651
永井@知能.九工大です.

再度のテストをありがとうございます.

From: 天野 竜太郎 <wn9r-amn@asahi-net.or.jp>
Subject: [ruby-list:41650] Re: MacOS X Aqua 対応のための tcltklib の extconf.rb
Date: Sun, 4 Dec 2005 12:06:09 +0900
Message-ID: <04DDA44A-A82E-4C8B-B63E-916601BAAB62@asahi-net.or.jp>
> > Tk.root.raise.set_focus(true) とすると
> > 状況が変化したりしますか?
> 残念ながら変化なしです。

そうですか...
そうなると残念ながら Ruby/Tk 側ではどうしようもなくて,
Tcl/TkAqua 側に頑張ってもらうしかなさそうです.

> ターミナルから、 ruby widgetとしてその後問題のメッセージ 
> ボックスを出すと前面から
> メッセージボックス、widget,ターミナルとなりますが、固まっ 
> た状態ではwidgetウィンドウも固まります。
> この状態でターミナルを最前面に持ってきてその後ターミナルを動かす 
> とメッセージボックスやwidgetは再描画されます。

再描画されるならイベントループは生きているということになります.
widgetウィンドウは実は固まっているというわけではなく,
メッセージボックス (あるいは他のウィジェット) に grab が
設定されているために操作が禁止されているだけのはずです.

固まった状態ではメッセージボックスのボタン操作ができないのですよね?
となると,問題は2度目に表示した際になぜ不適切に grab が設定された
状態になってしまうのかということになりそうです.

以前のメールで
-----------------------------------------------------------------
From: 天野 竜太郎 <wn9r-amn@asahi-net.or.jp>
Subject: [ruby-list:41637] Re: MacOS X Aqua 対応のための tcltklib の extconf.rb
Date: Fri, 2 Dec 2005 21:25:22 +0900
Message-ID: <2CD5B3C8-8E17-44CB-9359-618C73FA8B99@asahi-net.or.jp>
> abortretryignoreに変えて「メッセージボックス」ボタンを押すとダイ 
> アログが出てきてここで固まります。
> これはアイコンや種類を別のものに変えても同じく固まります。
> また最初の段階ですぐにinfoやokを別のものに変えて 
> 「メーセージボックス」を押すと、最初のダイアログが出てきて、 
> OKを押して確認のダイアログウィンドウが出てきた時点で固まります。
> あと出てくるアイコンがそれにふさわしいものになるのだと思うのです 
> が、なっていません。
-----------------------------------------------------------------
という話がでていたので,古いダイアログウィンドウの消去が
適切に行えていなくて悪さをしているのかもしれないですね.

このあたりの筋でもう少し調べてみます.

> またMacでは各ウィンドウの左側に左端から、閉じるボタン、最 
> 小化ボタン(ウィンドウをDockに格納)、最大化ボタンがありま 
> すが、固まった状態でもメッセージボックスの最小化ボタンは機能しま 
> す。他の二つのボタンは機能しません。

メッセージボックスでは WM_DELETE_WINDOW プロトコルを無視しています.
そのため,閉じるボタンが無視されているのは正常です.

最大化ボタンについてはわかりません.
固まっていない状態では最大化ボタンは機能しているのでしょうか?
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai@ai.kyutech.ac.jp

In This Thread