最初に作ったWindowを閉じると終了してしまう

以下のスクリプトを実行すると、ウィンドウが一瞬表示されてもすぐに吉里吉里が終了してしまいます。吉里吉里ではメインウィンドウ(最初に作ったウィンドウ)が無効化されると自動的に終了する仕組みになっているからです。
この場合は先に作成したtemporaryWindowが無効化されているため終了してしまいます。

var temporaryWindow = new Window();
invalidate temporaryWindow;

var mainWindow = new Window();
mainWindow.visible = true;

System.exitOnWindowCloseをfalseにしておけばメインウィンドウが無効化されても終了しなくなります。なので以下のようにすればtemporaryWindowが無効化されても吉里吉里が終了しないようにできます。

// temporaryWindowが無効化されても吉里吉里が終了しないようにする
System.exitOnWindowClose = false;

var temporaryWindow = new Window();
invalidate temporaryWindow;

// mainWindowが無効化されたら吉里吉里が終了するようにtrueに戻しておく
System.exitOnWindowClose = true;

var mainWindow = new Window();
mainWindow.visible = true;

mainWindowが作成される時点で他のウィンドウがないので、mainWindowが新しいメインウィンドウとして機能します。よってSystem.exitOnWindowCloseをtrueに戻しておけば、mainWindowが無効化されたときに吉里吉里も終了するようになります。
falseのままだとウィンドウが全て消えても吉里吉里自体は起動したまま、ということになってしまうので戻しておくのが安全です。

実際に表示して使用するウィンドウを作成する前に、別の用途で一時的にウィンドウを使う場合などに便利だと思います。ちょっとウィンドウ作成したら勝手に終了するようになったので、この辺を覚えていないと微妙に詰まりました。

ちなみにですが、ウィンドウオブジェクトは右上の閉じるボタンやWindow.closeなどで閉じると自動的に無効化されるようです。無効化せず非表示にしたいだけの場合はWindow.visibleの方を使います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です