(57)【要約】【課題】ウィンドウスタックの制御において、最前面でウィンドウを表示中のアプリケーションのウィンドウ表示に、他のアプリケーションが不用意に影響を及ぼす事の無いウィンドウスタック制御方法を提供することを目的とする。【解決手段】コンピュータから表示装置に複数のウィンドウを表示する際のウィンドウの重ね合わせを管理するウィンドウスタックを制御するに際し、アプリケーションプログラムがウィンドウにグループを指定し、ウィンドウ管理プログラムがウィンドウのスタック順をグループ毎に一連とする。【選択図】  図１
2004310655.tif 000002
【特許請求の範囲】
【請求項１】
表示装置に複数のウィンドウを表示する際のウィンドウの重ね合わせを管理するウィンドウスタック制御方法であって、
１つ以上のウィンドウを前記表示装置に表示する１つ以上のアプリケーションプログラムと、
前記１つ以上のアプリケーションプログラムが表示するウィンドウの重ね合わせを管理するウィンドウ管理プログラムとを備え、
前記アプリケーションプログラムが前記ウィンドウ管理プログラムに対してウィンドウのグループを指定し、前記ウィンドウ管理プログラムが、前記アプリケーションプログラムからウィンドウの表示要求を受け、該ウィンドウの表示を行う際に、該ウィンドウのスタック順をグループ毎に一連とする制御を行うことを特徴とするウィンドウスタック制御方法。
【請求項２】
ウィンドウ管理プログラムは、グループ毎に纏めていない第１のウィンドウの表示要求をアプリケーションプログラムから受け取った際に、グループ毎に纏めていない全ウィンドウから、前記第１のウィンドウと同じグループに属する第１のウィンドウ群を、前記第１のウィンドウ群の中でのスタック順関係は保持したまま、既にグループ毎に纏められた前記第１のウィンドウと同じグループに属する第２のウィンドウ群とスタック順を一連にし表示処理を行うことを特徴とする請求項１に記載のウィンドウスタック制御方法。
【請求項３】
ウィンドウ管理プログラムは、グループ毎に代表ウィンドウを１枚生成し、ウィンドウのスタック順をグループ毎に一連とする際に、前記ウィンドウを前記代表ウィンドウの子ウィンドウとする事を特徴とする請求項１または２に記載のウィンドウスタック制御方法。
【請求項４】
ウィンドウ管理プログラムは、アプリケーションプログラムからの要求を受けて、グループ内でウィンドウスタックの最上位移動、最下位移動を行うことを特徴とする請求項１から３のいずれかに記載のウィンドウスタック制御方法。
【請求項５】
ウィンドウ管理プログラムは、アプリケーションプログラムからの要求を受けて、グループ単位でウィンドウスタックの最上位移動、最下位移動を行うことを特徴とする請求項１から３のいずれかに記載のウィンドウスタック制御方法。
【請求項６】
ウィンドウ管理プログラムは、第１のウィンドウ又は第１のグループに対するスタック変更要求をアプリケーションプログラムから受け取った際に、グループ毎に纏めていない全ウィンドウから、前記第１のウィンドウと同じグループ又は前記第１のグループに属する第１のウィンドウ群を、前記第１のウィンドウ群の中でのスタック順関係は保持したまま、既にグループ毎に纏められた前記第１のウィンドウと同じグループ又は前記第１のグループに属する第２のウィンドウ群とスタック順を一連にしてスタック変更を行うことを特徴とする請求項４または５に記載のウィンドウスタック制御方法。
【請求項７】
ウィンドウ管理プログラムは、アプリケーションプログラムによって指定されたウィンドウをグループに属させず、グループに属して表示された全てのウィンドウより常にスタック上位に位置させることを特徴とする請求項１に記載のウィンドウスタック制御方法。
【請求項８】
ウィンドウ管理プログラムは、最上位グループに属するウィンドウよりスタック下位のウィンドウを常に非表示状態とすることを特徴とする請求項１に記載のウィンドウスタック制御方法。
【請求項９】
ウィンドウ管理プログラムは、最上位グループに属するウィンドウの中のスタック最下位のウィンドウの直下に、特定のウィンドウを位置させることを特徴とする請求項１に記載のウィンドウスタック制御方法。
【請求項１０】
ウィンドウ管理プログラムは、Ｘウィンドウシステムとウィンドウマネージャとを備え、最上位グループの直上に特定のウィンドウを位置させることを特徴とする請求項４または５に記載のウィンドウスタック制御方法。
【請求項１１】
ウィンドウ管理プログラムは、Ｘウィンドウシステムとウィンドウマネージャとを備え、ウィンドウマネージャが、ウィンドウ破棄通知受信時に、ウィンドウシステム間とでスタック認識の整合性を確認し、異なっている場合は、ウィンドウシステムのスタック認識をウィンドウマネージャのスタック認識にあわせ込む処理を行うことを特徴とする請求項１から３のいずれかに記載のウィンドウスタック制御方法。
【請求項１２】
ウィンドウ管理プログラムは、Ｘウィンドウシステムとウィンドウマネージャとを備え、ウィンドウマネージャが、ウィンドウシステムにスタック変更を要求する際にフラグを立てる一方で、ウィンドウ破棄通知受信時に、前記フラグが立っている時のみ、ウィンドウシステム間とでスタック認識の整合性を確認し、異なっている場合は、ウィンドウシステムのスタック認識をウィンドウマネージャのスタック認識にあわせ込む処理を行い、前記フラグを下げることを特徴とする請求項１から３のいずれかに記載のウィンドウスタック制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータから表示装置に複数のウィンドウを表示する際のウィンドウの重ね合わせを管理するウィンドウスタック制御方法に関する。
【０００２】
【従来の技術】
近年、表示装置に複数のウィンドウを表示するコンピュータとして、ワークステーションや家庭用コンピュータが広く普及している。これらの場合、ユーザは、表示装置として比較的大きな画面に複数のウィンドウを表示して、マウスとキーボードを使ってウィンドウの重なりの上下関係であるスタック順の操作を行うのが一般的である。
【０００３】
例えば、Ｕｎｉｘ（Ｒ）ワークステーションで広く普及しているＸ１１ウィンドウシステムの場合、ウィンドウの重なりの上下関係であるスタック順は、ウィンドウの生成時にスタック最上位に位置付けられ、マップされた後は、マウスやアプリケーションの操作によって、スタック位置を上下方向に移動させる。
【０００４】
具体例として、コンピュータ上で動作する３種類のアプリケーションが合計５枚のウィンドウを表示装置であるスクリーンに表示する際の表示例となる模式図を図２８に示す。図２８において、１はＣＲＴモニタや液晶モニタで実現される表示装置のスクリーン、２及び３は第１のアプリケーションが表示するウィンドウ、４及び５は第２のアプリケーションが表示するウィンドウ、６は第３のアプリケーションが表示するウィンドウであり、第１のアプリケーションが表示するウィンドウ２及びウィンドウ３を第１のグループ、第２のアプリケーションが表示するウィンドウ４及びウィンドウ５を第２のグループ、第３のアプリケーションが表示するウィンドウ６を第３のグループとする。
【０００５】
図２８を見ればわかるように、ウィンドウ３はウィンドウ２の上に重なり、ウィンドウ５はウィンドウ４の上に重なっている。この時のウィンドウスタック順の例となる模式図を図２９に示す。図２９を見ればわかるように、ウィンドウ３はウィンドウ２よりスタック上位にあるので、両者が表示上で重なる場合は、ウィンドウ３がウィンドウ２の上に重なる事となり、同様に、ウィンドウ５はウィンドウ４よりスタック上位にあるので、両者が表示上で重なる場合は、ウィンドウ５がウィンドウ４の上に重なって表示される。
【０００６】
そして、このような表示状態、スタック順状態で、第１のアプリケーションが何らかの都合で、例えば、ウィンドウ２をウィンドウ３の前面に表示させたくなった場合、ウィンドウ２をスタック最上位に持ってくる事で対応していた。この時のスタック順の模式図を図３０に示す。図３０を見ればわかるように、ウィンドウ２はウィンドウ３よりスタック上位にあるので、両者が表示上で重なる場合は、ウィンドウ２がウィンドウ３の上に重なって表示されることとなる。また、この操作により、ウィンドウ２が、第２のグループ、第３のグループのウィンドウを跨って、スタック順で下位方向から最上位へ移動した事がわかる。
【０００７】
【特許文献１】
特開昭６２−２９８８８２号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、上記従来のウィンドウスタック制御方法においては、アプリケーションが或るウィンドウに対して、ウィンドウスタック移動、ウィンドウ生成及び表示を行った場合、グループを跨ってスタック制御をするため、意図せず、該ウィンドウが他のアプリケーションの表示するウィンドウの上に重なることがあるという問題があった。
【０００９】
上記課題に鑑み、本発明は、ウィンドウスタックの制御方法において、最前面でウィンドウを表示中のアプリケーションのウィンドウ表示に、他のアプリケーションが不用意に影響を及ぼす事の無いウィンドウスタック制御方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
この課題を解決するために本発明は、表示装置を含むコンピュータにおいて、前記表示装置に複数のウィンドウを表示する際のウィンドウの重ね合わせを管理するウィンドウスタック制御方法であって、アプリケーションプログラムがウィンドウにグループを指定し、ウィンドウ管理プログラムがウィンドウのスタック順をグループ毎に一連とする。
【００１１】
これにより、グループ最上位のウィンドウは、他のグループのウィンドウの下に重ねられて表示される事は無くなり、最前面でウィンドウを表示中のアプリケーションのウィンドウ表示に、他のアプリケーションが不用意に影響を及ぼす事を無くす事ができる。
【００１２】
【発明の実施の形態】
本発明の第１の発明は、表示装置に複数のウィンドウを表示する際のウィンドウの重ね合わせを管理するウィンドウスタック制御方法であって、１つ以上のウィンドウを前記表示装置に表示する１つ以上のアプリケーションプログラムと、前記１つ以上のアプリケーションプログラムが表示するウィンドウの重ね合わせを管理するウィンドウ管理プログラムとを備え、前記アプリケーションプログラムが前記ウィンドウ管理プログラムに対してウィンドウのグループを指定し、前記ウィンドウ管理プログラムが、前記アプリケーションプログラムからウィンドウの表示要求を受け、該ウィンドウの表示を行う際に、該ウィンドウのスタック順をグループ毎に一連とする制御を行うことを特徴とするウィンドウスタック制御方法であり、スタック順がグループ単位で纏められるため、グループ最上位のウィンドウは、他のグループのウィンドウの下に重ねられて表示される事が無い。
【００１３】
また、本発明の第２の発明は、第１の発明において、ウィンドウ管理プログラムは、グループ毎に纏めていない第１のウィンドウの表示要求をアプリケーションプログラムから受け取った際に、グループ毎に纏めていない全ウィンドウから、前記第１のウィンドウと同じグループに属する第１のウィンドウ群を、前記第１のウィンドウ群の中でのスタック順関係は保持したまま、既にグループ毎に纏められた前記第１のウィンドウと同じグループに属する第２のウィンドウ群とスタック順を一連にし表示処理を行うことを特徴とするウィンドウスタック制御方法であり、表示要求によって同一グループ内でみたスタック順が変更されることがないので、アプリケーションの同一グループ内のスタック順管理の負担が軽減される。
【００１４】
また、本発明の第３の発明は、第１の発明又は第２の発明において、ウィンドウ管理プログラムは、グループ毎に代表ウィンドウを１枚生成し、ウィンドウのスタック順をグループ毎に一連とする際に、前記ウィンドウを前記代表ウィンドウの子ウィンドウとする事を特徴とするウィンドウスタック制御方法であり、グループ単位のスタック移動やグループ単位のウィンドウの表示／非表示の切り替えを代表ウィンドウに対する制御で実施できる分、グループ内のウィンドウが多いほど、処理負荷を軽減することができるようになる。
【００１５】
また、本発明の第４の発明は、第１の発明又は第２の発明又は第３の発明において、ウィンドウ管理プログラムは、アプリケーションプログラムからの要求を受けて、グループ内でウィンドウスタックの最上位移動、最下位移動を行うことを特徴とするウィンドウスタック制御方法であり、スタックの操作がグループ内で閉じるので、各アプリケーションプログラムは、他のアプリケーションプログラムのウィンドウ表示を気にする事無くスタック変更を行う事ができる。
【００１６】
また、本発明の第５の発明は、第１の発明又は第２の発明又は第３の発明において、ウィンドウ管理プログラムは、アプリケーションプログラムからの要求を受けて、グループ単位でウィンドウスタックの最上位移動、最下位移動を行うことを特徴とするウィンドウスタック制御方法であり、ウィンドウの操作をグループ指定で実施できるので、例えば、グループをアプリケーションプログラム単位で振り分けた場合だと、そのアプリケーションに属するウィンドウのメンバーを知らなくても、スタック最前面にそのアプリケーションに属する全通常ウィンドウを移動させる事が可能となる。
【００１７】
また、本発明の第６の発明は、第４の発明又は第５の発明において、ウィンドウ管理プログラムは、第１のウィンドウ又は第１のグループに対するスタック変更要求をアプリケーションプログラムから受け取った際に、グループ毎に纏めていない全ウィンドウから、前記第１のウィンドウと同じグループ又は前記第１のグループに属する第１のウィンドウ群を、前記第１のウィンドウ群の中でのスタック順関係は保持したまま、既にグループ毎に纏められた前記第１のウィンドウと同じグループ又は前記第１のグループに属する第２のウィンドウ群とスタック順を一連にしてスタック変更を行うことを特徴とするウィンドウスタック制御方法であって、スタック変更対象となるグループに属する通常ウィンドウ全てを、その中でのスタック順は保持したままで纏めた上でスタック変更を実施するので、アプリケーションプログラムは、自グループのウィンドウのスタック順を把握し易くなる。
【００１８】
また、本発明の第７の発明は、第１の発明において、ウィンドウ管理プログラムは、アプリケーションプログラムによって指定されたウィンドウをグループに属させず、グループに属して表示された全てのウィンドウより常にスタック上位に位置させることを特徴とするウィンドウスタック制御方法であって、グループ単位のスタック順に関係無くウィンドウを表示できるので、最優先で表示するウィンドウのサービスを提供することができる。
【００１９】
また、本発明の第８の発明は、第１の発明において、ウィンドウ管理プログラムは、最上位グループに属するウィンドウよりスタック下位のウィンドウを常に非表示状態とすることを特徴とするウィンドウスタック制御方法であって、最上位グループよりスタック下位のグループが何を表示しようとしても表示装置には表示されないので、最上位グループのウィンドウで覆われない部分に中途半端に映り込む心配が無い。
【００２０】
また、本発明の第９の発明は、第１の発明において、ウィンドウ管理プログラムは、最上位グループに属するウィンドウの中のスタック最下位のウィンドウの直下に、特定のウィンドウを位置させることを特徴とするウィンドウスタック制御方法であって、例えば、前記特定のウィンドウを表示装置のスクリーン一杯に表示しておけば、前記特定のウィンドウのスタック下位のグループが何を表示しようとしても，表示装置に表示されないので、最上位グループのウィンドウで覆われない部分に中途半端に映り込む心配が無い。
【００２１】
また、本発明の第１０の発明は、第４の発明又は第５の発明において、ウィンドウ管理プログラムは、Ｘウィンドウシステムとウィンドウマネージャとを備え、最上位グループの直上に特定のウィンドウを位置させることを特徴とするウィンドウスタック制御方法であって、最上位グループを別のグループに入れ替える際、Ｘウィンドウシステムの場合、ＸＲｅｓｔａｃｋＷｉｎｄｏｗｓ（Ｒ）関数を使用する事となるが、ウィンドウ群のスタック移動先を示すために使用できる。もし、最上位グループのウィンドウよりスタック上位にウィンドウが存在しなかった場合、存在する全てのウィンドウの並び順を決め、前記ＸＲｅｓｔａｃｋＷｉｎｄｏｗｓ（Ｒ）の引数に代入せねばならないが、前記特定のウィンドウがあれば、前記特定のウィンドウと前記ウィンドウ群を引数に代入するだけで済む。
【００２２】
また、本発明の第１１の発明は、第１の発明又は第２の発明又は第３の発明において、ウィンドウ管理プログラムは、Ｘウィンドウシステムとウィンドウマネージャとを備え、ウィンドウマネージャが、ウィンドウ破棄通知受信時に、ウィンドウシステム間とでスタック認識の整合性を確認し、異なっている場合は、ウィンドウシステムのスタック認識をウィンドウマネージャのスタック認識にあわせ込む処理を行うことを特徴とするウィンドウスタック制御方法であって、ウィンドウ破棄通知受信時に整合性確保を図るので、ウィンドウシステムがスタック変更処理に失敗しても、処理が破綻する事がなくなる。
【００２３】
また、本発明の第１２の発明は、第１の発明又は第２の発明又は第３の発明において、ウィンドウ管理プログラムは、Ｘウィンドウシステムとウィンドウマネージャとを備え、ウィンドウマネージャが、ウィンドウシステムにスタック変更を要求する際にフラグを立てる一方で、ウィンドウ破棄通知受信時に、前記フラグが立っている時のみ、ウィンドウシステム間とでスタック認識の整合性を確認し、異なっている場合は、ウィンドウシステムのスタック認識をウィンドウマネージャのスタック認識にあわせ込む処理を行い、前記フラグを下げることを特徴とするウィンドウスタック制御方法であって、ウィンドウマネージャがスタック変更を実施した時のみ、スタック認識の整合性のための処理を行うので、処理の実行頻度を軽減できる。
【００２４】
以下、本発明の実施の形態について、図面を用いて説明する。
【００２５】
（実施の形態１）
本実施の形態では、ウィンドウ管理プログラムが、Ｘウィンドウシステムとウィンドウマネージャから成り、ウィンドウマネージャがルートウィンドウの子ウィンドウであるトップレベルウィンドウのスタック順を制御する場合を例にとって説明する。
【００２６】
図１に本発明の実施の形態１のウィンドウスタック制御方法を実現するシステムの構成例を示す。
【００２７】
図１において、７はコンピュータ、８はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、９は各種プログラムや処理データ等を格納するメモリ、１０は各構成要素に所望の双方向通信を行わせるバス、１１はＣＲＴモニタや液晶モニタといった表示装置、１は表示装置１１のスクリーン、１０１及び１０２，１０３はＣＰＵ８で実行され１枚以上のウィンドウをウィンドウ管理プログラム１０４を介してスクリーン１に表示しようとするアプリケーションプログラム、１０４はＣＰＵ８で実行されアプリケーションプログラムが表示しようとするウィンドウを管理してバス１０を介して表示を行うウィンドウ管理プログラムであり、ウィンドウシステム１２とウィンドウマネージャ１０５から成る、ウィンドウシステム１２は従来のＸウィンドウシステム、１０５はウィンドウマネージャである。
【００２８】
以下、図面を用いて本実施の形態の動作を説明する。
【００２９】
まず、アプリケーションプログラム１０１、１０２、１０３は、ウィンドウ管理プログラム１０４を通じて、スタック制御特性の異なる２種類のトップレベルウィンドウを表示することができるものとし、その２種類を通常ウィンドウ、優先ウィンドウと呼ぶ事とする。両者の違いは、表示された優先ウィンドウは表示された全ての通常ウィンドウより常にスタック上位に表示されることと、通常ウィンドウはグループ単位でスタック順を一連とするが優先ウィンドウでは行わないことである。
【００３０】
アプリケーションプログラム１０１、１０２、１０３は、ウィンドウを表示する場合、ウィンドウシステム１２に対して、ウィンドウ生成要求、ウィンドウ種類及びグループ設定要求、マップ要求を発行する。この内、ウィンドウ種類及びグループ設定要求については、Ｘウィンドウシステムの場合、プロパティ機構を用いる事で、ウィンドウ毎に値を設定することができる。
【００３１】
各ウィンドウは、ウィンドウ生成及びマップという過程を経て初めてスクリーン１に表示されるようになる。
【００３２】
ウィンドウシステム１２は、ウィンドウ生成要求を受け取ると、ウィンドウの重なりであるスタック順の最上位にそのウィンドウを位置させ、ウィンドウマネージャ１０５に対してウィンドウ生成通知イベント（ＣｒｅａｔｅＮｏｔｉｆｙ）を発行する。
【００３３】
ウィンドウマネージャ１０５は、内部データベースとして、ウィンドウ毎にウィンドウ情報を保持する。
【００３４】
（表１）にウィンドウ情報の一例を示す。
【００３５】
【表１】
2004310655.tif 000003
【００３６】
表１に示されるように、ウィンドウ情報は、ウィンドウ識別子、スタック位置確定フラグ、スタック位置情報、プロパティ獲得フラグ、ウィンドウ種類、グループ値から成る。ウィンドウ識別子は、そのウィンドウ情報がどのウィンドウの情報かを示し、スタック位置確定フラグは、そのウィンドウが、ウィンドウマネージャにとって、スタック位置が暫定か確定済みなのかを示し、スタック位置情報は、そのウィンドウのスタック位置を示し、プロパティ獲得フラグは、そのウィンドウのウィンドウ種類とグループ値をウィンドウマネージャが獲得済みかどうかを示し、ウィンドウ種類は、前記プロパティ獲得フラグが獲得済みとなっている場合は、そのウィンドウが優先ウィンドウか通常ウィンドウのどちらであるかを示し、グループ値は、前記プロパティ獲得フラグが獲得済みとなっている場合は、そのウィンドウのグループ値を示す。
【００３７】
図１のウィンドウマネージャ１０５は、ウィンドウ生成通知イベント（ＣｒｅａｔｅＮｏｔｉｆｙ）を受け取ることで、新規にウィンドウが生成された事を知り、そのウィンドウ生成通知イベント（ＣｒｅａｔｅＮｏｔｉｆｙ）からウィンドウ識別子を獲得し、内部データベースに新規にウィンドウ情報格納領域を設け、そのウィンドウ情報のウィンドウ識別子に格納し、また、同ウィンドウのスタック位置確定フラグを暫定に、スタック位置情報をスタック最上位に、プロパティ獲得フラグを未獲得に、各々初期化する。
【００３８】
次に、ウィンドウシステム１２は、ウィンドウ種類及びグループ設定要求を受け取り、該ウィンドウのプロパティとして記憶する。
【００３９】
次に、ウィンドウシステム１２は、アプリケーションプログラム１０１や１０２、１０３からマップ要求を受け取り、内部処理は特にせずに、ウィンドウマネージャ１０５にマップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）を発行する。
【００４０】
マップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）を受け取った際のウィンドウマネージャ１０５の動作例となるフロー図を図２に示す。
【００４１】
図２に示されるように、Ｓ２０１では、該時点で受け取ったマップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）からマップ対象ウィンドウの識別子を獲得して、Ｓ２０２に進む。
【００４２】
Ｓ２０２では、マップ対象ウィンドウの識別子で内部データベースを検索し、対応するウィンドウ情報が存在する場合はＳ２０３へ進み、存在しない場合はＳ２１４へ進む。
【００４３】
Ｓ２０３では、内部データベースで対象ウィンドウのスタック位置確定フラグが確定済みかどうかをチェックし、確定済みの場合はＳ２１３に進み、暫定の場合はＳ２０４に進む。
【００４４】
Ｓ２０４では、対象ウィンドウのプロパティ獲得フラグをチェックし、獲得済みの場合はＳ２０６に進み、未獲得の場合はＳ２０５に進む。
【００４５】
Ｓ２０５では、対象ウィンドウのウィンドウ種類及びグループ値をウィンドウシステムに問い合わせて獲得し、内部データベースに格納し、Ｓ２０６に進む。
【００４６】
Ｓ２０６では、対象ウィンドウのウィンドウ種類をチェックし、優先ウィンドウの場合は、Ｓ２１３に進み、通常ウィンドウの場合は、Ｓ２０７に進む。
【００４７】
Ｓ２０７では、内部データベースに、対象ウィンドウと同じグループ値を持つスタック位置確定フラグが確定済みの通常ウィンドウがあるかどうかをチェックし、有る場合はＳ２０８進み、無い場合はＳ２０９に進む。
【００４８】
Ｓ２０８では、対象ウィンドウが、対象ウィンドウと同じグループ値を持つスタック位置確定フラグが確定済みの通常ウィンドウの内のスタック最上位のウィンドウの直上となるようウィンドウシステム１２にスタック変更要求を発行する。
【００４９】
Ｓ２０８のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図３に示す。
【００５０】
図３に示されるように、通常ウィンドウである対象ウィンドウが、対象ウィンドウと同じグループ値を持つスタック位置確定フラグが確定済みのウィンドウの内のスタック最上位のウィンドウの直上に移されているのが解る。  Ｓ２０９では、内部データベースから、通常ウィンドウ全体を対象にスタック位置確定フラグが確定済みのウィンドウを検索し、存在する場合はＳ２１０に進み、存在しない場合はＳ２１１に進む。
【００５１】
Ｓ２１０では、内部データベースにあるスタック位置確定フラグが確定済みの通常ウィンドウのうち、スタック位置が最上位のウィンドウの直上に対象ウィンドウが位置するよう、ウィンドウシステム１２に対してスタック変更要求を発行し、Ｓ２１２に進む。
【００５２】
Ｓ２１０のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図４に示す。
図４に示されるように、通常ウィンドウである対象ウィンドウが、スタック位置確定フラグが確定済みの通常ウィンドウ全体の内のスタック最上位のウィンドウの直上に移されているのが解る。
【００５３】
Ｓ２１１では、スタック位置の最下位に対象ウィンドウが位置するよう、ウィンドウシステム１２にスタック変更要求を発行し、Ｓ２１２に進む。
【００５４】
Ｓ２１１のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図５に示す。
図５に示されるように、通常ウィンドウである対象ウィンドウが、スタック最下位に移されているのが解る。
【００５５】
Ｓ２１２では、ウィンドウシステム１２に対してマップ対象ウィンドウのマップ要求を発行し、内部データベースの対象ウィンドウのウィンドウ情報の内、スタック位置確定フラグが暫定を示している場合は確定済みに更新し、また、内部データベース全体に対して必要に応じてスタック位置情報を更新した上で、Ｓ２１３に進む。
【００５６】
Ｓ２１３では、処理を終了する。
【００５７】
ウィンドウシステム１２は、図２のＳ２０８やＳ２１０、Ｓ２１１に起因するスタック変更要求をウィンドウマネージャ１０５から受け取り、要求に従ってウィンドウのスタック順を変更する。また、図２のＳ２１２に起因するマップ要求をウィンドウマネージャ１０５から受け取り、要求に従ってウィンドウのマップする。マップされたウィンドウは、ウィンドウの重なり具合にもよるが、他のウィンドウの下に隠れていなければ、スクリーン１に表示されるようになる。
【００５８】
図２の処理によって、アプリケーション１０１、１０２、１０３が生成及びウィンドウ種類及びグループ設定した通常ウィンドウは、表示までに必ず、スタック位置情報が確定済みとなり、また、スタック位置がグループ毎に纏められ、また、優先ウィンドウのスタック上位に表示される事もない。また、優先ウィンドウは、スタック位置が変更されることなく表示される。
【００５９】
図１において、アプリケーションプログラム１０１、１０２、１０３は、生成及びウィンドウ種類及びグループ設定した通常ウィンドウに対して、スタック変更要求として、グループ内スタック最上位移動をウィンドウシステム１２に対して発行する事ができる。Ｘウィンドウシステムの場合、例えば、グループ内スタック最上位移動要求にＸＲａｉｓｅＷｉｎｄｏｗ（）関数を割り当てれば良い。また、優先ウィンドウに対して、スタック変更要求として、優先ウィンドウスタック最上位移動要求をウィンドウシステム１２に対して発行する事ができ、例えば、グループ内スタック最上位移動要求と同じＸＲａｉｓｅＷｉｎｄｏｗ（）関数を割り当てる。
【００６０】
アプリケーションプログラムがＸＲａｉｓｅＷｉｎｄｏｗ（）を実施した場合、ウィンドウシステム１２はスタック変更をせず、ウィンドウマネージャ１０５に対してスタック最上位移動要求イベント（ＣｏｎｆｉｇｕｒｅＲｅｑｕｅｓｔ）を発行する。
【００６１】
スタック最上位移動要求イベントを受け取った際のウィンドウマネージャ１０５の動作例となるフロー図を図６に示す。
【００６２】
図６に示されるように、Ｓ６０１では、該時点で受け取ったスタック最上位移動要求イベント（ＣｏｎｆｉｇｕｒｅＲｅｑｕｅｓｔ）から対象ウィンドウの識別子を獲得して、Ｓ６０２に進む。
【００６３】
Ｓ６０２では、対象ウィンドウの識別子で内部データベースを検索し、対応するデータが存在する場合はＳ６０３へ進み、存在しない場合はＳ６１２へ進む。
【００６４】
Ｓ６０３では、内部データベースにあるプロパティ獲得フラグが未獲得である全ウィンドウについて、ウィンドウシステム１２に対してウィンドウ種類及びグループ値を問い合わせ、獲得できたウィンドウについては、そのウィンドウ種類及びグループ値とプロパティ獲得済みである事を内部データベースに記憶し、Ｓ６０４に進む。
【００６５】
Ｓ６０４では、対象ウィンドウのウィンドウ種類をチェックし、優先ウィンドウであればＳ６０５に進み、通常ウィンドウであればＳ６０６に進む。
【００６６】
Ｓ６０５では、内部データベースからウィンドウ種類が優先ウィンドウであるものの内、スタック最上位のウィンドウを検索し、そのウィンドウが対象ウィンドウ自身であれば、何もせずＳ６１２に進み、そのウィンドウが対象ウィンドウ自身でなければ、そのウィンドウの直上となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ６１２に進む。
【００６７】
Ｓ６０５のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図７に示す。
【００６８】
図７に示されるように、対象ウィンドウのみが優先ウィンドウの中のスタック最上位のウィンドウの直上に移されているのが解る。
Ｓ６０６では、対象ウィンドウと同じグループに属する通常ウィンドウを内部データベースから検索してリストアップし、Ｓ６０７に進む。
【００６９】
Ｓ６０７では、前記リストアップした中にスタック位置確定フラグが確定済みであるウィンドウが存在するならばＳ６０８に進み、存在しないならＳ６０９に進む。
【００７０】
Ｓ６０８では、リストアップした中でスタック位置確定フラグが暫定であるウィンドウがあれば、それら全てを、それらの中でみたスタック順はそのままで、リストアップした中でスタック位置確定フラグが確定済みであるウィンドウの内の最上位のウィンドウの直上に位置させ、更に対象ウィンドウをリストアップしたウィンドウの中で最上位となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、リストアップした中でスタック位置確定フラグが暫定であるウィンドウがあれば確定済みに更新し、また、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ６１０に進む。  Ｓ６０８のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図８に示す。
【００７１】
図８に示されるように、対象ウィンドウと同じグループ値を持つスタック位置確定フラグが暫定のウィンドウが、同じグループ値を持つスタック位置確定フラグが確定済みのウィンドウの直上に移され、同一グループ値を持つウィンドウ全体の中で対象ウィンドウのスタック最上位移動がなされているのが解る。
【００７２】
図６において、Ｓ６０９では、内部データベースにスタック位置確定フラグが確定済みのウィンドウが存在するならばＳ６１０に進み、存在しないならばＳ６１１に進む。
【００７３】
Ｓ６１０では、Ｓ６０６でリストアップした中でスタック位置確定フラグが暫定であるウィンドウ全てを、それらの中でみたスタック順はそのままで、内部データベースの中でスタック位置確定フラグが確定済みであるスタック最上位の通常ウィンドウの直上に位置させ、更に対象ウィンドウを前記リストアップしたウィンドウの中で最上位となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、リストアップしたウィンドウのスタック位置確定フラグを確定済みに更新し、また、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ６１２に進む。
【００７４】
Ｓ６１０のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図９に示す。
【００７５】
図９に示されるように、対象ウィンドウと同じグループ値を持つスタック位置確定フラグが暫定の通常ウィンドウが、スタック位置確定フラグが確定済みの通常ウィンドウ全体のスタック最上位ウィンドウの直上に移され、同一グループ値を持つウィンドウ全体の中で対象ウィンドウのスタック最上位移動がなされているのが解る。
【００７６】
図６において、Ｓ６１１では、Ｓ６０６でリストアップした中でスタック位置確定フラグが暫定であるウィンドウ全てを、それらの中でみたスタック順はそのままで、全体スタックの最下位とし、更に対象ウィンドウをリストアップしたウィンドウの中で最上位となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、リストアップしたウィンドウのスタック位置確定フラグを確定済みに更新し、また、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ６１２に進む。
【００７７】
Ｓ６１１のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図１０に示す。
【００７８】
図１０に示されるように、対象ウィンドウと同じグループ値を持つスタック位置確定フラグが暫定の通常ウィンドウが、スタック最下位に移され、同一グループ値を持つ通常ウィンドウ全体の中で対象ウィンドウのスタック最上位移動がなされているのが解る。
【００７９】
図６において、Ｓ６１２では、処理を終了する。
【００８０】
図１において、アプリケーションプログラム１０１，１０２、１０３は、生成及びウィンドウ種類及びグループ設定したウィンドウに対して、グループ内スタック最下位移動をウィンドウシステム１２に対して発行する事ができる。Ｘウィンドウシステムの場合、例えば、グループ内スタック最下位移動にＸＬｏｗｅｒＷｉｎｄｏｗ（）関数を割り当てれば良い。また、優先ウィンドウに対して、スタック変更要求として、優先ウィンドウスタック最下位移動要求をウィンドウシステム１２に対して発行する事ができ、例えば、グループ内スタック最下位移動要求と同じＸＬｏｗｅｒＷｉｎｄｏｗ（）関数を割り当てる。
【００８１】
アプリケーションプログラムがＸＬｏｗｅｒＷｉｎｄｏｗ（）を実施した場合、ウィンドウシステム１２はスタック変更をせず、ウィンドウマネージャ１０５に対してスタック最下位移動要求イベント（ＣｏｎｆｉｇｕｒｅＲｅｑｕｅｓｔ）を発行する。スタック最下位移動要求イベントを受け取った際のウィンドウマネージャ１０５の動作例となるフロー図を図１１に示す。
【００８２】
図１１に示されるように、Ｓ１１０１では、該時点で受け取ったスタック最下位移動要求イベント（ＣｏｎｆｉｇｕｒｅＲｅｑｕｅｓｔ）から対象ウィンドウの識別子を獲得して、Ｓ１１０２に進む。
【００８３】
Ｓ１１０２では、対象ウィンドウの識別子で内部データベースを検索し、対応するデータが存在する場合はＳ１１０３へ進み、存在しない場合はＳ１１１２へ進む。
【００８４】
Ｓ１１０３では、内部データベースにあるプロパティ獲得フラグが未獲得である全ウィンドウについて、ウィンドウシステム１２に対してウィンドウ種類及びグループ値を問い合わせ、獲得できたウィンドウについては、そのウィンドウ種類及びグループ値とプロパティ獲得済みである事を内部データベースに記憶し、Ｓ１１０４に進む。
【００８５】
Ｓ１１０４では、対象ウィンドウのウィンドウ種類をチェックし、優先ウィンドウの場合はＳ１１０５へ進み、通常ウィンドウの場合はＳ１１０６へ進む。
【００８６】
Ｓ１１０５では、内部データベースからウィンドウ種類が優先ウィンドウであるものの内、スタック最下位のウィンドウを検索し、そのウィンドウが対象ウィンドウ自身であれば、何もせずＳ１１１２へ進み、そのウィンドウが対象ウィンドウ自身でなければ、そのウィンドウの直下となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ１１１２に進む。
【００８７】
Ｓ１１０５のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図１２に示す。
【００８８】
図１２に示されるように、対象ウィンドウのみが優先ウィンドウの中のスタック最下位のウィンドウの直下に移されているのが解る。
【００８９】
図１１において、Ｓ１１０６では、対象ウィンドウと同じグループに属する通常ウィンドウを内部データベースから検索してリストアップし、Ｓ１１０７に進む。
【００９０】
Ｓ１１０７では、前記リストアップした中にスタック位置確定フラグが確定済みであるウィンドウが存在するならばＳ１１０８に進み、存在しないならＳ１１０９に進む。
【００９１】
Ｓ１１０８では、リストアップした中でスタック位置確定フラグが暫定であるウィンドウがあれば、それら全てを、それらの中でみたスタック順はそのままで、リストアップした中でスタック位置確定フラグが確定済みであるウィンドウの内の最上位のウィンドウの直上に位置させ、更に対象ウィンドウをリストアップしたウィンドウの中で最下位となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、リストアップした中でスタック位置確定フラグが暫定であるウィンドウがあれば確定済みに更新し、また、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ１１１２に進む。
【００９２】
Ｓ１１０８のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図１３に示す。図１３に示されるように、対象ウィンドウと同じグループ値を持つスタック位置確定フラグが暫定の通常ウィンドウが、同じグループ値を持つスタック位置確定フラグが確定済みの通常ウィンドウの直上に移され、同一グループ値を持つ通常ウィンドウ全体の中で対象ウィンドウのスタック最下位移動がなされているのが解る。
【００９３】
図１１において、Ｓ１１０９では、内部データベースにスタック位置確定フラグが確定済みの通常ウィンドウが存在するならばＳ１１１０に進み、存在しないならばＳ１１１１に進む。
【００９４】
Ｓ１１１０では、Ｓ１１０６でリストアップした中でスタック位置確定フラグが暫定であるウィンドウ全てを、それらの中でみたスタック順はそのままで、内部データベースの中でスタック位置確定フラグが確定済みであるスタック最上位の通常ウィンドウの直上に位置させ、更に対象ウィンドウを前記リストアップしたウィンドウの中で最下位となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、リストアップしたウィンドウのスタック位置確定フラグを確定済みに更新し、また、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ１１１２に進む。
【００９５】
Ｓ１１１０のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図１４に示す。
【００９６】
図１４に示されるように、対象ウィンドウと同じグループ値を持つスタック位置確定フラグが暫定の通常ウィンドウが、スタック位置確定フラグが確定済みの通常ウィンドウ全体のスタック最上位ウィンドウの直上に移され、同一グループ値を持つウィンドウ全体の中で対象ウィンドウのスタック最上位移動がなされているのが解る。
【００９７】
図１１において、Ｓ１１１１では、Ｓ１１０６でリストアップした中でスタック位置確定フラグが暫定であるウィンドウ全てを、それらの中でみたスタック順はそのままで、全体スタックの最下位とし、更に対象ウィンドウをリストアップしたウィンドウの中で最上位となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、リストアップしたウィンドウのスタック位置確定フラグを確定済みに更新し、また、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ１１１２に進む。
【００９８】
Ｓ１１１１のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図１５に示す。
【００９９】
図１５に示されるように、対象ウィンドウと同じグループ値を持つスタック位置確定フラグが暫定の通常ウィンドウが、スタック最下位に移され、同一グループ値を持つ通常ウィンドウ全体の中で対象ウィンドウのスタック最上位移動がなされているのが解る。
【０１００】
図１１において、Ｓ１１１２では、処理を終了する。
【０１０１】
図１において、アプリケーションプログラム１０１，１０２、１０３は、生成及びウィンドウ種類及びグループ設定した通常ウィンドウに対して、グループ単位スタック最上位移動をウィンドウマネージャ１０５に対して発行する事ができる。Ｘウィンドウシステムの場合、例えば、クライアントメッセージ機構を利用する事で容易に実現できる。今後、クライアントメッセージでウィンドウマネージャ１０５に対して発行するグループ単位スタック最上位移動要求のメッセージの事をグループ単位スタック最上位移動要求メッセージと呼ぶ事とする。そして、このグループ単位スタック最上位移動要求メッセージには、移動したいグループ値が含まれているものとする。
【０１０２】
アプリケーションプログラムがグループ単位スタック最上位移動要求メッセージ（ＣｌｉｅｎｔＭｅｓｓａｇｅ）を発行した場合、ウィンドウシステム１２経由でウィンドウマネージャ１０５に転送される。      グループ単位スタック最上位移動要求メッセージを受け取った際のウィンドウマネージャ１０５の動作例となるフローを図１６に示す。
【０１０３】
図１６に示されるように、Ｓ１６０１では、該時点で受け取ったグループ単位スタック最上位移動要求メッセージ（ＣｌｉｅｎｔＭｅｓｓａｇｅ）から対象グループ値を獲得して、Ｓ１６０２に進む。
【０１０４】
Ｓ１６０２では、内部データベースにあるプロパティ獲得フラグが未獲得である全ウィンドウについて、ウィンドウシステム１２に対してウィンドウ種類及びグループ値を問い合わせ、獲得できたウィンドウについては、そのウィンドウ種類及びグループ値とプロパティ獲得済みである事を内部データベースに記憶し、Ｓ１６０３に進む。
【０１０５】
Ｓ１６０３では、対象グループ値を持つ通常ウィンドウ情報を内部データベースから検索してリストアップし、Ｓ１６０４に進む。
【０１０６】
Ｓ１６０４では、内部データベースにスタック位置確定情報が確定済み且つグループ値情報が対象グループ値とは異なる通常ウィンドウが存在すればＳ１６０５に進み、存在しなければＳ１６０６に進む。
【０１０７】
Ｓ１６０５では、リストアップした中でのスタック順はそのままで、内部データベースの中でスタック位置確定フラグが確定済み且つグループ値情報が対象グループ値とは異なる通常ウィンドウの内でスタック最上位のウィンドウの直上となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、リストアップした中でスタック位置確定フラグが暫定であるウィンドウがあれば確定済みに更新し、また、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ１６０７に進む。
【０１０８】
Ｓ１６０５のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図１７に示す。
【０１０９】
図１７に示されるように、対象グループ値を持つ通常ウィンドウが、スタック位置確定フラグが確定済み且つグループ値情報が対象グループ値とは異なる通常ウィンドウ全体のスタック最上位ウィンドウの直上に移されているのが解る。
【０１１０】
図１６におけるＳ１６０６では、リストアップした中でのスタック順はそのままで、全体スタックの最下位となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、リストアップした中でスタック位置確定フラグが暫定であるウィンドウがあれば確定済みに更新し、また、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ１６０７に進む。
Ｓ１６０６のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図１８に示す。
【０１１１】
図１８に示されるように、対象グループ値を持つ通常ウィンドウが、全体スタックの最下位に移されているのが解る。
【０１１２】
図１６において、Ｓ１６０７では、処理を終了する。
【０１１３】
図１において、アプリケーションプログラム１０１，１０２、１０３は、生成及びウィンドウ種類及びグループ設定した通常ウィンドウに対して、グループ単位スタック最下位移動をウィンドウマネージャ１０５に対して発行する事ができる。Ｘウィンドウシステムの場合、例えば、クライアントメッセージ機構を利用する事で容易に実現できる。今後、クライアントメッセージでウィンドウマネージャ１０５に対して発行するグループ単位スタック最下位移動要求のメッセージの事をグループ単位スタック最下位移動要求メッセージと呼ぶ事とする。そして、このグループ単位スタック最下位移動要求メッセージには、移動したいグループ値が含まれているものとする。
【０１１４】
アプリケーションプログラムがグループ単位スタック最下位移動要求メッセージ（ＣｌｉｅｎｔＭｅｓｓａｇｅ）を発行した場合、ウィンドウシステム１２経由でウィンドウマネージャ１０５に転送される。
【０１１５】
グループ単位スタック最下位移動要求メッセージを受け取った際のウィンドウマネージャ１０５の動作例となるフローを図１９に示す。
【０１１６】
図１９に示されるように、Ｓ１９０１では、該時点で受け取ったグループ単位スタック最下位移動要求メッセージ（ＣｌｉｅｎｔＭｅｓｓａｇｅ）から対象グループ値を獲得して、Ｓ１９０２に進む。
【０１１７】
Ｓ１９０２では、内部データベースにあるプロパティ獲得フラグが未獲得である全ウィンドウについて、ウィンドウシステム１２に対してウィンドウ種類及びグループ値を問い合わせ、獲得できたウィンドウについては、そのウィンドウ種類及びグループ値とプロパティ獲得済みである事を内部データベースに記憶し、Ｓ１９０３に進む。
【０１１８】
Ｓ１９０３では、対象グループ値を持つ通常ウィンドウを内部データベースから検索してリストアップし、Ｓ１９０４に進む。
【０１１９】
Ｓ１９０４では、リストアップした中でのスタック順はそのままで、全体スタックの最下位となるよう、ウィンドウシステム１２にスタック変更要求を発行し、次に、リストアップした中でスタック位置確定フラグが暫定であるウィンドウがあれば確定済みに更新し、また、内部データベース全体に対してスタック位置情報を更新した上で、Ｓ１９０５に進む。
【０１２０】
Ｓ１９０４のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図２０に示す。
【０１２１】
図２０に示されるように、対象グループ値を持つ通常ウィンドウが、全体スタックの最下位に移されているのが解る。
【０１２２】
図１９におけるＳ１９０５では、処理を終了する。
【０１２３】
図１において、アプリケーションプログラム１０１，１０２、１０３は、生成したウィンドウに対して破棄要求を発行する。
【０１２４】
ウィンドウシステム１２は、破棄要求を受け取ると、該当するウィンドウを管理から外して削除する。そして、ウィンドウマネージャ１０５にウィンドウ破棄通知イベント（ＤｅｓｔｒｏｙＮｏｔｉｆｙ）を発行する。
【０１２５】
ウィンドウマネージャ１０５は、ウィンドウ破棄通知イベント（ＤｅｓｔｒｏｙＮｏｔｉｆｙ）を受け取ると、そこからウィンドウ識別子を抽出して、該当するウィンドウ情報を内部データベースから検索し削除した後、内部データベース全体に対して必要に応じてスタック位置を更新し、処理を終了する。
【０１２６】
以上のことにより、各通常ウィンドウはそのウィンドウの表示までに、ウィンドウのスタック順がグループ毎に纏められるので、グループ最上位のウィンドウは、他のグループのウィンドウの下に重ねられて表示される事が無くなる。また、ウィンドウ管理プログラムが、スタック変更要求を受け取る事を切っ掛けにして、スタック変更対象となるグループに属する通常ウィンドウ全てを、その中でのスタック順は保持したままで纏めた上でスタック変更を実施するので、アプリケーションプログラムは、自グループのウィンドウのスタック順を把握し易くなる。また、ウィンドウ管理プログラムにグループ内のスタック最上位移動とグループ内のスタック最下位移動の機能を設ける事で、グループ内で通常ウィンドウのスタック順を操作できるので、各アプリケーションプログラムは、他のアプリケーションプログラムの通常ウィンドウ表示を気にする事無く、スタック変更を行う事ができる。また、ウィンドウ管理プログラムにグループ単位のスタック最上位移動と最下位移動の機能を設ける事で、例えば、グループをアプリケーションプログラム単位で振り分けた場合だと、そのアプリケーションに属するウィンドウのメンバーを知らなくても、スタック最前面にそのアプリケーションに属する全通常ウィンドウを移動させる事が可能となる。また、優先ウィンドウを設ける事で、グループ単位のスタック順に関係無く、最優先で表示するウィンドウのサービスを提供することができる。
【０１２７】
なお、本実施の形態では、ウィンドウマネージャのウィンドウのウィンドウ種類及びグループ値取得のタイミングをマップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）受信時及びスタック変更要求受信時としたが、これに限定されるものではなく、アプリケーションプログラムがウィンドウ種類及びグループ設定をしたタイミングで取得して内部データベースに記憶しておいても良く、その方がむしろ処理効率が良い。更に、このタイミングで、スタック順をグループ毎に纏めても構わない。また、ウィンドウ種類及びグループ値の変更を認めても良いし、認めなくても良い。認める場合は、ウィンドウ種類及びグループ設定のタイミングで、ウィンドウ種類が優先ウィンドウから通常ウィンドウに変更された場合は、スタック位置確定フラグを暫定に変更する。逆にウィンドウ種類が通常ウィンドウから優先ウィンドウに変更された場合は、該時点のスタック最上位に該ウィンドウを位置させるようにスタック変更を行う。また、ウィンドウ種類に変更が無く、グループ値が変更となった場合は、スタック位置確定フラグを暫定に変更する。そして、内部データベースを更新すれ場良い。また、認めない場合は、ウィンドウ種類及びグループ設定のタイミングで、プロパティ獲得フラグをチェックして、獲得済みであれば、該設定を無視すれば良い。
【０１２８】
また、ウィンドウ種類として優先ウィンドウと通常ウィンドウの２種類を制御する例を示したが、通常ウィンドウの１種類だけであっても容易に実施できる事は言うまでも無い。
【０１２９】
また、ウィンドウマネージャがルートウィンドウの子ウィンドウであるトップレベルウィンドウのスタック順を制御する場合を例に示したが、トップレベルウィンドウの子孫ウィンドウに対しても実施する事ができる事は言うまでも無い。
【０１３０】
また、ウィンドウ管理プログラムをＸウィンドウシステムとウィンドウマネージャとして、アプリケーションプログラムとのインターフェースにウィンドウ生成要求、マップ要求を用いたが、これに限定されるものではなく、表示要求に相当するインターフェースさえあれば良く、その場合、ウィンドウ管理プログラムは、ウィンドウ表示要求受信時に、本実施の形態で示したウィンドウ生成要求受信時の処理とマップ要求受信時の処理を纏めて行えば良い。
【０１３１】
また、ウィンドウのスタック順をグループ毎に一連とする際、単にウィンドウのスタック順を変更するだけであったが、例えば、ウィンドウ管理プログラムが、グループ毎に代表ウィンドウを１枚生成し、ウィンドウのスタック順をグループ毎に一連とする際に、前記ウィンドウを前記代表ウィンドウの子ウィンドウとするようにして制御することも容易である。そうすることによって、グループ単位のスタック移動やグループ単位のウィンドウの表示／非表示の切り替えを代表ウィンドウに対する制御で実施できる分、グループ内のウィンドウが多いほど、処理負荷を軽減することができる。代表ウィンドウ使用下でのスタックの様子を示す例となる模式図を図２５に示す。
【０１３２】
また、最上位グループよりスタック下位のウィンドウ表示について、ウィンドウ管理プログラムでは非表示とするような制御はしていないが、非表示とする制御を行う事も容易に実現できる。その場合、ウィンドウ情報に表示／非表示を示すマップフラグを追加して、アプリケーションプログラムの表示要求状態を記憶しておき、該ウィンドウの所属するグループが通常ウィンドウの中でスタック最上位となった時、前記マップフラグをチェックし、表示となっていればマップ処理を行い、非表示となっていればアンマップのままとする。逆に、該ウィンドウの所属するグループが通常ウィンドウの中でスタック最上位でなくなった際には、前記マップフラグが表示となっていればアンマップ処理を行い、非表示となっていれば何もしない。これにより、通常ウィンドウの中の最上位グループよりスタック下位のグループが何を表示しようとしても，表示装置に表示されないので、最上位グループのウィンドウで覆われない部分に中途半端に映り込む心配が無い。
【０１３３】
また、通常ウィンドウの最上位グループに属する全ウィンドウの中のスタック最下位のウィンドウの直下に、ウィンドウ管理プログラムが生成及びマップする特定のウィンドウを位置させなかったが、位置させることも容易に実現できる。これにより、例えば、前記特定のウィンドウを表示装置のスクリーン一杯に表示しておけば、前記特定のウィンドウのスタック下位のグループが何を表示しようとしても，表示装置に表示されないので、最上位グループのウィンドウで覆われない部分に中途半端に映り込む心配が無い。前記特定のウィンドウを使用した場合のスタックの様子を示す例となる模式図を図２６に示し、また、スクリーンに表示されている例となる模式図を図２７に示す。
【０１３４】
また、アプリケーションプログラムが３つの場合を例に示したが、これに限定されるものではなく、１つ以上であれば良い。
【０１３５】
また、各アプリケーションプログラムに１つのグループを割り当てた場合を例に示したが、これに限定されるものではなく、１つのアプリケーションに複数のグループを割り当てても良く、また、複数のアプリケーションに１つのグループを割り当てても構わない。
【０１３６】
また、ウィンドウ管理プログラムをＸウィンドウシステムとウィンドウマネージャとして、両者間でイベントや各種要求を送受信し合う例を示したが、これに限定されるものではなく、Ｘウィンドウシステムである必要は無いし、また、２つに分けてイベントや各種要求を送受信する構成である必要もなく、一体化して実施する場合は、イベントやメッセージのインターフェースを関数ベースに変える事で本実施の形態を容易に応用できる。
【０１３７】
また、通常ウィンドウの最上位グループに属する全ウィンドウの中のスタック最上位のウィンドウの直上に、ウィンドウ管理プログラムが生成する特定のウィンドウを位置させなかったが、位置させることも容易に実現できる。これにより、最上位グループを別のグループに入れ替える際、Ｘウィンドウシステムの場合、ＸＲｅｓｔａｃｋＷｉｎｄｏｗｓ（Ｒ）関数を使用する事となるが、ウィンドウ群のスタック移動先を示すために使用できる。もし、最上位グループのウィンドウよりスタック上位にウィンドウが存在しなかった場合、存在する全てのウィンドウの並び順を決め、前記ＸＲｅｓｔａｃｋＷｉｎｄｏｗｓ（Ｒ）の引数に代入せねばならないが、前記特定のウィンドウがあれば、前記特定のウィンドウと前記ウィンドウ群を引数に代入するだけで済む。
【０１３８】
また、Ｘウィンドウシステムを用いる場合、ウィンドウマネージャは、スタックを操作するためにＸＲｅｓｔａｃｋＷｉｎｄｏｗｓ（Ｒ）関数を使用する。ＸＲｅｓｔａｃｋＷｉｎｄｏｗｓ（Ｒ）関数の引数には、ウィンドウ群とそのウィンドウ群の移動先を示すウィンドウを指定するが、それらの何れかが破棄されていた場合、スタック操作が意図した通りに実施されない事がある。そのための対策として、例えば、ウィンドウマネージャは、ウィンドウ破棄通知イベント（ＤｅｓｔｒｏｙＮｏｔｉｆｙ）を受け取った際に、該当するウィンドウ情報を内部データベースから検索し削除し、内部データベース全体に対して必要に応じてスタック位置を更新した後、次に、ウィンドウシステムの該時点でのスタックツリーを問い合わせて獲得し、ウィンドウマネージャが認識していない新規のウィンドウは対象から外し、ウィンドウマネージャのスタックツリーとの整合性をチェックし、ウィンドウマネージャの認識と異なっている場合は、ウィンドウマネージャのスタックツリーに合わせ込むスタック変更要求を発行し、認識が合うまで、ウィンドウシステムの該時点でのスタックツリー問い合わせ、整合性チェック、スタック変更要求の発行を繰り返すようにしても良い。これにより、ウィンドウシステムがスタック変更処理に失敗しても、ウィンドウシステム間とのスタック認識の整合性を確保でき、処理が破綻する事がなくなる。
【０１３９】
また、ウィンドウマネージャが、ＸＲｅｓｔａｃｋＷｉｎｄｏｗｓ（Ｒ）を実行した際にフラグを立て、ウィンドウ破棄通知イベント（ＤｅｓｔｒｏｙＮｏｔｉｆｙ）を受け取った際に、前記フラグが立っている場合にのみ、前記フラグを下げると共にスタックツリーの整合性のための処理を行うようにしても良い。これにより、スタックツリーの整合性のための処理の実行頻度を軽減できる。
【０１４０】
また、コンピュータ１とは、家庭用コンピュータや携帯電話、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）、セットトップボックス、デジタルスチルカメラ、カメラ一体型ＶＴＲ等、プログラムが動作するためのＣＰＵとメモリを実装して表示装置に複数のウィンドウを表示しようとする装置であれば何でも良い事は言うまでもない。
【０１４１】
また、表示装置１１をコンピュータ１の一部としたが、物理上で一体化している事を指すものではなく、コンピュータ１と有線／無線を問わず、何らかの形で接続されていさえすれば良い。
【０１４２】
また、本実施の形態のウィンドウスタック制御方法を内臓するプログラムは、ＲＯＭやディスク等に記憶して供給する事ができるほか、ネットワークを介して供給する事が可能である事は言うまでもない。
【０１４３】
（実施の形態２）
本実施の形態のウィンドウスタック制御方法は、実施の形態１を変形したものであり、実施の形態１と実施の形態２の違いは、マップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）を受け取った際のウィンドウマネージャ１０５の動作と、アプリケーションプログラムがウィンドウ種類及びグループ値を設定するタイミングでウィンドウマネージャ１０５はスタック順をグループ毎に纏めてはいけないことだけである。よって、本実施例では、ウィンドウマネージャ１０５のマップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）を受け取った際のウィンドウマネージャ１０５の動作についてのみ説明する。
【０１４４】
マップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）を受け取った際のウィンドウマネージャ１０５の動作例となるフロー図を図２１に示す。
【０１４５】
図２１に示されるように、Ｓ２１０１では、該時点で受け取ったマップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）からマップ対象ウィンドウの識別子を獲得して、Ｓ２１０２に進む。
【０１４６】
Ｓ２１０２では、マップ対象ウィンドウの識別子で内部データベースを検索し、対応するウィンドウ情報が存在する場合はＳ２１０３へ進み、存在しない場合はＳ２１１５へ進む。
【０１４７】
Ｓ２１０３では、内部データベースで対象ウィンドウのスタック位置確定フラグが確定済みかどうかをチェックし、確定済みの場合はＳ２１１４に進み、暫定の場合はＳ２１０４に進む。
【０１４８】
Ｓ２１０４では、対象ウィンドウのプロパティ獲得フラグをチェックし、獲得済みの場合はＳ２１０６に進み、未獲得の場合はＳ２１０５に進む。
【０１４９】
Ｓ２１０５では、対象ウィンドウのウィンドウ種類及びグループ値をウィンドウシステムに問い合わせて獲得し、内部データベースに格納し、Ｓ２１０６に進む。
【０１５０】
Ｓ２１０６では、対象ウィンドウのウィンドウ種類をチェックし、優先ウィンドウの場合は、Ｓ２１１４に進み、通常ウィンドウの場合は、Ｓ２１０７に進む。
【０１５１】
Ｓ２１０７では、内部データベースにあるプロパティ獲得フラグが未獲得である全ウィンドウについて、ウィンドウシステム１２に対してウィンドウ種類及びグループ値を問い合わせ、獲得できたウィンドウについては、そのウィンドウ種類及びグループ値とプロパティ獲得済みである事を内部データベースに記憶し、Ｓ２１０８に進む。
【０１５２】
Ｓ２１０８では、対象ウィンドウと同じグループに属する通常ウィンドウを内部データベースから検索してリストアップし、Ｓ２１０９に進む。      Ｓ２１０９では、前記リストアップした中にスタック位置確定フラグが確定済みであるウィンドウが存在するならばＳ２１１０に進み、存在しないならＳ２１１１に進む。
【０１５３】
Ｓ２１１０では、リストアップした中でスタック位置確定フラグが暫定であるウィンドウ全てを、それらの中でみたスタック順はそのままで、リストアップした中でスタック位置確定フラグが確定済みであるウィンドウの内の最上位のウィンドウの直上となるよう、ウィンドウシステム１２にスタック変更要求を発行し、Ｓ２１１４に進む。      Ｓ２１１０のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図２２に示す。
【０１５４】
図２２に示されるように、マップ対象ウィンドウ及びマップ対象ウィンドウと同じグループ値を持つスタック位置確定フラグが暫定の通常ウィンドウが、前記グループ値を持つスタック位置確定フラグが確定済みの通常ウィンドウの直上に移されているのが解かる。
【０１５５】
図２１において、Ｓ２１１１では、内部データベースにスタック位置確定フラグが確定済みの通常ウィンドウが存在するならばＳ２１１２に進み、存在しないならばＳ２１１３に進む。
【０１５６】
Ｓ２１１２では、Ｓ２１０８でリストアップした中でスタック位置確定フラグが暫定である通常ウィンドウ全てを、それらの中でみたスタック順はそのままで、内部データベースの中でスタック位置確定フラグが確定済みであるスタック最上位の通常ウィンドウの直上となるよう、ウィンドウシステム１２にスタック変更要求を発行し、Ｓ２１１４に進む。
【０１５７】
Ｓ２１１２のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図２３に示す。      図２３に示されるように、マップ対象ウィンドウ及びマップ対象ウィンドウと同じグループ値を持つスタック位置確定フラグが暫定の通常ウィンドウが、スタック位置確定フラグが確定済みの通常ウィンドウ全体のスタック最上位ウィンドウの直上に移されているのが解る。
【０１５８】
図２１において、Ｓ２１１３では、Ｓ２１０８でリストアップした中でスタック位置確定フラグが暫定である通常ウィンドウ全てを、それらの中でみたスタック順はそのままで、全体スタックの最下位となるよう、ウィンドウシステム１２にスタック変更要求を発行し、Ｓ２１１４に進む。
【０１５９】
Ｓ２１１３のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図を図２４に示す。
【０１６０】
図２４に示されるように、マップ対象ウィンドウ及びマップ対象ウィンドウと同じグループ値を持つスタック位置確定フラグが暫定の通常ウィンドウが、スタック最下位に移されているのが解る。
【０１６１】
図２１において、Ｓ２１１４では、ウィンドウシステム１２に対してマップ対象ウィンドウのマップ要求を発行し、内部データベースの対象ウィンドウのウィンドウ情報の内、スタック位置確定フラグが未確定を示している場合は確定済みに更新し、また、内部データベース全体に対して必要に応じてスタック位置を更新した上で、Ｓ２１１５に進む。
【０１６２】
Ｓ２１１５では、処理を終了する。
【０１６３】
以上のことにより、ウィンドウ管理プログラムが、マップ対象ウィンドウと同じグループ値を持つスタック位置が暫定の通常ウィンドウ群を、その通常ウィンドウ群の中でのスタック上下関係は保持しつつスタック位置を移してグループ毎に纏めるため、マップによって、同一グループ内でみたスタック順は変更されず、アプリケーションの同一グループ内のスタック順管理の負担が軽減される。更に、実施の形態１で示したように、スタック変更要求受信時にも、対象ウィンドウと同じグループ値を持つスタック位置が暫定の通常ウィンドウ群を、その通常ウィンドウ群の中でのスタック上下関係は保持しつつグループ毎に纏める事で、アプリケーションプログラムは、自グループに属するウィンドウのスタック順をウィンドウの生成順を基本として管理する事ができる。これは、Ｘウィンドウシステムの基本と一致しており、アプリケーションプログラムは、自グループの通常ウィンドウについて、一般的なスタック順決定ルールである生成順ベースで重なりを管理すれば良くなる。
【０１６４】
なお、本実施の形態では、マップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）受信時に、ウィンドウマネージャのウィンドウのグループ値取得を行っているが、これに限定されるものではなく、実施の形態１と同様、アプリケーションプログラムがウィンドウ種類及びグループ設定をしたタイミングでグループ値を取得して内部データベースにウィンドウ種類とグループ値とプロパティ獲得済みである事を記憶しておいても良く、その方がむしろ処理効率が良い。しかし、実施の形態１と違い、前記タイミングで、スタック順をグループ毎に纏めてはいけない。
【０１６５】
【発明の効果】
以上のように本発明によれば、ウィンドウ制御方法において、アプリケーションプログラムがウィンドウにグループを指定し、ウィンドウ管理プログラムがウィンドウのスタック順をグループ毎に一連とすることにより、グループ最上位のウィンドウは、他のグループのウィンドウの下に重ねられる事が無くなり、最前面でウィンドウを表示中のアプリケーションのウィンドウ表示に、他のアプリケーションが不用意に影響を及ぼす事を無くす事ができる。特に、画面が小さく、結果として、ウィンドウの重なり易い携帯電話やＰＤＡ等で、その効果は顕著である。
【図面の簡単な説明】
【図１】本発明の実施の形態１のウィンドウスタック制御方法を実現するシステムの構成例を示す図
【図２】本発明実施の形態１のマップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）を受け取った際のウィンドウマネージャの動作例となるフロー図
【図３】本発明の実施の形態１の図２のＳ２０８のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図４】本発明の実施の形態１の図２のＳ２１０のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図５】本発明の実施の形態１の図２のＳ２１１のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図６】本発明の実施の形態１のスタック最上位移動要求イベントを受け取った際のウィンドウマネージャの動作例となるフロー図
【図７】本発明の実施の形態１の図６のＳ６０５のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図８】本発明の実施の形態１の図６のＳ６０８のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図９】本発明の実施の形態１の図６のＳ６１０のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図１０】本発明の実施の形態１の図６のＳ６１１のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図１１】本発明の実施の形態１のスタック最下位移動要求イベントを受け取った際のウィンドウマネージャの動作例となるフロー図
【図１２】本発明の実施の形態１の図１１のＳ１１０５のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図１３】本発明の実施の形態１の図１１のＳ１１０８のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図１４】本発明の実施の形態１の図１１のＳ１１１０のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図１５】本発明の実施の形態１の図１１のＳ１１１１のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図１６】本発明の実施の形態１のグループ単位スタック最上位移動要求メッセージを受け取った際のウィンドウマネージャの動作例となるフロー図
【図１７】本発明の実施の形態１の図１６のＳ１６０５のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図１８】本発明の実施の形態１の図１６のＳ１６０６のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図１９】本発明の実施の形態１のグループ単位スタック最下位移動要求メッセージを受け取った際のウィンドウマネージャの動作例となるフロー図
【図２０】本発明の実施の形態１の図１９のＳ１９０４のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図２１】本発明の実施の形態２のマップ要求イベント（ＭａｐＲｅｑｕｅｓｔ）を受け取った際のウィンドウマネージャの動作例となるフロー図
【図２２】本発明の実施の形態２の図２１のＳ２１１０のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図２３】本発明の実施の形態２の図２１のＳ２１１２のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図２４】本発明の実施の形態２の図２１のＳ２１１３のスタック変更要求によってスタックがどのように変化するかを示す具体例となる模式図
【図２５】本発明の実施の形態１の代表ウィンドウ使用下でのスタックの様子を示す例となる模式図
【図２６】本発明の実施の形態１の最上位グループに属する全ウィンドウの中のスタック最下位のウィンドウの直下に、ウィンドウ管理プログラムが生成及びマップする特定のウィンドウを位置させて使用した場合のスタックの様子を示す例となる模式図
【図２７】本発明の実施の形態１の最上位グループに属する全ウィンドウの中のスタック最下位のウィンドウの直下に、ウィンドウ管理プログラムが生成及びマップする特定のウィンドウを位置させて使用した場合のスクリーンに表示されている例となる模式図
【図２８】従来例におけるコンピュータ上で動作する３種類のアプリケーションが合計５枚のウィンドウを表示装置であるスクリーンに表示する際の表示例となる模式図
【図２９】従来例におけるウィンドウスタック順の例となる模式図
【図３０】従来例におけるウィンドウスタック順の例となる模式図
【符号の説明】
１  スクリーン
７  コンピュータ
８  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
９  メモリ
１０  バス
１１  表示装置
１０１、１０２、１０３  アプリケーションプログラム
１０４  ウィンドウ管理プログラム
１０５  ウィンドウマネージャ
【図１】
2004310655.tif 000004
【図２】
2004310655.tif 000005
【図３】
2004310655.tif 000006
【図４】
2004310655.tif 000007
【図５】
2004310655.tif 000008
【図６】
2004310655.tif 000009
【図７】
2004310655.tif 000010
【図８】
2004310655.tif 000011
【図９】
2004310655.tif 000012
【図１０】
2004310655.tif 000013
【図１１】
2004310655.tif 000014
【図１２】
2004310655.tif 000015
【図１３】
2004310655.tif 000016
【図１４】
2004310655.tif 000017
【図１５】
2004310655.tif 000018
【図１６】
2004310655.tif 000019
【図１７】
2004310655.tif 000020
【図１８】
2004310655.tif 000021
【図１９】
2004310655.tif 000022
【図２０】
2004310655.tif 000023
【図２１】
2004310655.tif 000024
【図２２】
2004310655.tif 000025
【図２３】
2004310655.tif 000026
【図２４】
2004310655.tif 000027
【図２５】
2004310655.tif 000028
【図２６】
2004310655.tif 000029
【図２７】
2004310655.tif 000030
【図２８】
2004310655.tif 000031
【図２９】
2004310655.tif 000032
【図３０】
2004310655.tif 000033