"Window の破棄"
通常、Window は有効な状態にあります。Window が有効な場合、 Window.destroy-requested?、 Window.destroy-observed? および Window.destroy-handled? ゲッターは false を返します。
Window.destroy メソッドが呼び出されると、オペレーティング システムにウィンドウを破棄するように要求し、Window.destroy-requested? ゲッターは true になります。
Window が破棄されたことをオペレーティング システムが確認すると、Window.destroy-observed? ゲッターは true になります。
Window.destroy-observed? は、Window.destroy-requested? が true でなくても true になる場合があります。これは下位のオペレーティング システムで Window が破棄されたことを示します。通常は Window の親が破棄されたためにこのようになります。
Window.destroy-requested? または Window.destroy-observed? が true の場合または Window.destroy-handled? が false の場合、Window でのメソッドの呼び出し、セッターおよびゲッターは有効ですがこれを無視することができます。ゲッターは適正な (ただし有用ではないかもしれない) 値を返します。
イベント ループが開始すると、Curl は DestroyWindowEvent をその Window に送って破棄を知らせます。このイベントを処理した直後に Window.destroy-handled? ゲッターは true になります。この時点で、ほとんどのメソッド、セッターおよびゲッターを Window 上で呼び出すことはできなくなります。次の点に注目してください。
- Window.destroy-requested?、Window.destroy-observed? および Window.destroy-handled? ゲッターを呼び出すことは常に正当です。
- Window.destroy-handled? が ture の場合、Window.destroy-observed? は常に true です。
- DestroyWindowEvent は、必ず Window に送られる最後のイベントになります。
- Window.destroy を何度も呼び出すことはできません。