(57)【特許請求の範囲】
【請求項１】
情報をコンピュータシステムの表示装置のウィンドウに表示する情報表示方法において、
複数のウィンドウのうちの少なくとも２つを常時可視ウィンドウに設定するステップと、
常時可視ウィンドウに設定された第１の常時可視ウィンドウを含む、上記表示装置に表示された複数のウィンドウに情報を同時に表示するステップと、
上記複数のウィンドウの位置及び形状を管理するステップと、
上記複数のウィンドウのうちの第２のウィンドウの一部と上記第１の常時可視ウィンドウの一部とが重なった共通領域を生じさせるイベントを検出するステップと、
上記イベントを検出したときに、上記第２のウィンドウが常時可視ウィンドウであるか否かを判定し、該第２のウィンドウが常時可視ウィンドウであるときは、上記共通領域を生じさせないように上記第１の常時可視ウィンドウ又は／及び第２のウィンドウの位置及び／又は形状を変更するステップとを有する情報表示方法。
【請求項２】
さらに、上記第２のウィンドウが常時可視ウィンドウでないときは、上記第１の常時可視ウィンドウの情報を上記共通領域に表示するステップを有する請求項１に記載の情報表示方法。
【請求項３】
上記第１の常時可視ウィンドウは、透明背景を有し、上記第１の常時可視ウィンドウの情報を共通領域に表示するステップは、
上記第１の常時可視ウィンドウの情報を上記共通領域のうちの透明背景でない領域に表示するとともに、上記第２のウィンドウの情報を該共通領域のうちの透明背景の領域に表示することを特徴とする請求項２に記載の情報表示方法。
【請求項４】
さらに、上記複数のウィンドウに関するスタック順序を管理するステップと、
ユーザ入力を受信して、上記第１の常時可視ウィンドウよりも上位のスタック位置を上記第２のウィンドウに与えるステップと、
上記第２のウィンドウが常時可視ウィンドウでないときは、上記スタック順序を変更して、上記第１の常時可視ウィンドウに、上記第２のウィンドウよりも上位のスタック位置を与えるステップとを有する請求項１に記載の情報表示方法。
【請求項５】
上記複数のウィンドウのそれぞれは、オーバライドリダイレクト属性を有し、上記第２のウィンドウが常時可視ウィンドウであるか否かを判定するステップは、該オーバライドリダイレクト属性が設定されているか否かを判定するステップを有することを特徴とする請求項１に記載の情報表示方法。
【請求項６】
上記複数のウィンドウは、ルートウィンドウを含み、該ルートウィンドウは、常時可視ウィンドウリストとして定義されるプロパティを有し、該常時可視ウィンドウリストは、常時可視ウィンドウである該複数のウィンドウのそれぞれについてのエントリを有し、上記第２のウィンドウが常時可視ウィンドウであるか否かを判定するステップは、上記常時可視ウィンドウリストが上記第２のウィンドウに対応するエントリを含んでいるか否かを判定するために上記常時可視ウィンドウリストを検査するステップを有することを特徴とする請求項１に記載の情報表示方法。
【請求項７】
上記第１の常時可視ウィンドウを隠すイベントを検出し、上記常時可視ウィンドウリストから該第１の常時可視ウィンドウに対応するエントリを削除するステップを有することを特徴とする請求項６に記載の情報表示方法。
【請求項８】
新しい常時可視ウィンドウを生成するイベントを検出するステップと、
上記新しい常時可視ウィンドウに対応するエントリを上記常時可視ウィンドウリストに加えるステップと、
上記新しい常時可視ウィンドウが他の常時可視ウィンドウに重なるか否かを判定するステップと、
上記新しい常時可視ウィンドウが他の常時可視ウィンドウに重なるときは、該新しい常時可視ウィンドウ又は／及び他の常時可視ウィンドウの形状を変更して、該新しい常時可視ウィンドウの一部が該他の常時可視ウィンドウに重ならないようにするステップとを有する請求項６に記載の情報表示方法。
【請求項９】
コンピュータシステムの表示装置の画面上のウィンドウベースのインタフェースに情報を表示する情報表示方法において、
少なくとも１の常時可視ウィンドウを含む複数のウィンドウを上記画面に表示するステップと、
重要な情報を上記複数のウィンドウのうちの常時可視ウィンドウに表示するステップと、
上記複数のウィンドウのうちの選択されたウィンドウが上記常時可視ウィンドウの一部を覆うことになるユーザ入力を受信するステップと、
上記選択されたウィンドウが常時可視ウィンドウであるときは、該選択されたウィンドウが上記常時可視ウィンドウによって重ねられることを禁止するステップと、
上記選択されたウィンドウが常時可視ウィンドウでないときは、上記画面において該選択されたウィンドウの上に上記常時可視ウィンドウを表示するステップとを有する情報表示方法。
【請求項１０】
上記少なくとも１つの常時可視ウィンドウのそれぞれに対応する画面の領域を指示する方向データを保存し、上記選択されたウィンドウを上記画面の新しい領域に表示する試みが行われるときを検出し、該新しい領域と方向データを比較して、該新しい領域が上記少なくとも１つの常時可視ウィンドウのいずれかに対応する画面の領域と交差するか否かを判定することによって、該選択されたウィンドウが上記少なくとも１つの常時可視ウィンドウのいずれかに重なるときを検出するステップをさらに有する請求項９に記載の情報表示方法。
【請求項１１】
さらに、複数のウィンドウに関するスタック順序を維持するステップと、
上記複数のウィンドウを、上記スタック順序に応じて上記画面に表示し、該複数のウィンドウの任意のウィンドウが重なるときは、上位のスタック位置を有するウィンドウを重なるウィンドウの上に表示するステップと、
上記ユーザ入力が、常時可視ウィンドウでないウィンドウに上記少なくとも１つの常時可視ウィンドウよりも上位のスタック位置を与えることを検出するステップと、
上記常時可視ウィンドウでないウィンドウに上記少なくとも１つ常時可視ウィンドウの全てよりも下位のスタック位置を与えるステップとを有する請求項９に記載の情報表示方法。
【請求項１２】
さらに、上記常時可視ウィンドウのオーバライドリダイレクト属性を設定することによって、該常時可視ウィンドウを常時可視ウィンドウとして指示するステップを有する請求項９に記載の情報表示方法。
【請求項１３】
常時可視ウィンドウリストを生成し、該常時可視ウィンドウリストに上記常時可視ウィンドウに対応するエントリを加えることによって、該常時可視ウィンドウを常時可視ウィンドウとして指示するステップをさらに有する請求項９に記載の情報表示方法。
【請求項１４】
上記常時可視ウィンドウリストを生成するステップは、上記常時可視ウィンドウリストをルートウィンドウのプロパティとして構築するステップを有することを特徴とする請求項１３に記載の情報表示方法。
【請求項１５】
上記エントリは、上記常時可視ウィンドウに関するウィンドウ識別子、位置指示子、サイズ指示子及びスタック順序指示子を含んでいることを特徴とする請求項１３に記載の情報表示方法。
【請求項１６】
上記エントリは、上記常時可視ウィンドウがマッピングされるか否か指示するデータを含んでいることを特徴とする請求項１５に記載の情報表示方法。
【請求項１７】
表示装置を有するコンピュータシステム上で使用するウィンドウ管理装置において、
複数のウィンドウの各ウィンドウが常時可視ウィンドウであるか否かを示すとともに、該複数のウィンドウの各ウィンドウに関するスタック順序の位置を示す複数の属性を記憶するメモリと、
上記複数の属性の変更を指示する入力を受信する入力受信部と、
上記複数のウィンドウを、上記複数の属性に基づいて上記表示装置に表示するウィンドウ表示部とを備え、
上記ウィンドウ表示部は、
上記変更が、２つ以上の常時可視ウィンドウを重ならせるか否かを判定するオーバラップ処理部と、
上記複数の属性を変更して、上記２つ以上の常時可視ウィンドウ間の重なりを禁止するオーバラップ変更部と、
上記変更が、常時可視ウィンドウに常時可視ウィンドウでないウィンドウよりも下位のスタック位置を与えるか否かを判定するスタック順序処理部と、
上記複数の属性を変更して、上記常時可視ウィンドウに常時可視ウィンドウでないウィンドウよりも下位のスタック位置を与えることを禁止するスタック順序変更部とを備え、
上記ウィンドウ表示部は、上記複数のウィンドウのうちの２つ以上のウィンドウの一部が共通画面領域を共有するときは、該共通画面領域に、該２つ以上のウィンドウのうちのスタック順序がより上位の位置を有するウィンドウの一部を表示することを特徴とするウィンドウ管理装置。
【請求項１８】
さらに、上記複数のウィンドウのうちのどのウィンドウが常時可視ウィンドウであるかについての記録を維持する手段を備える請求項１７に記載のウィンドウ管理装置。
【請求項１９】
上記複数の属性は、オーバライドリダイレクト属性を含み、上記維持する手段は、上記複数のウィンドウのそれぞれのオーバライドリダイレクト属性を設定して、ウィンドウが常時可視ウィンドウであるか否かを反映させることによって、上記記録を維持することを特徴とする請求項１８に記載のウィンドウ管理装置。
【請求項２０】
上記複数のウィンドウは、ルートウィンドウを含み、該ルートウィンドウは、常時可視ウィンドウリストとして定義されるプロパティを有し、上記維持する手段は、該複数のウィンドウのそれぞれについての常時可視ウィンドウであることを示すエントリを該常時可視ウィンドウリストに保存することによって、上記記録を維持することを特徴とする請求項１８に記載のウィンドウ管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムのウィンドウ管理、特に、Ｘウィンドウシステムにおける常時可視ウィンドウのクラスを表示する情報表示方法及びウィンドウ管理装置に関する。
【０００２】
【従来の技術】
ウィンドウは、特定のデータセットと特定の画面領域間の相互関係を確定するユーザインタフェースオブジェクトである。ウィンドウが別のユーザインタフェースオブジェクト（ウィンドウ）に隠されたり、覆われなければ、データセットは、対応する画面領域に表示される。ウィンドウを用いることにより、コンピュータのユーザに情報を効果的に伝えることができる。例えば、ユーザが複数の文書を開くことができるワードプロセッシング装置では、開いた文書のそれぞれの内容（コンテンツ）がそれぞれ別のウィンドウに表示される。
【０００３】
多くのウィンドウ管理装置では、柔軟性を高めるために、複数のウィンドウを互いに重ならせて表示することができるようになっている。ウィンドウに関する画面領域間に共通部分があるとき、２つのウィンドウは、重なって表示される。２つ以上のウィンドウの内容が、共通の画面領域に表示されると、情報（内容）が重なり、読むことが困難になる。したがって、ウィンドウ管理装置は、重なるウィンドウの共通の画面領域に、どちらの内容を表示するかを決定しなければならない。
【０００４】
ウィンドウの重なりの問題を解決するために、多くのウィンドウ管理装置は、各ウィンドウに「スタック順序」を設定するようになっている。複数のウィンドウが同じ画面領域を共有するとき、スタック順序の上位にスタックされたウィンドウ（以下、上位ウィンドウという。）の情報だけがその画面領域に表示される。したがって、共通の画面領域に表示されるはずの下位ウィンドウの一部は、共通の画面領域に対応する上位ウィンドウの一部によって「覆われる」ことになる。ユーザにとっては、あたかも下位ウィンドウが上位ウィンドウの物理的に下に位置するように見える。
【０００５】
殆どのウィンドウ管理装置では、ユーザが個々のウィンドウの位置や大きさ（サイズ）を変えたり、スタック順序を変更することができるようになっている。アップルコンピュータ社（Apple Computer,Inc）が市販しているシステム７オペレーティングシステムでは、ユーザがマウス又はトラックボール等の入力装置を用いてウィンドウの一部をクリックすると、そのウィンドウがスタック順序において最上位の位置になる。また、ウィンドウの底部の一端をドラッグすると、ウィンドウの大きさが変更される。さらに、ウィンドウのタイトルバーを表示画面の別の位置にドラッグすると、ウィンドウが移動される。
【０００６】
あるアプリケーションにおいて、ある情報がユーザから常に見える状態になっていることが重要な場合がある。しかしながら、ウィンドウが重なることを許すシステムにおいては、ウィンドウ上の重要な情報がユーザから隠されてしまうことがある。例えば、ユーザが、スタック順序において、あるウィンドウの上位に別のウィンドウをスタックする操作を行うと、その情報は隠される。このような状況は、ユーザの様々な種類の操作によって生じる。例えば、ユーザは、既に隠されているウィンドウのスタック順序を変更して上位とすることがある。また、ユーザは、スタック順序の上位に位置しているウィンドウを、あるウィンドウで隠された画面位置に移動することもある。
【０００７】
【発明が解決しようとする課題】
ウィンドウに表示された重要な情報がユーザに対して隠れることを防止する様々な試みが行われてきた。例えば、Windows（登録商標）用のＰＣツール（PC Tools）では、あるウィンドウを常時上位（always on top）とすることをユーザが指定できる、ウィンドウをベースとしたグラフィックデスクトップコンピュータを提供している。常時上位ウィンドウは、通常のウィンドウに割り当てられるスタック順序の最上位の位置よりも上位の位置に割り当てられる。したがって、任意のウィンドウが常時上位ウィンドウに重なるように操作されると、常時上位ウィンドウの重なった部分が、共通の画面領域において他のウィンドウを覆うことになる。
【０００８】
このアプローチ（試み）は、特に重要な情報を含んでいるウィンドウが１つだけである場合に効果的である。しかしながら、複数の常時上位ウィンドウが必要になる場合、問題が生じる。Windows用のＰＣツールでは、２つのウィンドウが常時上位ウィンドウとして指定されると、それらの常時上位ウィンドウ同士の関係は、通常のウィンドウ同士の関係と変わらない。すなわち、一方の常時上位ウィンドウが、他の常時上位ウィンドウよりもスタック順序の上位の位置を有することになる。２つの常時上位ウィンドウが重なるとき、スタック順序の上位の位置を有する常時上位ウィンドウが、共通画面領域においてスタック順序のより下位の位置を有する常時上位ウィンドウを覆うことになる。したがって、スタック順序のより下位の位置を有する常時上位ウィンドウの重ねられた部分の情報は、ユーザから見ることができなくなる。したがって、複数の常時上位ウィンドウが指定されたときには、特に重要な情報が常に表示されることが保証されない。
【０００９】
この問題を回避する１つの解決策は、同時には１つだけしか常時上位ウィンドウを指定できないようにすることである。例えば、フランス特許第２，６９３，８１０号に、他のウィンドウによって隠されない１つの絶対明示（non-obscurable）ウィンドウを用いたウィンドウ管理装置が記載されている。ユーザが第２のウィンドウを絶対明示ウィンドウとして指定すると、第１のウィンドウの絶対明示ウィンドウ指定は解除される。このウィンドウ管理装置は、複数の絶対明示ウィンドウをサポートしていないので、利便性に限界がある。
【００１０】
そこで、本発明は、上述の事情に鑑みてなされたものであり、情報が複数の常時可視ウィンドウに同時に表示されることを可能にする情報表示方法及びウィンドウの管理装置を提供することを目的とする。
【００１１】
また、本発明は、現行のＸウィンドウ規格に矛盾しないウィンドウの常時可視クラスを提供する情報表示方法及びウィンドウ管理装置を提供することを目的とする。
【００１２】
さらに、ユーザが、常時可視属性と透明背景属性を含むウィンドウ属性を組み合わせることができる情報表示方法及びウィンドウ管理装置を提供すること目的とする。
【００１３】
【課題を解決するための手段】
本発明は、情報をコンピュータシステムの表示装置のウィンドウに表示する情報表示方法において、複数のウィンドウのうちの少なくとも２つを常時可視ウィンドウに設定するステップと、常時可視ウィンドウに設定された第１の常時可視ウィンドウを含む、表示装置に表示された複数のウィンドウに情報を同時に表示するステップと、複数のウィンドウの位置及び形状を管理するステップと、複数のウィンドウのうちの第２のウィンドウの一部と第１の常時可視ウィンドウの一部とが重なった共通領域を生じさせるイベントを検出するステップと、イベントを検出したときに、第２のウィンドウが常時可視ウィンドウであるか否かを判定し、第２のウィンドウが常時可視ウィンドウであるときは、共通領域を生じさせないように第１の常時可視ウィンドウ又は／及び第２のウィンドウの位置及び／又は形状を変更するステップとを有する。
【００１４】
また、本発明は、コンピュータシステムの表示装置の画面上のウィンドウベースのインタフェースに情報を表示する情報表示方法において、少なくとも１の常時可視ウィンドウを含む複数のウィンドウを画面に表示するステップと、重要な情報を複数のウィンドウのうちの常時可視ウィンドウに表示するステップと、複数のウィンドウのうちの選択されたウィンドウが常時可視ウィンドウの一部を覆うことになるユーザ入力を受信するステップと、選択されたウィンドウが常時可視ウィンドウであるときは、選択されたウィンドウが常時可視ウィンドウによって重ねられることを禁止するステップと、選択されたウィンドウが常時可視ウィンドウでないときは、画面において選択されたウィンドウの上に常時可視ウィンドウを表示するステップとを有する。
【００１５】
また、本発明は、表示装置を有するコンピュータシステム上で使用するウィンドウ管理装置において、複数のウィンドウの各ウィンドウが常時可視ウィンドウであるか否かを示すとともに、複数のウィンドウの各ウィンドウに関するスタック順序の位置を示す複数の属性を記憶するメモリと、複数の属性の変更を指示する入力を受信する入力受信部と、複数のウィンドウを、複数の属性に基づいて表示装置に表示するウィンドウ表示部とを備え、ウィンドウ表示部は、変更が、２つ以上の常時可視ウィンドウを重ならせるか否かを判定するオーバラップ処理部と、複数の属性を変更して、２つ以上の常時可視ウィンドウ間の重なりを禁止するオーバラップ変更部と、変更が、常時可視ウィンドウに常時可視ウィンドウでないウィンドウよりも下位のスタック位置を与えるか否かを判定するスタック順序処理部と、複数の属性を変更して、常時可視ウィンドウに常時可視ウィンドウでないウィンドウよりも下位のスタック位置を与えることを禁止するスタック順序変更部とを備え、ウィンドウ表示部は、複数のウィンドウのうちの２つ以上のウィンドウの一部が共通画面領域を共有するときは、共通画面領域に、２つ以上のウィンドウのうちのスタック順序がより上位の位置を有するウィンドウの一部を表示することを特徴とする。
【００１６】
さらに、本発明は、複数のウィンドウクラスからのウィンドウをサポートするウィンドウベースコンピュータシステムにおいて、複数のウィンドウクラスの特定のウィンドウクラスが任意の他のウィンドウによって隠されないウィンドウに対応していることを特徴とする。
【００１７】
【発明の実施の形態】
以下、本発明の好ましい実施の形態について、図面を参照しながら説明する。なお、以下、本発明を完全に理解できるように、多くの特別な実施の形態の詳細を説明する。しかしながら、当業者は、これらの詳細な説明がなくとも、本発明を理解することができる。
【００１８】
本発明に係る情報表示方法及びウィンドウ管理装置は、例えば図１に示すような構成のコンピュータシステム１００に実装される。このコンピュータシステム１００は、情報を送受するためのバス１０１と、このバス１０１に接続された情報を処理するプロセッサ１０２とを備える。また、コンピュータシステム１００は、プロセッサ１０２によって実行される情報及び命令を記憶するバス１０１に接続されたメインメモリ１０４を備える。このメインメモリ１０４は、例えばランダムアクセスメモリ（ＲＡＭ）、ＤＲＡＭ等からなり、プロセッサ１０２による命令の実行中に、一時的な変数又は他の中間的な情報を記憶する。
【００１９】
また、コンピュータシステム１００は、プロセッサ１０２の静的な情報及び命令を記憶するバス１０１に接続されたリードオンリメモリ（ＲＯＭ）１０６と、情報及び命令を記憶するバス１０１に接続された記憶装置１０７とを備える。この記憶装置１０７は、例えば磁気ディスク装置、光ディスク装置等からなる。
【００２０】
さらに、コンピュータシステム１００は、バス１０１を介して接続された、例えば陰極線管（ＣＲＴ）からなる表示装置１２１を備え、この表示装置１２１は、情報をコンピュータのユーザに表示する。また、文字や数字を入力するキーボード１２２が、バス１０１を介してプロセッサ１０２に接続されており、情報及びコマンドの選択をプロセッサ１０２に伝える。別の種類の入力装置として、方向情報及びコマンドの選択をプロセッサ１０２に伝え、かつ表示装置１２１上のカーソルの動きを制御する、例えばマウス、トラックボール、カーソル方向キー等のカーソルコントローラ１２３がある。このカーソルコントローラ１２３は、一般的に、２つの軸、すなわち第１の軸（例えばｘ軸）と第２の軸（例えばｙ軸）において２つの自由度を有し、平面上の位置を指定することができる。
【００２１】
また、マウス等に代えて、スタイラス（stylus）又はペンのような他の入力装置も画面上の位置等を指示するインタフェースとして使用することができる。ペン等を用いてタッチスクリーンに表示されたオブジェクトに接触すると、そのオブジェクトは選択される。同様に、ライトペン及び光感知式スクリーンも表示オブジェクトの選択に使用できる。このような装置は、マウス又はトラックボールを搭載するシステムにおけるポイント及びクリック（point and click）の代わりに、１つの動作で位置の選択と、選択とを行うことになる。ペン等とタッチスクリーン、あるいはライトペンと光感知式スクリーンは、周知の技術である。このようなシステムには、キーボード１２２のようなキーボードがなく、情報は、スタイラスのような書込みデバイスをインタフェースとして、ペン先を介して提供され、また、書面のテキストは、光学式文字認識（ＯＣＲ）技術を用いて解読される。
【００２２】
本発明は、複数の常時可視ウィンドウを表示可能なアプリケーションプログラムを実行する方法、及びプラットフォームとしてのコンピュータシステムの使用に関する。以下、本発明の好ましい実施の形態を、Ｘウィンドウシステムの使用に即して説明する。
【００２３】
Ｘウィンドウシステムは、MIT's Project AthenaとDigital Equipment Corporationが最初に開発したものであり、現在は、X Consortiumによって管理されている。Ｘウィンドウシステムは、Xlib Reference Manual, volumes 1 and 2,O'Reilly & Associates, Inc(1995)に詳細に説明されている。
【００２４】
Ｘウィンドウシステムにおいて、様々な機能は、クライアントアプリケーションとサーバアプリケーション間で分散されている。クライアント及びサーバのアプリケーションは、単一のワークステーションの単一のプロセッサ上で実行され、あるいはネットワークで接続された複数のワークステーションの複数のプロセッサ上で実行される。
【００２５】
（クライアントアプリケーション）
クライアントアプリケーションは、要求をサーバアプリケーションに送信する。要求には、指定した動作を実行させる要求、あるいは情報の要求を含むことができる。サーバアプリケーションは、指定された動作を実行し、あるいは要求された情報を含む回答をクライアントアプリケーションに送信することによって、要求に応答する。
【００２６】
（サーバアプリケーション）
サーバアプリケーションは、要求に応じるだけではなく、イベントメッセージ及びエラーメッセージをクライアントアプリケーションに送信する。イベントメッセージは、あるイベントが発生したことをクライアントアプリケーションに知らせる。一般的に、クライアントアプリケーションは、特定のイベントメッセージを受信したときに、ある動作を行うように設計されている。エラーメッセージは、クライアントアプリケーションからの前の要求が無効だったことをクライアントアプリケーションに知らせる。
【００２７】
サーバアプリケーションは、リソースの複雑なアブストラクションを保持している。このようなリソースとして、例えば、ウィンドウ、ピクセルマップ、カラーマップ、カーソル、フォント、グラフィック環境等がある。リソースのアブストラクションは、リソースの属性を含んでいる。例えば、ウィンドウのアブストラクションとして、ウィンドウのサイズ、位置、境界幅、スタック順序（ウィンドウの「形状（configuation）」）に関する情報がある。
【００２８】
アブストラクションはサーバに保持されているので、リソースを使用しているクライアントアプリケーションの数に関わらず、アブストラクションは１つあれば足りる。クライアントアプリケーションは、アブストラクションに直接アクセスできないので、リソースに関する情報を検索あるいは操作するには、サーバアプリケーションにその要求を送信しなければならない。クライアントアプリケーションは、リソースに関する要求を送信するときに、リソースを、それに対応した整数のＩＤで識別する。複雑なアブストラクションではなく、整数のＩＤのみを送信するので、クライアントアプリケーションとサーバアプリケーション間の通信量が削減される。
【００２９】
（ウィンドウマネージャ）
ウィンドウ管理のために特別に設計されたウィンドウマネージャと呼ばれるクライアントアプリケーションがある。具体的には、ウィンドウマネージャは、画面空間及びカラーマップを含む表示装置の物理的リソースに対する競合した要求を調停する。一般的に、ウィンドウマネージャは、ユーザが画面上でウィンドウを移動し、ウィンドウのサイズを変更し、新たなアプリケーションを起動することを可能にするユーザインタフェースを、サーバアプリケーションに生成させる。
【００３０】
クライアントアプリケーションは、ウィンドウの形状の変更を要求するとき、要求をサーバアプリケーションに送る。しかしながら、ウィンドウの形状は、ウィンドウマネージャが制御する応答に関連しているので、サーバアプリケーションは要求に応じない。要求に応じない代わりに、サーバアプリケーションは、その要求を取り消し、再構成要求の引数を含んだイベントメッセージをウィンドウマネージャに送信して、再構成要求をウィンドウマネージャに知らせる。ウィンドウマネージャは、再構成要求で指定された変更を実行、変更又は拒否すべきかを判定する。ウィンドウマネージャは、変更を実行すべきと判定すると、再構成要求をサーバアプリケーションに送り、サーバアプリケーションは、再構成要求がウィンドウマネージャからのものであるので、再構成要求に応じる。ウィンドウマネージャは、再構成要求を変更すべきと判定すると、変更した再構成要求をサーバアプリケーションに送る。サーバアプリケーションが再構成要求に従って動作する前に、承認のために再構成要求をウィンドウマネージャに送る処理は、サブストラクチャリダイレクション（substructure redirection）と呼ばれる。
【００３１】
（ウィンドウ属性）
上述のように、サーバアプリケーションは、リソースに関する情報を含む複雑なデータ構造を保持している。ウィンドウに対するこのデータ構造は、ウィンドウの形状に加えて、ウィンドウが画面上でどのように表示され、どのように振る舞うかに関する情報を含んでいる（ウィンドウの形状のほか、ウィンドウが画面上でどのように表示され、どのように振る舞うかといったリソースの情報をデータとして保持している）。この情報は、ウィンドウ属性と呼ばれる。ウィンドウ属性のなかで、サブストラクチャのオーバライドリダイレクト属性（Substructure Redirect Override）と呼ばれるものがある。サブストラクチャのオーバライドリダイレクト属性は、ウィンドウマネージャが介入することなく、ウィンドウを画面上にマッピングすること可能か否かを判定するものである。
【００３２】
（常時可視ウィンドウ）
本発明は、クライアントアプリケーションが、常に見ることができるウィンドウを生成して表示することを可能にする。複数の常時可視ウィンドウは、ウィンドウの常時可視可能な性質を失うことなく同時に存在することができる。常時可視ウィンドウは、任意の数の通常のウィンドウとも同時に存在することができる。この場合、通常のウィンドウとは、常時可視ウィンドウでない全てのウィンドウを意味する。ここで、常時可視ウィンドウの画面上の振舞について、図２〜図８を参照しながら説明する。
【００３３】
（ウィンドウの振舞）
本発明の好ましい実施の形態において、ウィンドウは２つの単純な規則に従って振る舞う。第１の規則は、通常のウィンドウは、常時可視ウィンドウよりも上位にスタックされることが絶対にないという規則である。この結果、常時可視ウィンドウの一部が通常のウィンドウによって覆われ又は隠されることはない。第２の規則は、常時可視ウィンドウ同士は、互いに重なることを禁止されるという規則である。この結果、常時可視ウィンドウの一部が、他のどの常時可視ウィンドウによって覆われ又は隠されることがない。
【００３４】
これらの規則に基づくウィンドウの振舞を図２〜図９に示す。図２は、２つの常時可視ウィンドウ２０４、２０６と、２つの通常のウィンドウ２０８、２１０とを画面２０２上に同時に表示した表示装置２００を示す図である。ポインタ２１２も画面２０２上に図示してある。ポインタ２１２は、ユーザによって画面２０２上の位置を示すために用いられる。ポインタ２１２は、マウス又はトラックボールのようなユーザ入力装置の操作に応じて、画面２０２上を移動する。
【００３５】
図２に示す画面２０２の状態では、ウィンドウ２１０は、ウィンドウ２０８の一部に重なり、覆っている。ウィンドウ２０４、２０６は、ウィンドウ２１０の一部に重なり、覆っている。ウィンドウ２０４、２０６は、他のウィンドウによって覆われていない。
【００３６】
上述のように、２つのウィンドウが重なるときに、どのウィンドウが他のウィンドウを覆うかは、ウィンドウのスタック順序における現在に位置によって決まる。スタック順序で上位のウィンドウが、重なり合う領域に表示されて、スタック順序の下位のウィンドウを覆うことになる。したがって、図２の画面２０２の状態は、ウィンドウ２１０がウィンドウ２０８よりもスタック順序において現在上位であり、ウィンドウ２０４、２０６がウィンドウ２１０よりもスタック順序において現在上位であることとを示している。
【００３７】
ウィンドウの重なりを引き起こす操作は様々である。例えば、ウィンドウを他のウィンドウに重なる位置に移動する操作、あるいはウィンドウのサイズを他のウィンドウに重なる領域まで拡大する操作等がある。ウィンドウに対する操作はスタック順序を変える。別のウィンドウで覆われているウィンドウのスタック順序を、覆っているウィンドウよりも上位となるように変更すると、上位にされたウィンドウの覆われていた部分が画面に表示され、下位にされたウィンドウの一部又は全部を覆う。ウィンドウ環境を採用した標準的なシステムでは、ウィンドウを操作可能にするには、そのウィンドウを選択しなければならない。選択のプロセスは、例えば、ユーザ入力装置を操作して、ポインタ２１２の位置を選択すべきウィンドウの画面に表示されている部分に合わせ、マウスボタンのクリックのような所定のユーザ入力動作により行われる。ウィンドウ環境を採用した標準的なシステムでは、ウィンドウを選択すると、ウィンドウがスタック順序の最上位に自動的に設定される。なお、図３〜図８を参照して説明するように、本発明は、この標準的なウィンドウシステムを変更して、常時可視ウィンドウをサポートするようにしている。
【００３８】
図３は、ユーザがウィンドウ２１０を選択した後の画面２０２を示す。現在覆われているウィンドウ２１０の境界が点線で示してある。上述のように、ウィンドウ環境を採用した標準的なシステムでは、ウィンドウ２１０を選択することにより、ウィンドウ２１０は、スタック順序において最上位の位置にスタックされる。したがって、ウィンドウ２１０の全体が画面上に表示され、重なる他のウィンドウの一部を覆う。一方、本発明では、ウィンドウ２１０のような通常のウィンドウは、スタック順序に関し、常時可視ウィンドウよりも上位の位置には絶対に移動しない。したがって、通常のウィンドウ２１０を選択しても、通常のウィンドウ２１０は、スタック順序において、常時可視ウィンドウであるウィンドウ２０４、２０６の上位の位置には移動しない。したがって、通常のウィンドウ２１０を選択しても、画面２０２は図２に示す状態と同じになり、常時可視ウィンドウ２０４、２０６の一部が、通常のウィンドウ２１０の重なる部分を覆うことになる。このように、通常のウィンドウを１つ以上の常時可視ウィンドウに重なるように選択しても、通常のウィンドウは、常時可視ウィンドウよりもスタック順序において上位の位置には移動しないことになる。
【００３９】
図４は、ユーザが通常のウィンドウ２０８を選択して拡大した状態を示している。ウィンドウ環境を採用した標準的なシステムでは、通常のウィンドウ２０８を選択すると、通常のウィンドウ２０８がスタック順序において最上位の位置に移動する。一方、本発明のウィンドウ状態の規則に基づいて、通常のウィンドウ２０８は、他の通常のウィンドウに対しては、スタック順序において最上位の位置に置かれるが、常時可視ウィンドウに対しては、スタック順序において下位の位置を保つ。したがって、通常のウィンドウ２０８のサイズを図４に示すように変更した後には、画面２０２は図５に示すようになる。通常のウィンドウ２０８は、通常のウィンドウ２１０よりもスタック順序において上位に置かれるが、常時可視ウィンドウ２０４、２０６に対しては依然として下位に置かれる。したがって、常時可視ウィンドウ２０４、２０６は、依然として通常のウィンドウ２０８を覆っているが、通常のウィンドウ２０８は、ここで通常のウィンドウ２１０を覆うことになる。
【００４０】
図６は、ユーザが常時可視ウィンドウ２０６を、常時可視ウィンドウ２０４に重なるように画面２０２上の新たな位置に移動する試みを行っている状態を示している。上述のように、本発明では、複数の常時可視ウィンドウの重なりを禁止している。したがって、常時可視ウィンドウ２０６は、ユーザが指示した位置には移動せず、ユーザが指示した位置に最も近い位置であって、常時可視ウィンドウ２０４に重ならない位置まで戻される。このようなウィンドウの振舞によって、２つの常時可視ウィンドウは、重なる代わりに互いに衝突しているように見える。図７は、図６に示す動作後の常時可視ウィンドウ２０６の位置を示している。具体的には、常時可視ウィンドウ２０６は、常時可視ウィンドウ２０４に隣接しているが、重なっていない。常時可視ウィンドウ同士については、スタック順序における位置は、意味をなさない。
【００４１】
図８は、常時可視ウィンドウのサイズを変更して、別の常時可視ウィンドウに重ならせる試みを示している。図８では、常時可視ウィンドウ２０６のサイズを変更して、常時可視ウィンドウ２０４に重なるような試みが行われている。図６及び図７を用いて上述した例のように、本発明においては、常時可視ウィンドウ２０６のサイズの変更動作は、別の常時可視ウィンドウ２０４に重ならない位置に限定して行われる。この結果を、図９に例示する。
【００４２】
なお、移動又はサイズの変更を試みられた常時可視ウィンドウを、他の常時可視ウィンドウに重ならない位置まで戻す方式は、本発明を実施する一例にすぎない。例えば、常時可視ウィンドウを別の常時可視ウィンドウに重ならせるような操作を行うと、操作された常時可視ウィンドウを操作前の状態まで戻すようにすることも可能である。また、常時可視ウィンドウ間の重なりは、１つの常時可視ウィンドウの動きが、他の常時可視ウィンドウを別の位置に押し込むようにすることによっても禁止できる。この方法に従えば、ユーザが図９の常時可視ウィンドウ２０６を上方に移動しようと試みると、常時可視ウィンドウ２０４が、それと一緒に上方に移動する。常時可視ウィンドウ２０４が画面２０２の上端に達すると、この常時可視ウィンドウ２０４、２０６の上方向へのそれ以上の位置の変更は、不可能となる。このような常時可視ウィンドウ間の重なりを禁止する押込み方式は、他のオーバラップ技術が要求する場合よりも、複雑なウィンドウ管理ルーチンを必要とする。この複雑さは、例えば、ウィンドウＡがウィンドウＢを押し込み、ウィンドウＢがウィンドウＣ、Ｄを押し込むといった、１つの常時可視ウィンドウの動きが任意の数の他の常時可視ウィンドウの動きを要求することから生じる。
【００４３】
本発明は、常時可視ウィンドウの重なりを禁止する上述した規則を実行するあらゆる特定の方式に限定されるものではない。
【００４４】
（全体的なシステムの説明）
図１０は、上述のウィンドウの振舞を実現するコンピュータシステム１０００の機能ブロックを示す図である。コンピュータシステム１０００は、表示装置１００２と、入力装置１００４と、ウィンドウ管理装置１００６とを備えている。ウィンドウ管理装置１００６は、表示装置１００２に表示するウィンドウを管理する。図１０に示す例では、表示装置１００２には、ウィンドウ１００８、１０１０、１０１２の３つのウィンドウが表示されている。
【００４５】
ウィンドウ管理装置１００６は、メモリ１０１４と、ウィンドウ表示部１０１８と、入力受信部１０２０とを備える。メモリ１０１４は、表示装置１００２に表示される複数のウィンドウのそれぞれの属性ＷＮＤ１（１０２２）、ＷＮＤ２（１０２４）、ＷＮＤ３（１０２６）を記憶している。メモリ１０１４に記憶されている属性ＷＮＤ１（１０２２）、ＷＮＤ２（１０２４）、ＷＮＤ３（１０２６）には、各ウィンドウに関する、スタック順序における位置と、画面上の位置及びサイズ（垂直方向と水平方向の大きさ含む）と、ウィンドウが常時可視ウィンドウであるか否かとが書き込まれている。
【００４６】
常時可視（always-visible）属性は、Ｘウィンドウ仕様で定められ、サポートされている通常のウィンドウ属性ではない。したがって、常時可視属性を別に定めると、他のシステムとは互換性がないと考えられる拡張をＸウィンドウシステムに設定することになる。他のシステムとの互換性といった観点からは、常時可視属性は、ウィンドウ属性に存在しない方が望ましい。したがって、本発明においては、Ｘウィンドウシステムに前から存在していた属性及び／又はプロパティを、常時可視ウィンドウの値の記憶に用いることにする。一実施の形態では、Ｘウィンドウ仕様で定義されているオーバライドリダイレクト（override-redirect）属性を常時可視（always-visible）のフラグとして用いるようにする。また、別の実施の形態では、ルートウィンドウ（root window）に、常時可視ウィンドウを識別するためのリストをプロパティとして設定するようにする。以下、これらの実施の形態について詳細に説明する。
【００４７】
図１０は、オーバライドリダイレクト属性を常時可視ウィンドウのフラグとして用いる実施の形態を示す図である。図１０に示す例では、属性ＷＮＤ１（１０２２）は、ウィンドウ１００８が常時可視ウィンドウでなく、ウィンドウ１００８がスタック順序の第３位であることを示すデータを含んでいる。属性ＷＮＤ２（１０２４）は、ウィンドウ１０１０が常時可視ウィンドウでなく、ウィンドウ１０１０がスタック順序の第２位であることを示すデータを含んでいる。属性ＷＮＤ３（１０２６）は、ウィンドウ１０１２が常時可視ウィンドウであり、ウィンドウ１０１２がスタック順序の第１位であることを示すデータを含んでいる。
【００４８】
ウィンドウ表示部１０１８は、メモリ１０１４に記憶されている属性ＷＮＤ１（１０２２）、ＷＮＤ２（１０２４）、ＷＮＤ３（１０２６）に基づいて、表示装置１００２にウィンドウ１００８、１０１０、１０１２を表示させる。表示装置１００２上において２つ以上のウィンドウの一部が重なるときは、ウィンドウ表示部１０１８は、表示装置１００２に、重なっている領域には、上位にスタックされているウィンドウを優先して表示させる。例えば、ウィンドウ１００８とウィンドウ１０１０が重なるときは、ウィンドウ１０１０はスタック順序に関してウィンドウ１００８よりも上位なので、重なる領域には、ウィンドウ１０１０の情報が表示される。
【００４９】
入力受信部１０２０は、入力装置１００４が接続されており、ユーザから、例えばメモリ１０１４に記憶されている属性の変更を指示する入力を受信する。ウィンドウ表示部１０１８は、オーバラップ処理部１０２８と、オーバラップ変更部１０３０と、スタック順序処理部１０３２と、スタック順序変更部１０３４とを備えている。
【００５０】
オーバラップ処理部１０２８は、属性の変更により、２つ以上の常時可視ウィンドウの重なりが生じるか否かを判定する。オーバラップ変更部１０３０は、常時可視ウィンドウ間の重なりを禁止するために、属性ＷＮＤ１（１０２２）、ＷＮＤ２（１０２４）、ＷＮＤ３（１０２６）を必要に応じて変更する。スタック順序処理部１０３２は、常時可視ウィンドウではないウィンドウが、スタック順序に関し、常時可視ウィンドウよりも上位に移動されるか否かを判定する。スタック順序変更部１０３４は、常時可視ウィンドウが常時可視ウィンドウでないウィンドウよりもスタック順序に関して下位の位置を有することを禁止するために、属性ＷＮＤ１（１０２２）、ＷＮＤ２（１０２４）、ＷＮＤ３（１０２６）を必要に応じて変更する。
【００５１】
上述のように、オーバラップ処理部１０２８とオーバラップ変更部１０３０は、協働して、常時可視ウィンドウが他の常時可視ウィンドウに隠されないことを保証する。同様に、スタック順序処理部１０３２とスタック順序変更部１０３４は、協働して、常時可視ウィンドウが常時可視ウィンドウでないあらゆるウィンドウによって隠されないことを保証する。したがって、表示装置１００２に表示される常時可視ウィンドウが他の任意のウィンドウによって隠されることは、絶対にない。
【００５２】
（クライアントベースの実施）
上述のように、Ｘウィンドウシステムにおいて、ウィンドウマネージャのクライアントアプリケーションは、ユーザインタフェースの振舞を定める規則を管理する。ウィンドウの動き又は表示される外観に影響をおよぼす全ての要求は、最初にサブストラクチャのリダイレクション（substructure redirection）を介してウィンドウマネージャに送られる。現在のウィンドウマネージャは、上述の常時可視ウィンドウの振舞をサポートしていない。そこで、本発明の一実施の形態においては、常時可視ウィンドウのサブストラクチャのオーバライドリダイレクト属性（Substructure Override Redirect attribute）を設定することによって、常時可視ウィンドウのサブストラクチャリダイレクションを無効にする。サブストラクチャのオーバライドリダイレクト属性は常時可視ウィンドウに対してだけ設定されるので、サブストラクチャのオーバライドリダイレクト属性の値も、常時可視ウィンドウを通常のウィンドウから区別するフラグとして機能する。
【００５３】
本発明を実施するクライアントアプリケーションが常時可視ウィンドウを識別すると、上述のように、クライアントアプリケーションは、それ自体の常時可視ウィンドウのリストを維持する。リストは、ウィンドウＩＤと、ウィンドウの位置と、ウィンドウの形状とを含む各常時可視ウィンドウに関する情報を有する。
【００５４】
クライアントアプリケーションは、常時可視ウィンドウの可視性に影響を及ぼす可能性のある全てのグラフィックイベントを追跡する。グラフィックイベントが常時可視ウィンドウの一部又は全部を隠すように働くときは、クライアントアプリケーションは、上述のウィンドウの振舞に関する規則を実施するために、グラフィックイベントを変更する。特に、クライアントアプリケーションは、通常のウィンドウがスタック順序の最上位に置かれたことを検出して、全ての常時可視ウィンドウを通常のウィンドウよりスタック順序に関して上位にさせる要求を直ちに送る。
【００５５】
また、クライアントアプリケーションは、常時可視ウィンドウが移動又はサイズ変更されたことを検出し、新しい位置とサイズについて、他の全ての常時可視ウィンドウとの関係を調べる。ウィンドウの移動又はサイズの変更によって、常時可視ウィンドウが１つ以上の他の常時可視ウィンドウに重なるときは、クライアントアプリケーションは、重ならない限界の位置まで常時可視ウィンドウの位置又はサイズを再設定する要求を送る。
【００５６】
（ウィンドウマネージャベースの実施）
上述の、ウィンドウマネージャを避けてクライアントベースで常時可視ウィンドウを管理する実施の形態に続き、以下、ウィンドウマネージャベースの実施の形態を示す。
【００５７】
クライアントベースにおける実施の形態に類似して、ウィンドウマネージャは、常時可視ウィンドウの一部を覆う又は隠す可能性のあるイベントと常時可視ウィンドウのリストを保持している。この実施の形態では、常時可視ウィンドウの一部を隠すと思われる動作を他のクライアントアプリケーションが行うことを禁止するために、オーバライドリダイレクト属性以外のフラグが、常時可視ウィンドウを識別するために用いられる。例えば、常時可視ウィンドウのリスト（always-visible window list）が、ルートウィンドウに付けられるプロパティとして定義され、生成される。
【００５８】
図１１に、常時可視ウィンドウリスト１１０２が常時可視ウィンドウを識別するために用いられている実施の形態を示す。常時可視ウィンドウリスト１１０２は、それぞれ存在する常時可視ウィンドウに対応するウィンドウ識別子を有する。さらに、常時可視ウィンドウリスト１１０２は、表示装置１００２の唯一の常時可視ウィンドウであるウィンドウ１０１２に対応するエントリ１１０４を含んでいる。ユーザがウィンドウのサイズを変更する操作、あるいはウィンドウを選択し又は移動する操作を行っている間、ウィンドウ表示部１０１８は、常時可視ウィンドウリスト１１０２にアクセスして、どのウィンドウが常時可視ウィンドウであるかを調べる。ウィンドウ表示部１０１８が常時可視ウィンドウリストを用いて常時可視ウィンドウを識別すると、ウィンドウ表示部１０１８と通常のＸシステムウィンドウマネージャによる常時可視ウィンドウの協働制御が可能になる。
【００５９】
（Ｘクライアントアプリケーション）
図１２は、本発明に基づくＸクライアントアプリケーションの動作を示すフローチャートである。Ｘクライアントは、１つ以上のウィンドウを常時可視（always visible）であるとして指定できるように設計されている。上述のように、ウィンドウを常時可視ウィンドウとして指定する方法は幾通りもある。図１３と図１４はウィンドウを常時可視ウィンドウとして指定する２通りの方法を示している。図１３に示す方法によれば、オーバライド属性を有する全てのウィンドウが常時可視ウィンドウになる。図１４に示す方法によれば、全ての常時可視ウィンドウのウィンドウＩＤのリストがルートウィンドウにプロパティとして組み込まれる。この方法では、常時可視ウィンドウを生成する各アプリケーションが、ウィンドウの生成時に、そのウィンドウＩＤを常時可視ウィンドウリストに加えることができる。後述するバンプウィンドウマネージャは、常時可視ウィンドウが消去されるときに、その常時可視ウィンドウのＩＤを常時可視ウィンドウリストから自動的に削除する。
【００６０】
図１２において、Ｘクライアントは、Ｓ１２０２でＸサーバに接続する。ＸクライアントとＸサーバとの接続は、ＸクライアントがＸサーバにＸリブコール（Xlib call）を送ることによって行われる。Ｘリブコールは、Ｘクライアントと指定されたＸサーバとの間の通信パスを構築する。
【００６１】
Ｓ１２０４で、Ｘクライアントはウィンドウを生成する。Ｓ１２０８で、Ｘクライアントは、Ｓ１２０４で生成したウィンドウを常時可視ウィンドウとして指定する。上述のように、ウィンドウは幾通りもある方法のうちの１つに従って常時可視ウィンドウの指定を行う。
【００６２】
図１３に示す方法によれば、ウィンドウのオーバライド属性が、Ｓ１２１６でセットされ、ウィンドウは常時可視ウィンドウとなる。
【００６３】
図１４に示す方法においては、ルートウィンドウは、常時可視ウィンドウリストと定義されるプロパティを有し、Ｓ１２１８で、常時可視ウィンドウリストプロパティが検索される。Ｓ１２２０で、新たに生成したウィンドウに対応するウィンドウＩＤが、常時可視ウィンドウリストにエントリとして追加され、その追加を反映した常時可視ウィンドウリストプロパティの内容の変更がＳ１２２２で行われる。常時可視ウィンドウリストに対応するルートウィンドウリストプロパティが変更される。
【００６４】
図１２において、ウィンドウは、Ｓ１２１０でマッピングされ、該当するディスプレイに表示される。Ｓ１２１２で、クライアントは全てのクライアント処理を実行する。このステップはクライアントの動作を包括的に表している。このステップの中で、Ｘクライアントにおいて、実際に実行されるステップは、Ｘクライアント自身、ユーザ、アプリケーションといった要素によって多種多様なものとなる。
【００６５】
Ｘクライアント動作中に、常時可視ウィンドウに影響する種々のイベントが発生することが想定される。例えば、他のウィンドウ（常時可視ウィンドウと通常のウィンドウの両方）が、生成され、マップされ、移動され、サイズ再設定され、消去される。Ｘクライアントが全ての処理を終えると、Ｘクライアントは、ウィンドウをＳ１２１４で消去する。
【００６６】
（バンプウィンドウマネージャ）
本発明の実施の形態においては、バンプウィンドウマネージャ（Bump Window Manager）が、上述のウィンドウの振舞を実現するために用いられる。バンプウィンドウマネージャは、Ｘウィンドウマネージャの構成要素になるか、又はＸウィンドウマネージャから独立して、Ｘウィンドウマネージャと共存する。バンプウィンドウマネージャの働きは、常時可視ウィンドウとして指示されたウィンドウを識別して監視するすることである。スタック順序が変更されると、バンプウィンドウマネージャは、全ての常時可視ウィンドウが全ての他のウィンドウよりも上位にスタックされていることを確かめる。常時可視ウィンドウが移動又はサイズ変更されると、バンプウィンドウマネージャは、他の常時可視ウィンドウとの重なりについてチェックする。このような重なりが見つかると、バンプウィンドウマネージャは、移動やサイズの変更が行われた常時可視ウィンドウを再度移動し、又はウィンドウサイズを再度変更し、他の常時可視ウィンドウに重ならないようにする。バンプウィンドウマネージャの動作について、図１５〜図１９を参照しながら詳細に説明する。
【００６７】
図１５は、バンプウィンドウマネージャの動作を示すフローチャートである。Ｓ１３０２で、バンプウィンドウマネージャはＸサーバに接続する。接続は、バンプウィンドウマネージャと指定されたＸサーバとの間にパスを設定することで行われる。
【００６８】
Ｓ１３０４で、バンプウィンドウマネージャは常時可視ウィンドウリストを初期設定する。図１６は、Ｓ１３０４においてバンプウィンドウマネージャが行うステップを詳細に示している。Ｓ１３１４で、バンプウィンドウマネージャはウィンドウのリストについてＸサーバに問い合わせる。Ｓ１３１６で、バンプウィンドウマネージャは、ウィンドウのリストの常時可視ウィンドウを識別して、常時可視ウィンドウのリストを生成する。Ｘサーバに認識されるウィンドウのうち、どのウィンドウが常時可視ウィンドウであるか否かを識別するために、バンプウィンドウマネージャが用いる方法は、常時可視ウィンドウの指定に用いた方法に依存する。例えば、オーバライド属性をフラグとして用いて常時可視ウィンドウを指定する場合、バンプマネージャは、Ｘサーバが識別した全てのウィンドウのオーバライド属性を検査する。常時可視ウィンドウリストをプロパティとしてルートウィンドウに組み込む場合、バンプウィンドウマネージャは、ルートウィンドウの該当するプロパティを検査する。
【００６９】
Ｓ１３１８で、バンプウィンドウマネージャは全ての常時可視ウィンドウのサイズと位置についてＸサーバに問い合わせる。Ｓ１３２０で、バンプウィンドウマネージャは、常時可視ウィンドウリストに、常時可視ウィンドウのサイズ及び位置と、ステイタス（マッピングされているか否か）とを保存する。そこで、常時可視ウィンドウリストの各常時可視ウィンドウのエントリは、常時可視ウィンドウのウィンドウＩＤと、位置及びサイズと、ステイタスと、スタック順序とを有していることになる。
【００７０】
Ｓ１３２２で、バンプウィンドウマネージャは新しいリストを処理する。新しい常時可視ウィンドウリストを処理するためにバンプウィンドウマネージャが行う動作が図１７に図示してある。図１７を見ると、Ｓ１３２６と１３３８と１３４０は、マッピングした常時可視ウィンドウ間に重なりが生じるまで、又は常時可視ウィンドウの全てのエントリが処理されるまでループする。
【００７１】
マッピングしてないウィンドウは、情報が表示されないので、別のウィンドウに隠されるといった問題は起こり得ない。したがって、好ましい実施の形態においては、マッピングしてない常時可視ウィンドウと他の常時可視ウィンドウとの間の重なりは、無視される。
【００７２】
重なりが、マッピングされた常時可視ウィンドウと１つ以上の他のマッピングされた常時可視ウィンドウとの間に発生すると、ステップは、Ｓ１３２６からＳ１３２８に進む。Ｓ１３２８で、バンプウィンドウマネージャは、常時可視ウィンドウが他の全てのマッピングされた常時可視ウィンドウとの間に重ならない位置を検索する。Ｓ１３３０で、このような位置が存在するか否かについて判定される。このような位置が存在すると、常時可視ウィンドウは、Ｓ１３３６でその位置に移動する。このような位置が存在しないときは、制御はＳ１３３２に進む。
【００７３】
Ｓ１３３２で、バンプウィンドウマネージャは、常時可視ウィンドウのサイズ限界に達しているか否かを判定する。この場合、サイズ限界は、常時可視ウィンドウにパラメータとして設定されている。常時可視ウィンドウがサイズ限界に達していれば、ステップはＳ１３３８に進んで、リストの次の常時可視ウィンドウエントリが処理される。常時可視ウィンドウのサイズ限界に達していなければ、常時可視ウィンドウのサイズが縮小される。Ｓ１３２６、Ｓ１３２８、Ｓ１３３０、Ｓ１３３２とＳ１３３４は、ウィンドウが重ならなくなるまで、ループし、常時可視ウィンドウの移動又はそのサイズ限界までの縮小を繰り返す。
【００７４】
図１５のＳ１３０６において、バンプウィンドウマネージャは、常時可視ウィンドウリストの初期設定中、ウィンドウイベントを待機している。ウィンドウイベントが発生すると、制御は、ウィンドウイベントが実行されるＳ１３０８に進む。以下、Ｓ１３０８について、図１８と図１９を参照しながら詳細に説明する。
【００７５】
図１８と図１９は、ウィンドウイベントが発生したときに、バンプウィンドウマネージャが行うステップのフローチャートを示している。Ｓ１３４２で、バンプウィンドウマネージャは、発生したイベントを識別するデータを読みとる。Ｓ１３４４〜Ｓ１３５８で、バンプウィンドウマネージャは、発生したイベントの種類を識別する。
【００７６】
イベントが特定のウィンドウが移動されることを示す場合、制御は、Ｓ１３４４からＳ１３６０に進む。Ｓ１３６０で、バンプウィンドウマネージャは、動作が行われるウィンドウが常時可視ウィンドウであるか否かを判定する。ウィンドウが常時可視ウィンドウでないときは、バンプウィンドウマネージャは、特別な処理を行わない。ウィンドウが常時可視ウィンドウであるときは、制御はＳ１３７６に進む。Ｓ１３７６で、バンプウィンドウマネージャは、その移動で常時可視ウィンドウが別の常時可視ウィンドウに重なるか否かを判定する。判定の結果、移動した常時可視ウィンドウが他の常時可視ウィンドウに重ならないときは、バンプウィンドウマネージャは、特別な処理を行わない。Ｓ１３７６における判定の結果、移動した常時可視ウィンドウが他の常時可視ウィンドウに重なるときは、ステップはＳ１３８４に移り、常時可視ウィンドウは、重ならない位置に移動される。重ならない位置とは、例えば、他の常時可視ウィンドウに隣接しているが重ならない位置等である。Ｓ１３９０で、常時可視ウィンドウリストは更新され、移動したウィンドウの新しい位置のデータが追加される。
【００７７】
また、イベントが特定のウィンドウのサイズを変更するものであるときは、制御はＳ１３４６からＳ１３６２に進む。Ｓ１３６２で、バンプウィンドウマネージャは、動作が行われるウィンドウが常時可視ウィンドウであるか否かを判定する。ウィンドウが常時可視ウィンドウでないときは、バンプウィンドウマネージャは、特別な処理を行わない。ウィンドウが常時可視ウィンドウであるときは、制御はＳ１３７８に進む。Ｓ１３７８で、バンプウィンドウマネージャは、常時可視ウィンドウのサイズの変更によって、その常時可視ウィンドウが別の常時可視ウィンドウに重なるか否かを判定する。Ｓ１３７８における判定の結果、サイズを変更された常時可視ウィンドウが他の常時可視ウィンドウに重ならないときは、バンプウィンドウマネージャは、特別な処理を行わない。Ｓ１３７８における判定の結果、サイズを変更された常時可視ウィンドウが他の常時可視ウィンドウに重なるときは、ステップはＳ１３８６に移り、その常時可視ウィンドウを他の常時可視ウィンドウに重ならないサイズに変更する。当然、Ｓ１３８６で変更されたサイズは、イベントで指定されたサイズより小さくなる。サイズは、例えば、サイズ変更したウィンドウの境界が他の常時可視ウィンドウの境界に隣接するが重ならないサイズに変更される。Ｓ１３９２で、常時可視ウィンドウリストは更新され、変更したウィンドウの新しいサイズのデータが追加される。
【００７８】
イベントがスタック順序を変更するものであるときは、ステップはＳ１３４８からＳ１３６４に進む。Ｓ１３６４で、バンプウィンドウマネージャは、イベント発生後の新しいスタック順序において、常時可視ではないウィンドウが任意の常時可視ウィンドウの上位になっているか否かを判定する。常時可視ではないウィンドウが、スタック順序において常時可視ウィンドウの上位にないときは、バンプウィンドウマネージャは、特別な処理を行わない。常時可視ではないウィンドウがイベント発生後の新しいスタック順序において常時可視ウィンドウの上位にあるときは、ステップはＳ１３８０に進む。Ｓ１３８０で、バンプウィンドウマネージャは、全ての常時可視ウィンドウがスタック順序に関して全ての常時可視ではないウィンドウの上位になるようにスタック順序を変更する。
【００７９】
イベントが特定のウィンドウを生成するものであるときは、ステップはＳ１３５０からＳ１３６６に進む。Ｓ１３６６で、バンプウィンドウマネージャは、新たに生成したウィンドウが常時可視ウィンドウであるか否かを判定する。ウィンドウが常時可視ウィンドウでないときは、バンプウィンドウマネージャはＳ１３８２で、全ての常時可視ウィンドウが、スタック順序に関して、全ての常時可視ではないウィンドウの上位となるように、スタック順序を変更する。ウィンドウが常時可視ウィンドウであるときは、ステップはＳ１３８８に進み、新たに生成した常時可視ウィンドウのエントリが常時可視ウィンドウリストに追加され、常時可視ウィンドウリストが更新される。
【００８０】
イベントが特定のウィンドウを消去するものであるときは、ステップはＳ１３５２からＳ１３６８に進む。Ｓ１３６８で、バンプウィンドウマネージャは、動作が行われるウィンドウが常時可視ウィンドウであるか否かを判定する。消去されたウィンドウが常時可視ウィンドウでないときは、バンプウィンドウマネージャは、特別な処理を行わない。消去されたウィンドウが常時可視ウィンドウであるときは、制御はＳ１３９６に進み、Ｓ１３９６で、常時可視ウィンドウリストが更新され、消去される常時可視ウィンドウのエントリが、常時可視ウィンドウリストから削除される。
【００８１】
イベントが特定のウィンドウをマッピングするものであるときは、ステップはＳ１３５４からＳ１３７０に進む。Ｓ１３７０で、バンプウィンドウマネージャは、マッピングされるウィンドウが常時可視ウィンドウであるか否かを判定する。マッピングされるウィンドウが常時可視ウィンドウでないときは、バンプウィンドウマネージャは、特別な処理を行わない。マッピングされるウィンドウが常時可視ウィンドウであるときは、ステップはＳ１３９８に移る。Ｓ１３９８では、イベントに関する常時可視ウィンドウのマッピングを反映する、常時可視ウィンドウリストの更新がなされ、常時可視ウィンドウのエントリにおけるステイタス（ウィンドウがマッピングされているか否かに関する）に変更が加えられる。エントリが変更されると、ステップはＳ１３９４に移り、常時可視ウィンドウリストは、マッピングした常時可視ウィンドウと、他のマッピングされている常時可視ウィンドウとの重なりを防ぐ処理がなされる。この常時可視ウィンドウリストの処理の内容は図１７を参照して既に述べたものと同様である。
【００８２】
イベントが特定のウィンドウをマップ除去（既にマッピングされているウィンドウをマッピングされていない状態にすること）するものであるときは、ステップはＳ１３５６からＳ１３７２に進む。Ｓ１３７２で、バンプウィンドウマネージャは、マップ除去が行われるウィンドウが常時可視ウィンドウであるか否かを判定する。マップ除去されるウィンドウが常時可視ウィンドウでないときは、バンプウィンドウマネージャは、特別な処理を行わない。ウィンドウが常時可視ウィンドウであるときは、ステップはＳ１４００に進む。Ｓ１４００では、イベントに関する常時可視ウィンドウのマップ除去を反映する、常時可視ウィンドウリストの更新がなされ、常時可視ウィンドウのエントリにおけるステイタス（ウィンドウがマッピングされているか否かに関する）に変更が加えられる。
【００８３】
イベントがウィンドウのプロパティを変更するものであるときは、制御はＳ１３５８からＳ１３７４に進む。Ｓ１３７４で、バンプウィンドウマネージャは、変更されるプロパティが常時可視ウィンドウリストプロパティであるか否かを判定する。変更される特性が常時可視ウィンドウリストでないときは、バンプウィンドウマネージャは、特別な処理を行わない。変更されるプロパティが常時可視ウィンドウリストであるときは、ステップはＳ１４０２に進む。Ｓ１４０２では、常時可視ウィンドウリストの内容が、イベントの指示に基づいて変更される。常時可視ウィンドウリストの内容が変更されると、常時可視ウィンドウリストは、Ｓ１４０４において、マッピングされている常時可視ウィンドウと、他のマッピングされている常時可視ウィンドウとの重なりを防ぐ処理がなされる。この常時可視ウィンドウリストの処理の内容は図１７を参照して既に述べたものと同様である。
【００８４】
図１５において、バンプウィンドウマネージャが終了可能になるまで、Ｓ１３０６、Ｓ１３０８及びＳ１３１０ではループし、上述の処理を繰り返す。バンプウィンドウマネージャが終了可能になると、ステップはＳ１３１０からＳ１３１２に進み、Ｓ１３１２で、バンプウィンドウマネージャは、バンプウィンドウマネージャとＸサーバとの接続を切断する。
【００８５】
（背景透明性）
本発明に背景透明性（Transparent Background）を有する常時可視ウィンドウを用いることによって、さらに好ましい実施の形態を得ることができる。背景透明性とは、ウィンドウに表示されるデータ以外の背景を透明にする性質である。背景透明性を有するウィンドウの背景に当たる画面領域では、覆われているウィンドウの一部が表示される。背景ではない部分、つまりデータの部分は、透明性を有さず、画面に表示される。常時可視ウィンドウがこの背景透明性を有することによって、特定のデータを常に画面に表示することを保証しながら、常時可視ウィンドウによって隠される情報の量を最小限にすることができる。
【００８６】
（可能性のあるアプリケーション）
本発明が提供する常時可視ウィンドウは、重要な情報を常時表示しなければならないコンピュータアプリケーションにとって理想的である。例えば、航空交通管制において、航空機に関連するデータの中で、他の情報によって覆われることが許されないデータがある。今日まで、この制約のために、航空交通管制アプリケーションはウィンドウベース環境を活用できなかった。しかしながら、重要なデータを常時可視ウィンドウで表示することによって、航空交通管制アプリケーションも、ウィンドウベースのグラフィック環境を活用できることとなる。航空交通管制は、本発明から大きな利益を得ることができる分野の１例にすぎない。本発明は、任意の特殊な使用分野に限定されるものではない。
【００８７】
以上、本発明の特別な実施の形態について説明してきたが、本発明は、上記実施の形態のみに限定されるものでなく、種々の変更と変形を含むものである。
【００８８】
【発明の効果】
以上のように、本発明によれば、コンピュータのウィンドウ環境にウィンドウの常時可視のクラスを構築可能な情報表示方法及びウィンドウ管理装置を提供することができる。これにより、ユーザは、１つ以上のウィンドウを常時可視ウィンドウとして指定できる。常時可視ウィンドウが常時可視ではないウィンドウに重なると、常時可視ウィンドウは常時可視ではないウィンドウより上に表示される。また、常時可視ウィンドウは、互いに重ならないように構成される。
【００８９】
本発明によれば、Ｘウィンドウシステムに適応する状態で常時可視のクラスの構築することができる。ある方式では、オーバライド属性が、どのウィンドウが常時可視ウィンドウあるかを識別するフラグとして用いられる。また、別の方式では、常時可視ウィンドウのリストがルートウィンドウにプロパティとして組み込まれる。
【００９０】
本発明によれば、情報を表示装置上の複数のウィンドウに同時に表示できる。複数のウィンドウが第１の常時可視ウィンドウを含んでいる。複数のウィンドウに対応する複数のウィンドウが維持される。特に、各ウィンドウに対する構成が、表示装置のウィンドウの位置と形状を反映するように維持される。
【００９１】
第２のウィンドウの一部に第１の常時可視ウィンドウの一部を表示する表示装置の共通領域を占めさせるイベントが、検出される。このようなイベントを検出すると、第２のウィンドウも、常時可視ウィンドウであるか否かが判定される。第２のウィンドウが常時可視ウィンドウであるときは、１つ又は両方のウィンドウのが、ウィンドウ間の重なりを禁止するために変更される。第２のウィンドウが常時可視ウィンドウでないときは、第１のウィンドウが第２のウィンドウに表示される。
【００９２】
本発明によれば、スタック順序が複数のウィンドウに対応して維持される。第２のウィンドウに、第１の常時可視ウィンドウよりも上位にスタックされた位置を持たせる、ユーザ入力が受信される。第２のウィンドウが常時可視ウィンドウでないときは、スタック順序は、第１の常時可視ウィンドウに第２のウィンドウよりも上位にスタックされた位置を持たせるために変更される。
【００９３】
本発明によれば、種々の技術がウィンドウを常時可視ウィンドウとして指示するために使用できる。一実施の形態では、Ｘウィンドウシステムに存在するオーバライドリダイレクト属性が、常時可視ウィンドウを指示するフラグとして用いられる。別の実施の形態では、ルートウィンドウに組み込まれている特性が、常時可視ウィンドウリストとして用いられる。ウィンドウを常時可視ウィンドウとして指示するために、ウィンドウを識別するエントリが常時可視ウィンドウリストに加えられる。これらの技術は、共に、Ｘウィンドウ基準から逸脱せずに使用できる。
【図面の簡単な説明】
【図１】  本発明が適用されるコンピュータシステムの構成を示す図である。
【図２】  画面上に２つの常時可視ウィンドウと２つの通常のウィンドウを同時に表示する表示装置の画面を示す図である。
【図３】  ユーザが常時可視ウィンドウに重なるように通常のウィンドウを選択した後の表示装置の画面を示す図である。
【図４】  ユーザが通常のウィンドウを選択してサイズを拡大し、通常のウィンドウを常時可視ウィンドウに重ならせるときの表示装置の画面を示す図である。
【図５】  図４に示したサイズ変更動作が終了したときの表示装置の画面を示す図である。
【図６】  ユーザが、常時可視ウィンドウを別の常時可視ウィンドウに重なる位置に移動しようとしたときの表示装置の画面を示す図である。
【図７】  常時可視ウィンドウが移動される様子を示す図６に示した動作が、別の常時可視ウィンドウに重なることを許可されない後の、表示装置の画面を示す図である。
【図８】  ユーザが、常時可視ウィンドウが別の常時可視ウィンドウに重なるように常時可視ウィンドウのサイズの変更を試みるときの、表示装置の画面を示す図である。
【図９】  図８に示した動作の後の表示装置の画面を示す図である。
【図１０】  本発明に基づく常時可視ウィンドウを実現するウィンドウコンピュータシステムの機能構成を示すブロック図である。
【図１１】  本発明に基づく常時可視ウィンドウを実現するウィンドウコンピュータシステムの他の機能構成を示すブロック図である。
【図１２】  本発明に基づくＸクライアントの動作を示すフローチャートである。
【図１３】  本発明に基づいて常時可視ウィンドウを指定するステップを示すフローチャートである。
【図１４】  本発明に基づいて常時可視ウィンドウを指示するステップを示すフローチャートである。
【図１５】  本発明に基づくバンプウィンドウマネージャの動作を示すフローチャートである。
【図１６】  常時可視ウィンドウリストを初期化するために、バンプウィンドウマネージャによって行われるステップを示すフローチャートである。
【図１７】  常時可視ウィンドウを処理して、常時可視ウィンドウ間の重なりを防止するために、バンプウィンドウマネージャによって行われるステップを示すフローチャートである。
【図１８】  ウィンドウに影響するイベントの検出に応じて、バンプウィンドウマネージャによって行われるステップを示すフローチャートである。
【図１９】  図１８に示したフローチャートの続きを示すフローチャートである。
【符号の説明】
１０１  バス、１０２  プロセッサ、１０４  メインメモリ、１０７  記憶装置、１２１  ディスプレイ、１２２  キーボード、１２３  カーソルコントローラ、２００  表示装置、２０２  画面、１００４  入力装置、１０１４  メモリ、１０１８  ウィンドウ表示部、１０２０  入力受信部、ＷＮＤ１（１０２２）  属性、ＷＮＤ２（１０２４）  属性、ＷＮＤ３（１０２６）  属性、１０２８  オーバラップ処理部、１０３０  オーバラップ変更部、１０３２  スタック順序処理部、１０３４  スタック順序変更部、１１０２  常時可視ウィンドウリスト、１１０４  ウィンドウ１０１２のエントリ
【図１】
0004076239.tif 000002
【図２】
0004076239.tif 000003
【図３】
0004076239.tif 000004
【図４】
0004076239.tif 000005
【図５】
0004076239.tif 000006
【図６】
0004076239.tif 000007
【図７】
0004076239.tif 000008
【図８】
0004076239.tif 000009
【図９】
0004076239.tif 000010
【図１０】
0004076239.tif 000011
【図１１】
0004076239.tif 000012
【図１２】
0004076239.tif 000013
【図１３】
0004076239.tif 000014
【図１４】
0004076239.tif 000015
【図１５】
0004076239.tif 000016
【図１６】
0004076239.tif 000017
【図１７】
0004076239.tif 000018
【図１８】
0004076239.tif 000019
【図１９】
0004076239.tif 000020