ほとんどのウィンドウシステムでは、デスクトップメタファーが採用されている。このメタファーの一環として、システムレベルのウィンドウ(例えばEmacsのフレームなど)が、画面面に垂直な仮想的な第3の次元に積み重ねられているという考え方がある。この積み重ねによって生じる順序は全順序であり、通常はスタッキング(またはZ-)順序と呼ばれる。2つのウィンドウの領域が重なる場合、その順序で上位にあるものが、下位にあるものを(部分的に)覆う。
関数 raise-frame と lower-frame を使用することで、フレームをその順序の最上位に上げたり、最下位に下げたりできます。また、関数 frame-restack を使用して、フレームを別のフレームの直上または直下に再配置できます。
以下で説明するすべての関数は、フレーム(およびその他のすべてのウィンドウシステムウィンドウ)がそれぞれのzグループに属するという制約を遵守することに留意してください(位置パラメータを参照)。例えば、通常、フレームをデスクトップウィンドウより下に配置することはできず、またz-groupパラメータがnilであるフレームをウィンドウシステムのタスクバーやツールチップウィンドウより上に配置することもできません。
この関数は、フレーム frame(デフォルト、選択中のフレーム)を、frame と同じかそれより低い z-group に属する他のすべてのフレームよりも上位に配置します。frame が非表示またはアイコン化されている場合、これを表示させます。frame が子フレーム(子フレーム を参照)である場合、frame をその親の他のすべての子フレームよりも上位に配置します。テキスト端末上の子フレーム以外のフレームに対しては、この関数は効果を持ちません。
この関数は、フレーム frame(デフォルト、選択中のフレーム)を、frame と同じまたは上位の z-グループに属する他のすべてのフレームよりも下に移動します。frame が子フレーム(子フレーム を参照)である場合、frame をその親の他のすべての子フレームよりも下に移動します。テキスト端末上の子フレーム以外のフレームに対しては、この関数は効果を持ちません。
この関数は frame1 を frame2
の下に再配置します。これは、両方のフレームが表示されており、かつその表示領域が重なっている場合、frame2 が frame1
を(部分的に)遮ることを意味します。オプションの第3引数 above が nil 以外である場合、この関数は frame1 を frame2
の上に再配置します。これは、両方のフレームが表示されており、かつその表示領域が重なっている場合、frame1 が frame2 を(部分的に)遮ることを意味します。
厳密に言えば、この関数は2つのステップで実行されるアトミックな操作と考えることができる。第1ステップでは、frame1のウィンドウシステムウィンドウをディスプレイから削除する。第2ステップでは、frame1のウィンドウを、frame2のウィンドウの下方(aboveが真の場合は上方)に再び挿入する。したがって、frame1を除く他のすべてのフレームに対する、frame2のディスプレイにおけるZ(スタッキング)順序上の位置は変更されない。
ウィンドウマネージャによっては、ウィンドウの再スタックを拒否する場合があります。この機能はテキスト端末ではまだ実装されていません。
なお、リスタッキングの効果は、対象となるフレームのいずれもアイコン化または非表示にされていない限りのみ有効であることに注意してください。z-group(位置パラメータを参照)フレームパラメータを使用すると、他のフレームの上または下に常時表示されるフレームグループにフレームを追加できます。フレームがこれらのグループのいずれかに属している限り、そのフレームをリスタッキングしても、そのグループ内での相対的なスタック位置にのみ影響します。異なるzグループに属するフレームをリスタッキングした場合の効果は定義されていません。関数frame-list-z-order(すべてのフレームの検索を参照)を使用すると、フレームを現在のスタック順で一覧表示できます。
これが non-nil
の場合、ミニバッファをアクティブにすると、ミニバッファウィンドウが配置されているフレームが引き上げられます。この変数はテキスト端末には影響しません。
ウィンドウシステムでは、フレームパラメータを使用して、自動上昇(フレーム選択時)または自動下降(フレーム選択解除時)を有効にすることもできます。ウィンドウ管理パラメータを参照してください。