(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下に図面を参照して、本発明にかかる表示制御プログラム、表示制御方法および表示制御装置の実施の形態を詳細に説明する。
【0011】
(実施の形態)
(情報処理装置の概要)
まずは、実施の形態にかかる表示制御プログラム、表示制御方法および表示制御装置を実現する情報処理装置の概要について説明する。
図1は、実施の形態にかかる表示制御プログラム、表示制御方法および表示制御装置を実現する情報処理装置の概要の一例を示すブロック図である。
【0012】
図1において、情報処理装置100は、具体的には、たとえばパーソナル・コンピュータ、ワークステーション、サーバなどの情報処理装置である。情報処理装置100は、本体101と、ディスプレイ102と、キーボード103と、マウス104、とから構成される。
【0013】
本体101は、情報所為装置100の全体を司る装置であり、
図2において説明する、CPU(Central Processing Unit)と、メモリと、I/F(Interface)などを備えている。
【0014】
ディスプレイ102は、カーソル、アイコン、ウィンドウあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ102は、たとえば、液晶ディスプレイ、有機EL(Electroluminescence)ディスプレイなどを採用することができる。また、ディスプレイ102は、画像を投影するプロジェクターであってもよく、また、ヘッドマウントディスプレイなどであってもよい。
【0015】
情報処理装置100と、ディスプレイ102、キーボード103、マウス104とは、ケーブルを用いて、あるいは、Wi-Fi、Bluetooth(登録商標)などの無線通信を用いて、接続するようにしてもよい。
【0016】
このように、情報処理装置100によって、実施の形態にかかる表示制御プログラム、表示制御方法および表示制御装置を実現することができる。なお、キーボード103、マウス104については、後述する
図2において説明する。
【0017】
(表示制御装置のハードウェア構成例)
図2は、実施の形態にかかる表示制御装置のハードウェア構成の一例を示すブロック図である。
図2において、表示制御装置は、CPU201と、メモリ202と、I/F203と、入力装置204と、
図1に示したディスプレイ102と、を有する。また、各構成部201〜204およびディスプレイ102は、バス200によってそれぞれ接続される。
【0018】
ここで、CPU201は、表示制御装置の全体の制御を司る。メモリ202は、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、たとえば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU201のワークエリアとして使用される。
【0019】
このようにして、マルチウィンドウのGUIを装備したオペレーティングシステム(OS)を用いて、GUI上でユーザーは複数のアプリケーションを起動し、ウィンドウを切り替えて、同時に複数のアプリケーションを操作することができる。
【0020】
マルチウィンドウシステムは、具体的には、たとえば、ハードウェアの制御をおこなうウィンドウシステム基本部と、アプリケーションの切替を制御するウィンドウマネージャと、アプリケーションに共通のGUI部品を提供するウィジェットツールキットと、ウィンドウシステムで動作するGUIアプリケーションと、で構成される。
【0021】
ここで、ウィンドウシステム基本部は、ディスプレイアダプタの物理的な違いを吸収し、ディスプレイに最適な解像度の表示領域を設定する。また、ウィンドウシステム基本部は、ポインティングデバイスの物理的な違いを吸収し、ディスプレイ上にポインティングデバイスのアイコン(マウスカーソル)を表示する。
【0022】
また、ウィンドウマネージャは、ウィンドウの配置や外観を管理する。ウィンドウのオープン、クローズ、最小化、最大化、移動、サイズ変更をおこなうためのタイトルバーやメニュー、アイコンを表示する。
【0023】
また、GUIアプリケーションは、ウィジェットツールキットを使用してウィンドウシステムで使用する標準的な画面部品を表示する。標準的な画面部品には、ラベル部品、ボタン部品、リスト部品、テキスト編集部品、メッセージ部品などがある。また、GUIアプリケーションは、イベント駆動型プログラムとして実装され、ウィンドウシステムにイベントを処理するためのウィンドウプロシージャを登録する。
【0024】
メモリ202に記憶されるプログラムは、CPU201にロードされることで、コーディングされている処理をCPU201に実行させる。
【0025】
I/F203は、通信回線を通じてネットワーク250に接続され、ネットワーク250を介して他の装置に接続される。そして、I/F203は、ネットワーク250と自装置内部とのインターフェースを司り、他の装置からのデータの入出力を制御する。I/F250には、たとえば、モデムやLANアダプタなどを採用することができる。
【0026】
ネットワーク250は、たとえば、インターネット、移動体通信網、LAN(Local Area Network)、WAN(Wide Area Network)などであってもよい。
【0027】
入力装置204は、文字、数字、各種指示などの入力のためのキーを有し、データの入力をおこなう。入力装置204は、ディスプレイに直接触れるタッチパネル式の入力装置であってもよい。これにより、画面を見ながら直感的な操作をおこなうことができる。また、入力装置204は、キーボード103であってもよい。
【0028】
また、入力装置204は、マウス104、トラックボール、ゲームコントローラ、ジョイスティック、などのポインティングデバイスであってもよい。また、入力装置204は、タッチパネル式の入力パッドやテンキーなどであってもよい。これにより、文字などをキー入力だけでなく、手書き入力をすることができる。
【0029】
なお、表示制御装置は、上述した構成部のほかに、HDD(Hard Disk Drive)、SSD(Solid State Drive)などを有することにしてもよい。
【0030】
(ボタンの概要)
図3A〜
図3Cは、ボタンの概要の一例を示す説明図である。
図3Aにおいて、ディスプレイ102には、ボタンを有するウィンドウ300および350が表示されている。マウスカーソル330とは、コンピュータの操作画面で、現在のマウス入力位置を指し示す小さな画像や図形のことである。また、ウィンドウとは、アプリケーションを表示する際やファイルやフォルダを開くと表示される、画面上の矩形状(四角形)の領域である。
【0031】
図3Bは、ウィンドウ300の詳細な内容を示す説明であり、
図3Cは、ウィンドウ350の詳細な内容を示す説明図である。
図3Bにおいて、ウィンドウ300は、右下側に表示されたボタン301と、データ表示領域302と、ボタン表示領域303とから構成される。また、
図3Cに示すように、データ表示領域がなく、ボタン351のみが表示されるウィンドウ350も存在する。
【0032】
また、ボタンの数も、図示を省略するが1つの場合(たとえば、「確認」ボタンである場合など)もあり、4つ以上ボタンが存在する場合もある。また、図示は省略するが、キーボード103のキー配列を模した複数のボタンを表示画面に表示し、マウスカーソル330によるクリックによって、文字、数字などを入力するソフトキーボードも、ボタンである。
【0033】
操作者は、マウス104などを用いて、マウスカーソル330を、ボタン301が表示されている位置、すなわち、ボタン301の表示領域内まで移動させて、その後、マウス104のマウスボタンをクリックする。そうすることによって、ボタン301内に記載されている機能が実行される。
【0034】
これは、ボタン301の表示位置に関する情報を記憶しておき、マウスカーソル330の移動を監視することによって、マウスカーソル330が、ボタン301が表示されている位置でマウスボタンがクリックされたか否かを判定し、それによって、ボタン301が押下されたか否かの情報を取得する。
【0035】
したがって、ボタン301の表示領域外においてマウスボタンをクリックしても、当該ボタン301の機能は実行されない。また、ウィンドウ300の上に別のウィンドウが重ねて表示され、ボタン301が当該別のウィンドウによって隠されている状態(後述する
図6Aに示す状態)では、当該ボタン301が表示されている(であろう)位置にマウスカーソル330を移動させてマウスボタンをクリックしても、当該ボタン301の効能は実行されない。
【0036】
(表示制御装置の機能的構成)
図4は、実施の形態にかかる表示制御装置の機能的構成の一例を示すブロック図である。
図4において、表示制御装置は、表示制御部400と、マウスカーソル監視部401と、ボタン位置情報記憶部402と、ウィンドウ表示命令受付部403と、判断部404と、告知部405と、を含む構成である。
【0037】
表示制御部400は、ディスプレイ102の表示画面に各種情報を表示する。表示制御部400は、具体的には、たとえば、
図2に示したメモリ202などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
【0038】
マウスカーソル監視部401は、マウスカーソル330の位置を監視し、マウスカーソル330の移動位置、移動方向などに関する情報を取得し、取得した情報を所定のタイミングで判断部404などに渡す。マウスカーソル監視部401は、具体的には、たとえば、
図2に示したメモリ202などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、また、メモリ202などにより、その機能を実現する。
【0039】
ボタン位置情報記憶部402は、表示されたボタン301に関する情報を記憶する。ボタン位置情報記憶部402は、具体的には、たとえば、
図2に示したメモリ202などによってその機能を実現する。
【0040】
ボタン301に関する情報とは、具体的には、たとえば、ボタンの表示領域の座標情報、サイズ情報、ボタンのウィンドウ300の表示領域の座標情報、サイズ情報、データ表示領域の座標情報、サイズ情報、ボタン表示領域303の座標情報、サイズ情報などが含まれていてもよい。また、ボタンの種類(ボタン内に記載される文字)などに関する情報も含まれていてもよい。
【0041】
ウィンドウ表示命令受付部403は、新たなウィンドウの表示命令を受け付ける。ウィンドウ表示命令受付部403は、具体的には、たとえば、
図2に示したメモリ202などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、また、I/F203などにより、その機能を実現する。
【0042】
新たな表示命令は、たとえば、起動中のアプリケーションによって出される場合などがある。また、インターネットなどを介した通信により、送られてくるデータによる場合などもある。操作者の操作によって、発せられる場合もあり、また、必ずしも、操作者が意図しないものもある。
【0043】
判断部404は、新たなウィンドウの表示命令があった場合に、マウスカーソル330が、ボタン301の表示位置から所定の範囲にあるか否かを判断する。また、判断部404は、新たなウィンドウの表示命令があった際のマウスカーソル330の移動方向が、所定の方向であるか否かを判断する。また、判断部404は、新たなウィンドウが、ボタン301を隠すか否かを判断する。判断部404は、具体的には、たとえば、
図2に示したメモリ202などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
【0044】
なお、マウスカーソル330が、ボタン301の表示位置から所定の範囲にあるか否かの判断の具体的な内容については、後述する
図5A、
図5Bを用いて説明する。また、新たなウィンドウが、ボタン301を隠すか否かの判断の具体的内容については、後述する
図6A〜
図6Dを用いて説明する。
【0045】
そして、表示制御部400は、判断結果に基づいて、新たなウィンドウがボタンを隠さないようにする処理を実行する。新たなウィンドウがボタンを隠さないようにする処理の詳細については、後述する。
【0046】
また、告知部405は、新たなウィンドウがボタンを隠さないようにする処理の一例である、新たなウィンドウの表示命令を無効にする処理をおこなう際に、当該処理をおこなう旨の告知をおこなう。告知部405は、具体的には、たとえば、
図2に示したメモリ202などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。告知部405の処理の内容については、後述する
図14のフローチャートを用いて説明する。
【0047】
(ボタンの表示位置からの所定の範囲について)
上述のように、判断部404は、新たなウィンドウの表示命令があった場合に、マウスカーソル330が、ボタン301の表示位置から所定の範囲にあるか否かを判断する。その具体的な内容について説明する。
図5Aおよび
図5Bは、ボタンの表示位置からの所定の範囲についての一例を示す説明図である。
【0048】
図5Aにおいて、ボタン301の表示位置から所定の範囲は、たとえば、ボタン301の中心点から、所定の距離の範囲であってもよい。
図5Aでは、所定の距離の範囲を楕円形501で示している。また、ボタン301が複数個ある場合は、それらのボタン301の中心位置を中心とした楕円形であってもよい。
図5Aにおいては、マウスカーソル330が、所定の距離の範囲(すなわち、楕円形501の範囲)内に存在するから、この場合は、マウスカーソル330が、ボタン301の表示位置から所定の範囲にあると判断することができる。
【0049】
また、
図5Bにおいては、複数個あるボタン301の中心位置を中心とした、所定の距離の範囲を矩形502で示している。このように所定の距離の範囲に関する形状は、楕円形や矩形には限定されることなく、どのようなものであってもよい。また、その範囲についても任意で設定することができる。
図5Bにおいては、マウスカーソル330が、所定の距離の範囲(すなわち、矩形502の範囲)内に存在しないから、この場合は、マウスカーソル330が、ボタン301の表示位置から所定の範囲にないと判断することができる。
【0050】
このように、マウスカーソル330がボタン301の近傍に存在することで、その後、早い時期にマウスカーソル330がボタン301に接近し、ボタン301がクリックされる可能性が高いと推測できる。したがって、判断部404が、ボタン301の表示位置から所定の範囲にあるか否かを判断して、所定の範囲にある場合に、ボタンを隠さないようにする処理をおこなうようにするものである。
【0051】
したがって、上記推測により、マウスカーソル330が、ボタン301の表示位置に到達するよりも前に、新たなウィンドウによってボタン301が隠されてしまうことを事前に確実に回避することができる。
【0052】
また、判断部404は、新たなウィンドウの表示命令があった際のマウスカーソル330の移動方向が、所定の方向であるか否かを判断する。具体的には、たとえば、マウスカーソル330の移動方向が、ボタン301の表示位置方向に向かっている場合は、ボタン301がクリックされる可能性があるが、反対に、マウスカーソル330の移動方向が、ボタン301の表示位置方向でない方向に向かっている場合は、ボタン301がクリックされる可能性が低いと推測できる。
【0053】
そこで、マウスカーソル330の移動方向が、ボタン301の表示位置方向でない方向に向かっている場合は、その存在位置が、ボタンの表示位置から所定の範囲であるか否かにかかわらず、ボタンを隠さないようにする処理をおこなわないようにするものである。
【0054】
一方、マウスカーソル330の移動方向が、ボタン301の表示位置方向に向かっている場合は、ボタン301がクリックされる可能性が高いと推測し、その存在位置が、ボタン301の表示位置から所定の範囲であるか否かにかかわらず、ボタンを隠さないようにする処理をおこなうようにするものである。また、ボタン301の表示位置からの所定の範囲にあって、かつ、マウスカーソル330の移動方向が、ボタン301の表示位置方向に向かっている場合に限り、ボタンを隠さないようにする処理をおこなうようにしてもよい。
【0055】
(新たなウィンドウがボタンを隠す態様)
また、判断部404は、上述のように、新たなウィンドウが、ボタンを隠すか否かを判断する。
図6A〜
図6Dは、新たなウィンドウがボタンを隠す態様についての一例を示す説明図である。
【0056】
新たなウィンドウがボタンを隠す態様としては、たとえば、以下の(1)〜(4)の4つの態様がある。
【0057】
(1)完全にすべてのボタンが新たなウィンドウによって隠れている場合である。これは、
図6Aに示しているように、ウィンドウ300のボタン301が、新たなウィンドウ601によって完全に隠れている。この場合は、新たなウィンドウ601が、ボタン301を隠していると判断する。
【0058】
(2)ボタンの一部が新たなウィンドウによって隠れているが、一部は隠れていない場合である。これは、
図6Bに示しているように、新たなウィンドウ602の上端部が、ウィンドウ300のボタン301の一部にかかっている。この状態でも、ボタン301を押すことは可能であるが、押し間違いの可能性があり、操作の正確性を期すことができない。このため、この場合も、新たなウィンドウ602が、ボタン301を隠していると判断する。
【0059】
(3)ボタンは、新たなウィンドウによって隠れていないが、ボタン表示領域の一部が、新たなウィンドウによって、隠れている場合である。これは、
図6Cに示しているように、新たなウィンドウ603が、ウィンドウ300のボタン表示領域303の一部にかかっているが、ボタン301は、隠されていない。この状態では、ボタン301を押すことは可能である。
【0060】
しかしながら、ボタン301の押下直前に、ボタン301の近傍に新たなウィンドウ603が出現することによって、操作者に精神的な負担を与えることになる虞れがある。特に、取消しができない重要な決済ボタンなどを押下しようとするタイミングで、新たなウィンドウ603が出現すると、驚いたり、何らかのコンピュータウイルスと勘違いしたりし、その後の作業に悪影響をおよぼすことが考えられる。したがって、この場合も、新たなウィンドウ603が、ボタン301を隠していると判断する。
【0061】
(4)ボタンも、ボタン表示領域も、新たなウィンドウによって隠れていないが、データ表示領域の一部が、新たなウィンドウによって、隠れている場合である。これらは、
図6Dに示しているように、新たなウィンドウ604が、ウィンドウ300のボタン301の一部にかかっているが、ボタン301も、ボタン表示領域303も、隠されていない。この状態でも、ボタン301を押すことは可能である。
【0062】
しかしながら、ボタン301を有するウィンドウ300自体が、その一部であれ、隠されてしまうことで、上記(3)と同様に、操作者に精神的な負担を与えることになる虞れがある。したがって、この場合も、新たなウィンドウ604が、ボタン301を隠していると判断する。
【0063】
(表示制御方法の処理手順)
図7は、実施の形態にかかる表示制御方法の処理の手順の一例を示すフローチャートである。
図7フローチャートにおいて、表示画面上のマウスカーソル330の位置を監視する(ステップS701)。監視したマウスカーソル330の位置は、移動されるごとに、図示を省略する所定の記憶領域に記憶される。
【0064】
つぎに、表示画面にボタン301(すなわちボタンを有するウィンドウ300、350)が表示されたか否かを判断する(ステップS702)。ここで、ボタンが表示された場合(ステップS702:Yes)は、ステップS704へ移行し、表示されたボタンの位置情報を記憶する(ステップS704)。
【0065】
ステップS702において、ボタン301が表示されない場合(ステップS702:No)は、すでに表示されているボタン301の位置が変更されたか否かを判断する(ステップS703)。ここで、ボタン301の位置が変更されていない(ボタン301が表示されていない場合も含む)場合(ステップS703:No)は、ステップS701へ戻る。
【0066】
一方、ステップS703において、ボタン301の位置が変更された場合(ステップS703:Yes)は、ステップS704へ移行して、変更されたボタンの位置情報を記憶(上書き)する。
【0067】
つぎに、新たなウィンドウ601〜604の表示命令があったか否かを判断する(ステップS705)。ここで、新たなウィンドウ601〜604の表示命令がなかった場合(ステップS705:No)は、ステップS701へ戻る。
【0068】
ステップS705において、新たなウィンドウ601〜604の表示命令があった場合(ステップS705:Yes)は、つぎに、マウスカーソル330が所定の範囲(具体的には、
図5に示した判定領域501、502)内にあるか否かを判断する(ステップS706)。ここで、マウスカーソル330が所定の範囲内にない場合(ステップS706:No)は、新たなウィンドウ601〜604についての表示の調整は不要であるから、何もせずに、一連の処理を終了する。
【0069】
一方、ステップS706において、マウスカーソル330が所定の範囲内にある場合(ステップS706:Yes)は、つぎに、そのマウスカーソル330が所定の方向に移動しているか否かを判断する(ステップS707)。ここで、マウスカーソル330が所定の方向には移動していない場合(ステップS707:No)は、やはり、新たなウィンドウ601〜604についての表示の調整は不要であるから、何もせずに、一連の処理を終了する。
【0070】
ステップS707において、マウスカーソル330が所定の方向に移動している場合(ステップS707:Yes)は、ボタン301の表示領域と、新たなウィンドウ601〜604の表示領域とを比較する(ステップS708)。そして、ボタン301が、新たなウィンドウ601〜604によって隠されているか否かを判断する(ステップS709)。隠されているか否かの判断は、
図6A〜
図6Dを用いて前述したとおりである。
【0071】
ステップS709において、ボタン301が隠されていないと判断された場合(ステップS709:No)は、やはり、新たなウィンドウ601〜604についての表示の調整は不要であるから、何もせずに、一連の処理を終了する。一方、ステップS709において、ボタン301が隠されていると判断された場合(ステップS709:Yes)は、以下に説明する、新たなウィンドウ601〜604がボタン301を隠さない処理を実行する(ステップS710)。そして、その処理を実行後、一連の処理を終了する。
【0072】
(ボタンを隠さないようにする処理)
つぎに、
図7のフローチャートのステップS710の、ボタンを隠さないようにする処理の内容について説明する。ボタンを隠さないようにする処理は、以下に示すように、たとえば、その1〜その5の5つの処理がある。
【0073】
(1)その1:ずらす処理
ボタンを隠さないようにする処理(その1)は、重なり部分を解消するために、新たなウィンドウの表示領域と、ボタンの表示領域とが重ならない位置に新たなウィンドウの表示位置をずらす処理である。また、重なりを解消するために、新たなウィンドウの表示領域のサイズを変更する処理である。この新たなウィンドウの表示位置をずらす処理と、新たなウィンドウの表示領域のサイズを変更する処理は、それぞれ独立しておこなってもよく、両者をあわせておこなってもよい。
【0074】
図8は、ボタンを隠さない処理の一例を示すフローチャート(その1)である。
図8のフローチャートにおいて、まず、ボタンの表示領域と新たなウィンドウの表示領域の重なり領域に関する情報を取得する(ステップS801)。新たなウィンドウのサイズを決定する(ステップS802)。新たなウィンドウのサイズを変更することで、重なりを解消するとともに、新たなウィンドウの移動先の座標を決定する(ステップS803)。
【0075】
そして、決定したサイズおよび移動先の座標に基づいて、新たなウィンドウの表示処理(サイズの縮小処理・移動表示処理)をおこない(ステップS804)、一連の処理を完了する。
【0076】
図9A〜
図9Eは、ボタンを隠さない処理の一例を示す説明図である。
図9Aは、ボタン301を有するウィンドウ300が、新たなウィンドウ900に隠されている状態を示している。このような表示状態を回避するために、ずらす処理を実行する。
【0077】
図9Bは、ウィンドウ900のサイズを変更せずに、表示画面に向かって左側へ新たなウィンドウ900をずらした状態を示している。同様に
図9Cは、ウィンドウ900のサイズを変更せずに、表示画面の上側へ新たなウィンドウ900をずらした状態を示している。
【0078】
このように、表示画面においてずらす方向に、空きスペース(すなわち、他のウィンドウが表示されていない領域)がある方向にずらすことができる。上下左右以外に、図示を省略するが、斜め方向へずらすようにしてもよい。
【0079】
また、ずらす方向は、重なりが解消するために最も移動距離が短くなるような方向にずらすようにしてもよい。新たなウィンドウにも、表示画面上における表示位置に関する意味がある場合があるため、できるだけ当初の表示位置に近い位置とするのがよい場合があるからである。
【0080】
また、ずらす方向は、
図9B、
図9Cに示したように、できるだけ、ボタン301が表示されている位置から離れた位置へ移動させるようにしてもよい。ボタン301の表示位置に近い位置へ移動することによって、マウス104の誤操作をできるだけ回避するためである。どのように移動するかについては、操作者に選択させるようにしてもよい。
【0081】
図9Dは、ウィンドウ900の横方向のサイズのみを変更したウィンドウ901とし、かつ、表示画面に向かって左側へ新たなウィンドウ901をずらした状態を示している。
図9Dでは、ウィンドウ900の横方向のサイズを縮小したので、ウィンドウ901の下側にスクロールバー911を表示している。
【0082】
同様に
図9Eは、ウィンドウ900のサイズの縦方向のサイズのみを変更したウィンドウ902とし、表示画面の上側へウィンドウ902をずらした状態を示している。
図9Eでは、ウィンドウ900の縦方向のサイズを縮小したので、ウィンドウ902の右側にスクロールバー912を表示している。
【0083】
このように、表示画面においてずらす方向に、空きスペースが少ない場合に、ウィンドウ900のサイズを変更してウィンドウ901、902とすることができる。ウィンドウ901、902は、サイズ変更のみによって対応できる場合は、位置の移動はおこなわなくてもよい。サイズの変更(縮小)は、縦方向または横方向以外に、図示を省略するが、縦方向と横方向の両方向への縮小であってもよい。
【0084】
(2)その2:表示を遅延させる処理
ボタンを隠さないようにする処理(その2)は、ボタンのクリック操作の妨げとならないように、新たなウィンドウの表示を遅延させる処理である。
【0085】
そして、新たなウィンドウの表示を遅延させる処理は、ボタン301が押下されるまでの間だけ、遅延させる処理であってもよい。したがって、ボタン301が押下された場合は、新たなウィンドウの表示処理を実行する。その場合は、新たなウィンドウにより、ボタンは隠されてしまうことになるが、すでに、ボタン301が押下された後などで、ボタン301が隠されても、支障は生じないと考えられる。
【0086】
また、新たなウィンドウの表示を遅延させる処理は、たとえば、マウスカーソル330が、ボタン301の表示位置から所定の範囲にある間だけ、遅延させる処理であってもよい。したがって、マウスカーソル330が、ボタン301の表示位置から所定の範囲に移動した場合には、新たなウィンドウの表示処理を実行する。その場合は、新たなウィンドウにより、ボタンは隠されてしまうことになるが、ボタン301が押下される可能性が低くなっているので、支障は少ないと考えられる。
【0087】
また、新たなウィンドウの表示を遅延させる処理は、たとえば、あらかじめ定められた時間だけ、遅延させる処理であってもよい。あらかじめ定められた時間とは、具体的には、たとえば、5秒〜10秒程度であればよい。まさに今ボタンをクリックしようとしたタイミングさえずらして表示できればよいからである。
【0088】
したがって、あらかじめ定められた時間が経過したら、新たなウィンドウの表示処理を実行する。その場合も、新たなウィンドウにより、ボタンは隠されてしまうことになる。しかしながら、ボタン301を押下する直前のウィンドウの出現は回避できるため、支障は少ないと考えられる。
【0089】
図10は、ボタンを隠さない処理の一例を示すフローチャートである。
図10のフローチャートにおいて、まず、ボタンが隠されていると判断した場合に、タイマーをONする(ステップS1001)。つぎに、ボタン301が押下されたか否かを判断する(ステップS1002)。ここで、ボタン301が押下されたと判断された場合(ステップS1002:Yes)は、ステップS1005へ移行し、新たなウィンドウの表示処理の実行を開始し(ステップS1005)、一連の処理を完了する。
【0090】
ステップS1002において、ボタン301が押下されていない場合(ステップS1002:No)は、マウスカーソル330が、所定の範囲内(たとえば
図5Aに示した判定領域501内または
図5Bに示した判定領域502内)にあるか否かを判断する(ステップS1003)。ここで、マウスカーソル330が、所定の範囲内にない場合(ステップS1003:No)は、ステップS1005へ移行し、新たなウィンドウの表示処理の実行を開始し(ステップS1005)、一連の処理を完了する。
【0091】
ステップS1003において、マウスカーソル330が、所定の範囲内にある場合(ステップS1003:Yes)は、つぎに、タイマーが所定時間を経過したか否かを判断する(ステップS1004)。ここで、所定時間が経過していない場合(ステップS1004:No)は、ステップS1002へ戻り、ステップS1002〜S1004の各処理を繰り返しおこなう。
【0092】
一方、ステップS1004において、所定時間が経過した場合(ステップS1004:Yes)は、新たなウィンドウの表示処理の実行を開始し(ステップS1005)、一連の処理を完了する。このように、新たなウィンドウの表示を遅延させることによって、ボタン押下操作において発生しうる支障の発生を回避することができる。
【0093】
(3)その3:ウィンドウを最小化する処理
ボタンを隠さないようにする処理(その3)は、新たなウィンドウを最小化する処理である。最小化する処理とは、ウィンドウを隠す処理であって、表示画面(デスクトップ)上からそのウィンドウが消えて、タスクに残るだけになる。このような処理をすることで、ボタン301が隠されることが解消し、操作者がおこなうボタン301の押下処理にも支障が生じない。新たなウィンドウは、最小化しただけなので、後から、簡易な操作により、元の表示状態に戻すことができる。
【0094】
図11は、ボタンを隠さない処理の一例を示すフローチャートである。
図11のフローチャートにおいて、まず、新たなウィンドウについて、最小化処理を実行する(ステップS1101)。
【0095】
その後、操作者から、最小化された新たなウィンドウの表示指示があったか否かを判断する(ステップS1102)。ここで、表示指示があるのを待って(ステップS1102:No)、表示指示があった場合(ステップS1102:Yes)は、最小化された新たなウィンドウを、元のサイズで元々表示する予定であった表示位置に表示し(ステップS1103)、一連の処理を完了する。
【0096】
(4)その4:重なり領域の表示の優先度を変更する処理
ボタンを隠さないようにする処理(その4)は、ボタンの表示領域と新たなウィンドウの表示領域の重なり部分におけるボタンの表示領域が、新たなウィンドウの表示領域よりも前面に表示されるように、表示の優先度を変更する処理である。
【0097】
重なり領域部分の表示の優先度を変更して、ボタンの表示領域が隠されることがないので、操作者はボタン押下操作を支障なくおこなうことができる。また、表示画面全体の画面レイアウトが変更されないので、特定の画面レイアウトによる作業における作業効率が向上すると考えられる。
【0098】
図12は、ボタンを隠さない処理の一例を示すフローチャートである。
図12のフローチャートにおいて、まず、ボタンの表示領域と新たなウィンドウの表示領域の重なり領域に関する情報を取得する(ステップS1201)。
【0099】
つぎに、取得した情報に基づいて、重なり領域の表示優先度を決定する(ステップS1202)。具体的には、重なり領域部分におけるボタンの表示領域の表示を最優先させるように決定する。
【0100】
その後、決定された内容に基づいて、重なり領域の表示処理を実行し(ステップS1203)、一連の処理を完了する。
【0101】
図13は、ボタンを隠さない処理の一例(表示の優先度を変更する処理)を示す説明図である。
図13は、
図9Aに示した状態から、決定された表示優先度に基づいて、重なり領域の表示処理を実行した結果を示している。
図13からも分かるように、ボタン301が、隠されてはおらず、操作者がボタン301を押下する操作をおこなうのに支障がない。また、表示画面の画面レイアウトにも変更が生じない。
【0102】
(5)その5:表示命令を無効にする処理
ボタンを隠さないようにする処理(その4)は、新たなウィンドウの表示命令を無効にする処理である。新たなウィンドウの表示命令を受け付けず、実行しないようにする。これにより、より確実に、ボタンが隠されるのを回避することができる。特に、ウイルスなど悪意を持った表示命令により、ボタン押下を邪魔したり、悪用したりする行為を確実に防止することができる。
【0103】
ただし、操作者は、当該新たなウィンドウの表示命令が無効にしたことを知り得ないので、無効にする処理をおこなう際に、当該処理をおこなう旨の告知をおこなうようにするとよい。
【0104】
図14は、ボタンを隠さない処理の一例を示すフローチャートである。
図14のフローチャートにおいて、まず、新たなウィンドウの表示命令を無効にする処理をおこなう(ステップS1401)。したがって、この表示命令は無視する。
【0105】
その後、タイマーをONにする(ステップS1402)。そして、所定時間(たとえば5秒〜10秒程度)が経過したか否かを判断する(ステップS1403)。ここで、所定時間が経過するのを待って(ステップS1403:No)、所定時間が経過した場合(ステップS1403:Yes)は、無効にした旨の告知処理を実行する(ステップS1404)。
【0106】
告知処理は、たとえば、告知内容を示したポップアップウィンドウを表示画面上に表示することにより、実行するようにしてもよい。また、ブザーや音声(たとえば、『新たなウィンドウの表示命令を無効にしました。』)などによって、実行するようにしてもよい。所定時間経過後に告知処理をおこなうのは、操作者が今まさにボタン押下操作をおこなおうとしている際に、その操作に支障を与えないようにするためである。
【0107】
以上説明したように、実施の形態にかかる表示制御プログラム、表示制御方法、表示制御装置によれば、マウスカーソル直下に表示されるウィンドウを誤操作しないので、ボタン操作を含めた、現在おこなっている作業を確実に継続することができる。
【0108】
具体的には、たとえば、新たに表示されるウィンドウが、ボタン301を含むウィンドウ300を隠さないように表示制御するので、操作対象ではないアプリケーションが、ユーザー操作とは非同期にアプリケーションウィンドウを生成した場合であっても、ボタン操作を奪ってしまうことを抑止することができる。ウィンドウシステムを操作していた操作者は、直前まで別のウィンドウを操作しており、操作位置に割り込んで不完全に表示されたウィンドウへの操作は誤動作の対象となるが、そのような誤動作を回避することができる。
【0109】
また、ウイルスなどの悪意のあるプログラムが動作したことによる、セキュリティ上の重要な警告の確認画面が、操作者がデバイスのボタンを押した瞬間に表示された場合、警告をすりぬけて実行されてしまい、セキュリティリスクが発生する場合も考えられるが、このようなリスクを効果的に軽減することができる。
【0110】
オペレーティングシステムの機能を用いて、操作を抑止し、通知ウィンドウを表示させない、という対応ではないので、その通知が受け取れなくなってしまうという問題も解消することができる。
【0111】
なお、本実施の形態で説明した表示制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。表示制御プログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)−ROM、MO(Magneto−Optical Disk)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、表示制御プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0112】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0113】
(付記1)表示画面に表示されたボタンの表示位置を記憶し、
マウスカーソルの位置を監視し、
新たなウィンドウの表示命令があった場合に、前記マウスカーソルが前記ボタンの表示位置から所定の範囲にあるか、および、前記新たなウィンドウが前記ボタンを隠すかを判断し、
前記判断結果に基づいて、前記新たなウィンドウが前記ボタンを隠さないようにする、
処理をコンピュータに実行させることを特徴とする表示制御プログラム。
【0114】
(付記2)前記判断する処理は、さらに、前記新たなウィンドウの表示命令があった際の前記マウスカーソルの移動方向が、所定の方向であるかを判断する処理であることを特徴とする付記1に記載の表示制御プログラム。
【0115】
(付記3)前記新たなウィンドウが前記ボタンを隠さないようにする処理は、
前記新たなウィンドウの表示領域と、前記ボタンの表示領域とが重ならない位置に前記新たなウィンドウの表示位置をずらす処理であることを特徴とする付記1または2に記載の表示制御プログラム。
【0116】
(付記4)前記新たなウィンドウが前記ボタンを隠さないようにする処理は、
前記新たなウィンドウの表示領域のサイズを変更する処理であることを特徴とする付記1〜3の何れか一つに記載の表示制御プログラム。
【0117】
(付記5)前記新たなウィンドウが前記ボタンを隠さないようにする処理は、
前記新たなウィンドウの表示を遅延させる処理であることを特徴とする付記1または2に記載の表示制御プログラム。
【0118】
(付記6)前記新たなウィンドウの表示を遅延させる処理は、
前記ボタンが押下されるまでの間だけ、遅延させる処理であることを特徴とする付記5に記載の表示制御プログラム。
【0119】
(付記7)前記新たなウィンドウの表示を遅延させる処理は、
前記マウスカーソルが、前記ボタンの表示位置から所定の範囲にある間だけ、遅延させる処理であることを特徴とする付記5に記載の表示制御プログラム。
【0120】
(付記8)前記新たなウィンドウの表示を遅延させる処理は、
あらかじめ定められた時間だけ、遅延させる処理であることを特徴とする付記5に記載の表示制御プログラム。
【0121】
(付記9)前記新たなウィンドウが前記ボタンを隠さないようにする処理は、
前記新たなウィンドウを最小化する処理であることを特徴とする付記1または2に記載の表示制御プログラム。
【0122】
(付記10)前記新たなウィンドウが前記ボタンを隠さないようにする処理は、
前記ボタンの表示領域と前記新たなウィンドウの表示領域の重なり部分における前記ボタンの表示領域が、前記新たなウィンドウの表示領域よりも前面に表示されるように、前記表示の優先度を変更する処理であることを特徴とする付記1または2に記載の表示制御プログラム。
【0123】
(付記11)前記新たなウィンドウが前記ボタンを隠さないようにする処理は、
前記新たなウィンドウの表示命令を無効にする処理であることを特徴とする付記1または2に記載の表示制御プログラム。
【0124】
(付記12)前記無効にする処理をおこなう際に、当該処理をおこなう旨の告知をおこなうことを特徴とする付記11に記載の表示制御プログラム。
【0125】
(付記13)表示画面に表示されたボタンの表示位置を記憶し、
マウスカーソルの位置を監視し、
新たなウィンドウの表示命令があった場合に、前記マウスカーソルが前記ボタンの表示位置から所定の範囲にあるか、および、前記新たなウィンドウが前記ボタンを隠すかを判断し、
前記判断結果に基づいて、前記新たなウィンドウが前記ボタンを隠さないようにする、
処理をコンピュータが実行することを特徴とする表示制御方法。
【0126】
(付記14)表示画面に表示されたボタンの表示位置を記憶し、
マウスカーソルの位置を監視し、
新たなウィンドウの表示命令があった場合に、前記マウスカーソルが前記ボタンの表示位置から所定の範囲にあるか、および、前記新たなウィンドウが前記ボタンを隠すかを判断し、
前記判断結果に基づいて、前記新たなウィンドウが前記ボタンを隠さないようにする、
制御部を有することを特徴とする表示制御装置。