モーダルスタックについて ¶
一部のUIタスクは「モーダルスタック」の概念を持ちます。 これはUIのモーダル状態を制御するための、内部的なデータ構造です。 具体的には下記のタスクが対応しています。
- UI_Form (<modal flag>で指定)
- UI_List (<option flags> の LIST_FLAG_MODAL で指定)
- UI_Control (非モーダル状態のみ)
- UI_DragIcon (非モーダル状態のみ)
モーダルスタック対応のタスクは、起動されると自身を「モーダルスタック」と呼ばれるスタック形式のデータに積み上げます。 また、非表示にされたり破棄されるなど、画面上から取り除かれる際に取り除かれます。
この時、モーダルスタックに積まれているすべてのタスクは下記の法則により影響を受けます。
- タスクがモーダルであるか否かを問わず、上記の種類のタスクはすべてモーダルスタックに積まれます。
- モーダルスタックに積まれたタスクが「モーダル」であるならば、自分より下に積まれているタスクの操作をすべて禁止します。
- タスクが取り除かれた時、そのタスクがモーダルスタック中で最も上に積まれているモーダルのタスク(その上に何もないか、あってもすべてモーダルではない場合)であれば、その下から次のモーダルであるタスクにぶつかるまで、操作が許可された状態に戻します。
- 自身がモーダルスタックの途中にあるときに取り除かれた場合は、特に他のタスクの状態を変更しません。
モーダルスタックに積まれるタイミングは、
- タスクを生成したとき
- 表示状態をvisibleに変更したとき
取り除かれるタイミングは、
- タスクを破棄したとき
- 表示状態をinvisible に変更したとき
となります。
モーダルスタックに積まれる順番は表示上のプライオリティと関係なく、 「積まれるアクションを行った順」であることに注意してください。