專利名稱:窗口堆??刂品椒ā⒋翱诠芾沓绦蚣按翱诠芾硌b置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于在計(jì)算機(jī)在顯示單元上顯示多個(gè)窗口時(shí)管理窗口堆棧的窗口堆??刂品椒?。
背景技術(shù):
近來(lái)年,工作站和家用計(jì)算機(jī)作為用于在顯示單元上顯示多個(gè)窗口的計(jì)算機(jī)得以廣泛應(yīng)用。在這些情況下,通常用戶在作為顯示單元的較大屏幕上顯示多個(gè)窗口并用鼠標(biāo)和鍵盤控制窗口堆棧中的迭加次序(上下關(guān)系)。
例如,在廣泛用于Unix(R)工作站的X11窗口系統(tǒng)的情況下,當(dāng)建立一窗口時(shí),該窗口被定位在作為窗口堆棧中的上下關(guān)系的迭加次序的堆棧的頂層,在映射窗口后,通過(guò)操作鼠標(biāo)或應(yīng)用程序?qū)⒍褩N恢迷谏舷路较蛏弦苿?dòng)。
作為一個(gè)特定的例子,圖29是示出圖示通過(guò)在計(jì)算機(jī)上運(yùn)行的3種應(yīng)用程序在顯示裝置的屏幕上共顯示五個(gè)窗口時(shí)的一種顯示例子的示意圖。在圖29中,標(biāo)號(hào)1表示由CRT監(jiān)視器或液晶監(jiān)視器實(shí)現(xiàn)的顯示單元的屏幕,標(biāo)號(hào)2和3表示由第一應(yīng)用程序顯示的窗口,標(biāo)號(hào)4和5表示由第二應(yīng)用程序顯示的窗口,而標(biāo)號(hào)6表示由第三應(yīng)用程序顯示的窗口,且由第一應(yīng)用程序顯示的窗口2和3為第一組,由第二應(yīng)用程序顯示的窗口4和5為第二組而由第三應(yīng)用程序顯示的窗口6為第三組。
如圖29中所示,窗口3迭加在窗口2上,而窗口5迭加在窗口4上。圖30為示出圖示在此情況中的窗口的迭加次序的一個(gè)例子的示意圖。如圖30所示,窗口3在堆棧中的位置高于窗口2,因此當(dāng)要顯示兩個(gè)相互重疊的窗口時(shí)窗口3迭加在窗口2上。
然后,例如,當(dāng)在此顯示狀態(tài)下,即在此迭加次序的狀態(tài)下,出于某種原因,第一應(yīng)用程序想要在在窗口3上顯示窗口2時(shí),這已通過(guò)將窗口2移至棧頂?shù)靡詫?shí)現(xiàn)。圖31為示出圖示此情況中的迭加次序的示意圖。如圖31所示,窗口2在堆棧中的位置高于窗口3,因此當(dāng)要顯示兩個(gè)相互重疊的窗口時(shí)窗口2迭加在窗口3上。另外,可以看出通過(guò)此操作,窗口2在整個(gè)第二組和第三組窗口的迭加次序中從底移至頂。
發(fā)明內(nèi)容
然而,在上述傳統(tǒng)的窗口堆??刂品椒ㄖ校趹?yīng)用程序使窗口經(jīng)受窗口堆棧移動(dòng)和窗口建立和顯示的情況下,在整個(gè)組中控制堆棧,因此存在窗口有時(shí)會(huì)被另一應(yīng)用程序無(wú)意地迭加在所顯示的窗口上的問(wèn)題。
考慮到以上問(wèn)題,本發(fā)明的目的在于提供一種堆??刂品椒ǎ糜诜乐乖谧钋懊骘@示窗口的應(yīng)用程序的窗口顯示不適當(dāng)?shù)厥艿搅硪粦?yīng)用程序的影響。
為了克服以上問(wèn)題,本發(fā)明采用以下特征。在括號(hào)中的標(biāo)號(hào)和圖號(hào)顯示與附圖的對(duì)應(yīng),用于幫助理解本發(fā)明而并不限制本發(fā)明的范圍。
本發(fā)明的第一發(fā)明針對(duì)用于根據(jù)一個(gè)或多個(gè)應(yīng)用程序(101、102和103)管理在顯示單元(11)上所顯示的多個(gè)窗口的堆棧的窗口堆??刂品椒?,包括以下步驟指定一組來(lái)自應(yīng)用程序的窗口;接收用于顯示來(lái)自應(yīng)用程序的窗口的請(qǐng)求;和將窗口整體地排列成一組以在響應(yīng)顯示請(qǐng)求顯示窗口時(shí)確定該組中的窗口的迭加次序(S308,圖4和S2510,圖26)。
因此,在組單元中以迭加次序整體地排列窗口,從而可以防止屬于頂一組的各窗口被堆在和顯示在另一組窗口下面,并可以防止由將窗口顯示在最前面的應(yīng)用程序所執(zhí)行的窗口顯示受到另一應(yīng)用程序的不適當(dāng)?shù)挠绊憽L貏e是,該影響在蜂窩電話、PDA等小屏幕中很明顯,這導(dǎo)致窗口更有可能被覆蓋。
另外,基于第一發(fā)明的本發(fā)明的第二發(fā)明針對(duì)窗口堆??刂品椒?,其中,在整體排列步驟中,當(dāng)從應(yīng)用程序接收到用于顯示沒有整體地排成一組的第一窗口的請(qǐng)求時(shí),其窗口與第一窗口屬于同一組且沒有整體地排列成一組的窗口的第一窗口組和其窗口與第一窗口屬于同一組且整體地排列成一組的窗口的第二窗口組在所維持的第一窗口組中以用迭加次序集中以使第一窗口組的迭加次序后連著第二窗口組的迭加次序(圖26)。
因此,根據(jù)顯示請(qǐng)求在同一組中迭加次序不變,從而減少了用于管理同一組中的迭加次序的應(yīng)用程序的負(fù)載。
另外,基于第一或第二發(fā)明的本發(fā)明的第三發(fā)明針對(duì)一種窗口堆??刂品椒?,該方法還包括用于為各組建立代表窗口的步驟,其中整體地排列步驟包括當(dāng)將窗口整體地排列成一組以確定該窗口在組中的迭加次序時(shí)將該窗口作為代表窗口的子窗口處理(圖22)。
因此,將堆棧在組單元中移動(dòng)并在組單元中顯示的和沒有顯示的窗口之間切換可以通過(guò)控制代表窗口來(lái)執(zhí)行,從而該組的窗口越多則可以減少越多的處理負(fù)荷。
另外,基于第一至第三發(fā)明中任一個(gè)的本發(fā)明的第四發(fā)明針對(duì)一種窗口堆??刂品椒?,該方法還包括以下步驟從應(yīng)用程序中接收一個(gè)請(qǐng)求移動(dòng)窗口堆棧中組的頂層的請(qǐng)求和一個(gè)請(qǐng)求移動(dòng)窗口堆棧中組的底層的請(qǐng)求;和響應(yīng)移動(dòng)頂?shù)恼?qǐng)求或移動(dòng)底的請(qǐng)求改變組中的堆棧(S708、S710、S711、S1208、S1210和S1211)。
因此,堆棧的控制在組中關(guān)閉,從而代表應(yīng)用程序可以改變堆棧而不必顧及由另一應(yīng)用程序執(zhí)行的窗口顯示。
另外,基于第四發(fā)明的本發(fā)明的第五發(fā)明針對(duì)一種窗口堆??刂品椒?,該方法中的堆棧改變步驟包括當(dāng)從應(yīng)用程序接收到請(qǐng)求將第一窗口移至窗口堆棧中組的頂層的請(qǐng)求和請(qǐng)求將第一窗口移至窗口堆棧中組的底層的請(qǐng)求時(shí),改變堆棧以將與第一窗口屬于同一組且沒有整體地排列成一組的窗口的第一窗口組和與第一窗口屬于同一組且整體地排列成一組的窗口的第二窗口組用迭加次序集中起來(lái),而維持第一窗口組中的迭加次序,使第一窗口組的迭加次序后連著第二窗口組的迭加次序(S708、圖9和S1208、圖14)。
因此,所有和堆棧改變的目標(biāo)窗口的組屬于同一組的正常窗口被整體地排列,從而應(yīng)用程序更容易掌握由它們自己設(shè)置的一組的窗口的迭加次序。
另外,基于第一至第三發(fā)明中任一發(fā)明的本發(fā)明的第六發(fā)明針對(duì)的窗口堆??刂品椒ㄟ€包括用于從應(yīng)用程序接收請(qǐng)求移動(dòng)窗口堆棧中組單元中頂?shù)恼?qǐng)求和請(qǐng)求移動(dòng)窗口堆棧中組單元中底的請(qǐng)求的步驟,和響應(yīng)移動(dòng)頂?shù)恼?qǐng)求或移動(dòng)底的請(qǐng)求改變組單元中的堆棧的步驟(S1705、S1706和S2004)。
因此,可以通過(guò)指定一個(gè)組來(lái)執(zhí)行窗口的控制,從而例如在將組分配給各應(yīng)用程序的情況下,即使在不知道屬于該應(yīng)用程序的窗口的成員時(shí),也可以將屬于該應(yīng)用程序的所有正常窗口移至堆棧的最前面。
另外,基于第六發(fā)明的本發(fā)明的第七發(fā)明針對(duì)窗口堆??刂品椒?,該方法中的堆棧改變步驟包括當(dāng)從應(yīng)用程序接收到請(qǐng)求將第一窗口移至窗口堆棧中組單元中的頂層的請(qǐng)求和請(qǐng)求將第一窗口移至窗口堆棧中組單元中的底層的請(qǐng)求時(shí),改變堆棧以將屬于第一組且沒有整體地排列成一組的窗口的第一窗口組和與屬于第一組且整體地排列成一組的窗口的第二窗口組用迭加次序集中起來(lái),維持第一窗口組中的迭加次序,使第一窗口組的迭加次序后連著第二窗口組的迭加次序(S1705、圖18和S2004、圖21)。
因此,所有和堆棧改變的目標(biāo)組屬于同一組的正常窗口整體地排列,它們之間維持它們的迭加次序并經(jīng)受堆棧改變,從而應(yīng)用程序更容易掌握由它們自己設(shè)置的一組的窗口的迭加次序。
另外,基于第一發(fā)明的本發(fā)明的第八發(fā)明針對(duì)一種窗口堆??刂品椒?,其中使得用應(yīng)用程序指定成優(yōu)先窗口的窗口不屬于任何一組并使該優(yōu)先窗口在堆棧中一直處于比在顯示單元上所顯示的且屬于任何組的所有窗口高的位置。
因此,可以顯示窗口而不管組單元中的迭加次序,從而可以提供用最高優(yōu)先權(quán)顯示的窗口的服務(wù)。
另外,基于第一發(fā)明的本發(fā)明的第九發(fā)明針對(duì)窗口堆??刂品椒ǎ谠摲椒ㄖ性诙褩V械奈恢帽葘儆谔幱陧攲拥慕M的窗口低的窗口一直處于不顯示狀態(tài)。
因此,即使嘗試顯示在堆棧中排得比處于頂層的組低的組中的窗口等,在顯示單元上也不顯示該窗口等,因此不必?fù)?dān)心在沒有被處于頂層的組的窗口覆蓋的部分上中途顯示窗口。
另外,基于第一發(fā)明的第十發(fā)明針對(duì)窗口堆??刂品椒ǎ谠摲椒ㄖ刑囟ù翱诰o挨在其迭加次序在屬于處于頂層的組的窗口中為底的窗口的下面(圖23和圖24)。
因此,例如,當(dāng)顯示特定窗口來(lái)填充顯示單元上的屏幕時(shí),即使嘗試顯示在堆棧中的位置比特定窗口低的組中的窗口等,也不在顯示單元上顯示該窗口等。因此不必?fù)?dān)心在沒有被處于頂層的組的窗口覆蓋的部分上中途顯示窗口。
另外,基于第四或第六發(fā)明的本發(fā)明的第十一發(fā)明針對(duì)窗口堆??刂品椒?,在該方法中X窗口系統(tǒng)和窗口管理程序管理多個(gè)窗口的堆棧,且特定窗口緊挨在處于頂層的組的上面。
因此,當(dāng)用另一組代替處于頂層的組時(shí),XRestackWindows()函數(shù)可以用于X窗口系統(tǒng)的情況中,且該XRestackWindows()函數(shù)可以用于指示窗口組的堆棧要移向的目的地。如果沒有窗口呈現(xiàn)在堆棧中比處于頂層的組的窗口高的位置上,則應(yīng)確定要分配給XRestackWindows()的自變量的所有呈現(xiàn)的窗口的排列次序。然而,在有特定窗口的情況中,只需要將特定窗口和窗口組分配給該自變量。
另外,基于第一至第三發(fā)明中任一發(fā)明的本發(fā)明的第十二發(fā)明針對(duì)窗口堆棧控制方法,在該方法中X窗口系統(tǒng)和窗口管理程序管理多個(gè)窗口的堆棧,且窗口管理程序在接收到窗口破壞通知時(shí)確認(rèn)其識(shí)別出的堆棧是否與由窗口系統(tǒng)識(shí)別出的堆棧一致,并在不一致的情況中執(zhí)行用于使由窗口系統(tǒng)識(shí)別出的堆棧與由窗口管理程序識(shí)別出的堆棧一致的處理。
因此,當(dāng)接收到窗口破壞通知時(shí)試圖確保該一致性。這樣,即使窗口系統(tǒng)在堆棧改變處理上失敗,也可以消除處理中的失敗。
另外,基于第一至第三發(fā)明中任一發(fā)明的本發(fā)明的第十三發(fā)明針對(duì)窗口堆??刂品椒ǎ谠摲椒ㄖ蠿窗口系統(tǒng)和窗口管理程序管理多個(gè)窗口的堆棧,且窗口管理程序在請(qǐng)求窗口系統(tǒng)改變堆棧時(shí)設(shè)置一個(gè)標(biāo)記,并且只有在接收到窗口破壞通知時(shí)設(shè)置該標(biāo)記時(shí),確認(rèn)其識(shí)別出的堆棧是否與由窗口系統(tǒng)識(shí)別出的堆棧一致,并在不一致的情況中執(zhí)行用于使由窗口系統(tǒng)識(shí)別出的堆棧與由窗口管理程序識(shí)別出的堆棧一致的處理,從而將該標(biāo)記記下。
因此,只有在窗口管理程序執(zhí)行堆棧改變時(shí),才執(zhí)行使堆棧識(shí)別一致的處理,所以可以降低執(zhí)行處理的頻率。
另外,基于第一發(fā)明的本發(fā)明的第十四發(fā)明針對(duì)窗口堆??刂品椒?,該方法中的整體地排列步驟包括當(dāng)從應(yīng)用程序接收到請(qǐng)求顯示沒有整體地排列成一組的第一窗口的請(qǐng)求時(shí),集中屬于與該第一窗口同一組且沒有整體地排列成一組的第一窗口和第二窗口組的窗口,使得第一窗口組的迭加次序后連著第二窗口組的迭加次序(圖4)。
另外,本發(fā)明的第十五發(fā)明針對(duì)用于根據(jù)一個(gè)或多個(gè)應(yīng)用程序(101、102和103)管理顯示在顯示單元(11)上的多個(gè)窗口的堆棧的窗口管理程序(104),在該程序中計(jì)算機(jī)(7)可用于執(zhí)行以下步驟指定一組來(lái)自應(yīng)用程序窗口;接收一個(gè)請(qǐng)求顯示來(lái)自應(yīng)用程序的窗口的請(qǐng)求;并整體地將窗口排成一組以在接收到顯示請(qǐng)求時(shí)確定該組中的窗口的迭加次序(S308和圖4).
另外,本發(fā)明的第十六發(fā)明針對(duì)用于在顯示單元(11)上顯示多個(gè)窗口時(shí)管理窗口的堆棧的窗口管理裝置,該裝置包括用于在顯示單元上顯示一個(gè)或多個(gè)窗口的一個(gè)或多個(gè)應(yīng)用程序(101、102和103);用于管理由一個(gè)或多個(gè)應(yīng)用程序顯示的窗口堆棧的窗口管理程序(104);和用于執(zhí)行所述應(yīng)用程序和所述窗口管理程序的處理單元(8),其中所述應(yīng)用程序指定一組關(guān)于窗口管理程序的窗口,且所述窗口管理程序在接收到請(qǐng)求顯示來(lái)自應(yīng)用程序的窗口的請(qǐng)求并顯示該窗口時(shí)執(zhí)行控制,以將窗口整體地排成一組,從而確定該組中窗口的迭加次序(S308和圖4)。
附圖簡(jiǎn)要說(shuō)明圖1為示出用于實(shí)現(xiàn)根據(jù)本發(fā)明的第一實(shí)施例的窗口堆??刂品椒ǖ南到y(tǒng)的配置的一個(gè)例子的圖。
圖2為示出根據(jù)本發(fā)明的第一實(shí)施例的窗口信息的一個(gè)例子的圖。
圖3為示出根據(jù)本發(fā)明的第一實(shí)施例當(dāng)接收到映射請(qǐng)求事件(MapRequet)時(shí)由窗口管理程序所執(zhí)行的操作的一個(gè)例子的流程圖。
圖4為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖3所示的步驟S308中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖5為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖3所示的步驟S310中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖6為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖3所示的步驟S311中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖7為根據(jù)本發(fā)明的第一實(shí)施例當(dāng)接收到棧頂移動(dòng)請(qǐng)求事件時(shí)由窗口管理程序所執(zhí)行的操作的一個(gè)例子的流程圖。
圖8為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖7所示的步驟S705中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖9為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖7所示的步驟S708中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖10為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖7所示的步驟S710中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖11為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖7所示的步驟S711中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖12為根據(jù)本發(fā)明的第一實(shí)施例當(dāng)接收到棧底移動(dòng)請(qǐng)求事件時(shí)由窗口管理程序所執(zhí)行的操作的一個(gè)例子的流程圖。
圖13為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖12所示的步驟S1205中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖14為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖12所示的步驟S1208中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖15為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖12所示的步驟S1210中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖16為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖12所示的步驟S1211中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖17為根據(jù)本發(fā)明的第一實(shí)施例當(dāng)接收到請(qǐng)求移動(dòng)堆棧中的組單元中的頂層的請(qǐng)求時(shí)由窗口管理程序所執(zhí)行的操作的一個(gè)例子的流程圖。
圖18為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖17所示的步驟S1705中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖19為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖17所示的步驟S1706中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖20為根據(jù)本發(fā)明的第一實(shí)施例當(dāng)接收到請(qǐng)求移動(dòng)堆棧中的組單元中的底層的請(qǐng)求時(shí)由窗口管理程序所執(zhí)行的操作的一個(gè)例子的流程圖。
圖21為具體地示例根據(jù)本發(fā)明的第一實(shí)施例在圖20所示的步驟S2004中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖22為示出根據(jù)本發(fā)明的第一實(shí)施例使用代表窗口的情況中的堆棧狀態(tài)的一個(gè)例子的示意圖。
圖23為示出根據(jù)本發(fā)明的第一實(shí)施例在使用特定窗口時(shí)堆棧狀態(tài)的示意圖,該特定窗口由窗口管理程序建立和映射并緊挨著其迭加次序?yàn)樗袑儆谔幱陧攲拥慕M的窗口中的底層的窗口下面。
圖24為示出根據(jù)本發(fā)明的第一實(shí)施例在使用特定窗口時(shí)屏幕顯示的一個(gè)例子的示意圖,該特定窗口的窗口管理程序建立和映射并緊挨著其迭加次序在屬于處于頂層的組的所有窗口為的底層的窗口。
圖25為根據(jù)本發(fā)明的第二實(shí)施例當(dāng)接收到映射請(qǐng)求事件(MapRequest)時(shí)由窗口管理程序所執(zhí)行的操作的一個(gè)例子的流程圖。
圖26為具體地示例根據(jù)本發(fā)明的第二實(shí)施例在圖25所示的步驟S2510中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖27為具體地示例根據(jù)本發(fā)明的第二實(shí)施例在圖25所示的步驟S2512中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖28為具體地示例根據(jù)本發(fā)明的第二實(shí)施例在圖25所示的步驟52513中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
圖29為示出根據(jù)已有技術(shù)由在計(jì)算機(jī)上運(yùn)行的三種應(yīng)用程序在作為顯示單元的屏幕上共顯示五個(gè)窗口的情況中的顯示的一個(gè)例子的示意圖。
圖30為示出根據(jù)已有技術(shù)的窗口迭加次序的一個(gè)例子的示意圖。
圖31為示出根據(jù)已有技術(shù)的窗口迭加次序的一個(gè)例子的示意圖。
(5)具體實(shí)施方式
下面將參照
本發(fā)明的實(shí)施例。
(實(shí)施例1)在此實(shí)施例中,將把窗口管理程序包括X窗口系統(tǒng)和窗口管理程序及窗口管理程序控制根窗口的子窗口的頂層窗口的迭加次序的情況作為例子。
圖1示出用于實(shí)現(xiàn)根據(jù)本發(fā)明的第一實(shí)施例的窗口堆??刂品椒ǖ南到y(tǒng)的配置的一個(gè)例子。
在圖1中,標(biāo)號(hào)7表示計(jì)算機(jī)。標(biāo)號(hào)8表示CPU(中央處理單元)。標(biāo)號(hào)9表示用于存儲(chǔ)各種程序、經(jīng)處理的數(shù)據(jù)等的存儲(chǔ)器。標(biāo)號(hào)10表示用于允許各構(gòu)件執(zhí)行希望的雙向通信的總線。標(biāo)號(hào)11表示諸如CRT監(jiān)視器或液晶監(jiān)視器之類的顯示單元。標(biāo)號(hào)1表示顯示單元11的屏幕。標(biāo)號(hào)101、102和103表示由CPU 8執(zhí)行的程序,它們是試圖通過(guò)窗口管理程序104在屏幕1上顯示一個(gè)或多個(gè)窗口的應(yīng)用程序。標(biāo)號(hào)104表示由CPU 8執(zhí)行的程序,它是用于管理應(yīng)用程序101-103試圖顯示的窗口并通過(guò)總線10顯示這些窗口的窗口管理程序。窗口管理程序104包括窗口系統(tǒng)12和窗口管理程序105。窗口系統(tǒng)12是傳統(tǒng)的X窗口系統(tǒng)而標(biāo)號(hào)105表示窗口管理程序。
下面將參照
本實(shí)施例的操作。
各應(yīng)用程序101、102和103可以通過(guò)窗口管理程序104顯示兩種具有相互不同的堆??刂铺卣鞯捻攲哟翱?。這兩種窗口被稱為普通窗口和優(yōu)先窗口。它們的不同之處在于所顯示的優(yōu)先窗口總是在堆棧中位于比所有顯示的普通窗口高的位置而得以顯示,以及在普通窗口整體地排列成一組以確定組中窗口的迭加次序時(shí),執(zhí)行此處理不包含優(yōu)先窗口。
<窗口創(chuàng)建請(qǐng)求、窗口類型和組設(shè)置請(qǐng)求、及映射請(qǐng)求>
在應(yīng)用程序101、102和103顯示窗口的情況下,程序101、102和103向窗口系統(tǒng)12發(fā)出窗口創(chuàng)建請(qǐng)求、窗口類型和組設(shè)置請(qǐng)求、及映射請(qǐng)求。其中,對(duì)于窗口類型和組設(shè)置請(qǐng)求,在X窗口系統(tǒng)的情況下,可以通過(guò)使用屬性功能為各窗口設(shè)置值。
在執(zhí)行窗口創(chuàng)建和映射處理之前不在屏幕1上顯示各窗口。
當(dāng)窗口系統(tǒng)12接收到窗口創(chuàng)建請(qǐng)求時(shí),它將窗口定位在迭加次序(迭加窗口的次序)的頂層并向窗口管理程序105發(fā)出窗口創(chuàng)建通知事件(CreateNotify)。
窗口管理程序105存儲(chǔ)窗口信息作為各窗口的內(nèi)部數(shù)據(jù)庫(kù)。
圖2示出該窗口信息的一個(gè)例子。
如圖2中所示,窗口信息包括窗口標(biāo)識(shí)符、堆棧位置確定標(biāo)記、堆棧位置信息、屬性獲取標(biāo)記、窗口類型和組值。窗口標(biāo)識(shí)符標(biāo)識(shí)具有窗口信息的窗口。堆棧位置確定標(biāo)記指示窗口是否具有窗口管理程序105的臨時(shí)堆棧位置或已確定的堆棧位置。堆棧位置信息指示窗口的堆棧位置。屬性獲取標(biāo)記指示窗口管理程序105是否已獲取了窗口類型和窗口的組值。在屬性獲取標(biāo)記指示“已獲取”的情況下,窗口類型指示該窗口是優(yōu)先窗口還是普通窗口。在屬性獲取標(biāo)記指示“已獲取”的情況下,組值指示該窗口的組值。
圖1所示的窗口管理程序105知道已通過(guò)接收窗口創(chuàng)建通知事件(CreateNotify)新創(chuàng)建了窗口并從窗口創(chuàng)建通知事件(CreateNotify)獲取窗口標(biāo)識(shí)符。然后,在內(nèi)部數(shù)據(jù)庫(kù)中新建立窗口信息存儲(chǔ)區(qū),并將窗口信息的窗口標(biāo)識(shí)符存儲(chǔ)在其中。另外,對(duì)于該窗口,窗口管理程序105將堆棧位置確定標(biāo)記初始化成“臨時(shí)”,將堆棧位置信息初始化成“棧頂”而將屬性獲取標(biāo)記初始化成“未獲取”。
接著,窗口系統(tǒng)12接收窗口類型和組設(shè)置請(qǐng)求并將它們作為窗口的屬性存儲(chǔ)。
接著,窗口系統(tǒng)12從應(yīng)用程序101、102和103接收映射請(qǐng)求,不特別執(zhí)行內(nèi)部處理,并將映射請(qǐng)求事件(MapRequest)發(fā)送至窗口管理程序105。
圖3為示出根據(jù)本發(fā)明的第一實(shí)施例當(dāng)接收到映射請(qǐng)求事件(MapRequet)時(shí)由窗口管理程序105所執(zhí)行的操作的一個(gè)例子的流程圖。
如圖3所示,在步驟S301中,窗口管理程序105從當(dāng)時(shí)所接收到的映射請(qǐng)求事件(MapRequet)獲取要映射的目標(biāo)窗口的標(biāo)識(shí)符(下文僅僅稱為目標(biāo)窗口)并進(jìn)入步驟S302。
在步驟S302中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索目標(biāo)窗口的標(biāo)識(shí)符。當(dāng)相應(yīng)的窗口信息呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S303,而當(dāng)不呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S313。
在步驟S303中,在內(nèi)部數(shù)據(jù)庫(kù)中核查目標(biāo)窗口的堆棧位置確認(rèn)標(biāo)記是否指示“已確定”。當(dāng)確定了堆棧位置時(shí),過(guò)程進(jìn)入步驟S312,而當(dāng)堆棧位置為臨時(shí)時(shí),過(guò)程進(jìn)入步驟S304。
在步驟S304中,核查目標(biāo)窗口的屬性獲取標(biāo)記,并當(dāng)屬性獲取標(biāo)記指示“已獲取”時(shí),過(guò)程進(jìn)入步驟S306而在未獲取的情況下,過(guò)程進(jìn)入步驟S305。
在步驟S305中,向窗口系統(tǒng)12詢問(wèn)窗口類型和目標(biāo)窗口的組值以獲取它們,并將它們存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中,且過(guò)程進(jìn)入步驟S306。
在步驟S306中,核查目標(biāo)窗口的窗口類型并在優(yōu)先窗口的情況下,過(guò)程進(jìn)入步驟S312,而在普通窗口的情況下,過(guò)程進(jìn)入步驟S307。
在步驟S307中,在內(nèi)部數(shù)據(jù)庫(kù)中核查具有與目標(biāo)窗口相同的組值并且其堆棧位置確定標(biāo)記指示“已確定”的普通窗口。當(dāng)該普通窗口呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S308,而當(dāng)其未呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S309。
在步驟S308中,將一堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12,使得目標(biāo)窗口的堆棧位置緊挨其迭加次序在同一組的普通窗口中為頂層且確定了堆棧位置的窗口的上面。
圖4為具體地示例在步驟S308中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖4所示,可以看出是普通窗口的目標(biāo)窗口被移至緊挨其迭加次序在具有和目標(biāo)窗口相同的組值的窗口中為頂層且其堆棧位置確定標(biāo)記指示“已確定”的窗口的上面。
在步驟S309中,在內(nèi)部數(shù)據(jù)庫(kù)中的所有普通窗口中搜索堆棧位置確定標(biāo)記指示“已確定”的窗口。當(dāng)該窗口呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S310而當(dāng)該窗口不呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S311。
在步驟S310中,將堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12,使得目標(biāo)窗口緊挨其迭加次序在內(nèi)部數(shù)據(jù)庫(kù)中為頂層且其堆棧位置確定標(biāo)記指示“已確定”的窗口的上面。
圖5示出具體地示例在步驟S310中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖5所示,可以看出是普通窗口的目標(biāo)窗口被移至緊挨其迭加次序在堆棧位置確定標(biāo)記指示“已確定”的所有普通窗口中為頂層的窗口的上面。
在步驟S311中,將堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12使得該目標(biāo)窗口被設(shè)置在堆棧位置的底層層,且過(guò)程進(jìn)入步驟S312。
圖6為具體地示例在步驟S311中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖6所示,可以看出是普通窗口的目標(biāo)窗口被移至堆棧的底層層。
在步驟S312中,將用于目標(biāo)窗口的映射請(qǐng)求發(fā)送至窗口系統(tǒng)12,并當(dāng)內(nèi)部數(shù)據(jù)庫(kù)中的目標(biāo)窗口的窗口信息中的堆棧位置確定標(biāo)記指示“臨時(shí)”時(shí),更新堆棧位置確定標(biāo)記以指示“已確定”。另外,按需要在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S313。
在步驟S313中,處理結(jié)束。
當(dāng)窗口系統(tǒng)12從窗口管理程序105接收到圖3所示的步驟S308、步驟S310或步驟S313中所創(chuàng)建的堆棧改變請(qǐng)求時(shí),窗口系統(tǒng)12根據(jù)該請(qǐng)求改變窗口的迭加次序。另外,當(dāng)從窗口管理程序105接收到圖3所示的步驟S312中所創(chuàng)建的映射請(qǐng)求時(shí),根據(jù)該請(qǐng)求映射窗口。當(dāng)映射的窗口沒有被隱藏在其它窗口下面時(shí),雖然這取決于窗口相互重疊的多少,在屏幕1上顯示映射的窗口。
通過(guò)圖3所示的處理,對(duì)于所創(chuàng)建的并通過(guò)應(yīng)用程序101、102和103為共設(shè)置窗口類型的組的諸普通窗口,總是在顯示諸普通窗口之前確定諸堆棧位置信息。另外,將堆棧位置整體地排列成一組,進(jìn)一步防止將窗口顯示在堆棧中比優(yōu)先窗口高的位置。另外,優(yōu)先窗口具有用于顯示的不變的堆棧位置。
<移動(dòng)堆棧中的組頂?shù)恼?qǐng)求>
在圖1中,作為堆棧改變請(qǐng)求,應(yīng)用程序101、102和103可以向窗口系統(tǒng)12發(fā)送請(qǐng)求將所創(chuàng)建的且為其設(shè)置了窗口類型和組的普通窗口移至堆棧中的組頂?shù)恼?qǐng)求。在X窗口系統(tǒng)的情況中,例如可以將XraiseWindow()函數(shù)用于請(qǐng)求移動(dòng)堆棧中的組頂?shù)恼?qǐng)求。另外,可以將請(qǐng)求將優(yōu)先窗口移至堆棧中優(yōu)先窗口中的頂層的請(qǐng)求作為堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12。例如,可以使用和移動(dòng)堆棧中組頂?shù)恼?qǐng)求中所使用的相同的XraiseWindow()函數(shù)。
在應(yīng)用程序執(zhí)行XraiseWindow()的情況下,窗口系統(tǒng)12不改變堆棧,并向窗口管理程序105發(fā)送一個(gè)棧頂移動(dòng)請(qǐng)求事件(ConfigureRequest)。
圖7示出當(dāng)接收到棧頂移動(dòng)請(qǐng)求事件時(shí)由窗口管理程序所執(zhí)行的操作的一個(gè)例子的流程圖。
如圖7所示,在步驟S701中,從當(dāng)時(shí)所接收到的棧頂移動(dòng)請(qǐng)求事件(ConfigureRequest)獲取目標(biāo)窗口的標(biāo)識(shí)符且過(guò)程進(jìn)入步驟S702。
在步驟S702中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索目標(biāo)窗口的標(biāo)識(shí)符。當(dāng)相應(yīng)數(shù)據(jù)呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S703而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S712。
在步驟S703中,向窗口系統(tǒng)12查詢?cè)趦?nèi)部數(shù)據(jù)庫(kù)中且屬性獲取標(biāo)記指示“未獲取”的所有窗口的窗口類型和組值。對(duì)于能獲取窗口類型和組值的窗口,將窗口類型和組值以及已獲取屬性的事實(shí)存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中,且過(guò)程進(jìn)入步驟S704。
在步驟S704中,核查目標(biāo)窗口的窗口類型,并當(dāng)窗口類型為優(yōu)先窗口時(shí),過(guò)程進(jìn)入步驟S705而當(dāng)其為普通窗口時(shí),過(guò)程進(jìn)入步驟S706。
在步驟S705中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索其迭加次序在它們的窗口類型為優(yōu)先窗口的諸窗口中的頂層的窗口。然后,向窗口系統(tǒng)12發(fā)送堆棧改變請(qǐng)求,以將目標(biāo)窗口設(shè)置在緊挨在其迭加次序在諸優(yōu)先窗口為的頂層的窗口上面。接著,在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S712。然后,在搜索結(jié)果是在棧頂?shù)拇翱谑悄繕?biāo)窗口本身的情況下,不執(zhí)行任何處理且過(guò)程進(jìn)入步驟S712。
圖8為具體地示例在步驟S705中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖8所示,可以看出只有目標(biāo)窗口被移至緊挨在其迭加次序在諸優(yōu)先窗口中為頂層的窗口的上面。
在圖7中,在步驟S706中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索屬于和用于列表的目標(biāo)窗口同一組的普通窗口,且過(guò)程進(jìn)入步驟S707。
當(dāng)在步驟S707中其堆棧位置確定標(biāo)記指示“已確定”的窗口呈現(xiàn)在列出的窗口中時(shí),過(guò)程進(jìn)入步驟S708,而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S709。
在步驟S708中,當(dāng)其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口呈現(xiàn)在列出的窗口中時(shí),向窗口系統(tǒng)12發(fā)出堆棧改變請(qǐng)求,以將所有列出的且是“臨時(shí)”的窗口設(shè)置在緊挨在列出的窗口中且堆棧位置確定標(biāo)記指示“已確定”的窗口中處于頂層的窗口上面而它們的迭加次序在它們之間保持不變,并進(jìn)一步將目標(biāo)窗口設(shè)置在列出的窗口中的頂層。接著,當(dāng)其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口呈現(xiàn)在列出的窗口中時(shí),將窗口的堆棧位置更新成已確定的。另外,在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S710。
圖9示出具體地示例在步驟S708中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖9所示,可以看出具有和目標(biāo)窗口相同的組值且其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口被移至緊挨在具有和目標(biāo)窗口相同的組值且其堆棧位置確定標(biāo)記指示“已確定”的窗口上面,且目標(biāo)窗口被移至在堆棧中具有相同組值的所有窗口中的頂層。
在圖7中,當(dāng)在步驟S709中其堆棧位置確定標(biāo)記指示“已確定的”的窗口呈現(xiàn)在內(nèi)部數(shù)據(jù)庫(kù)中時(shí),過(guò)程進(jìn)入步驟S710,而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S711。
在步驟S710中,將堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12,以將所有在步驟S706中列出且其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口設(shè)置在緊挨在內(nèi)部數(shù)據(jù)庫(kù)中其堆棧位置確定標(biāo)記指示“已確定”的且該窗口中其迭加次序?yàn)轫攲拥钠胀ù翱谏厦娑鼈兊牡哟涡蛟谒鼈冎g保持不變,并進(jìn)一步將目標(biāo)窗口設(shè)置在列出的窗口中的頂層。然后,更新列出的窗口的堆棧位置確定標(biāo)記以指示“已確定”。另外,在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S712。
圖10示出具體地示例在圖7所示的步驟S710中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖10所示,可以看出具有和目標(biāo)窗口相同組值且堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口被移至緊挨在其迭加次序在所有堆棧位置確定標(biāo)記指示“已確定”的窗口中為頂層的窗口上面,且目標(biāo)窗口被移至在堆棧中具有相同組值的所有窗口中的頂層。
在圖7中,在步驟S711中,將堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12,以將所有在步驟S706中列出的且其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口設(shè)置在整個(gè)堆棧的底層而它們的迭加次序在它們之間保持不變,并進(jìn)一步將目標(biāo)窗口設(shè)置在所列出的窗口中的頂層。接著,更新列出的窗口的堆棧位置確定標(biāo)記以指示“已確定”,并進(jìn)一步更新整個(gè)內(nèi)部數(shù)據(jù)庫(kù)的堆棧位置信息,然后過(guò)程進(jìn)入步驟S712。
圖11示出具體地示例在步驟S711中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖11所示,可以看出具有和目標(biāo)窗口相同的組值且其堆棧位置確定標(biāo)記指示“臨時(shí)”的普通窗口被移至棧底,且目標(biāo)窗口被移至在堆棧中具有相同組值的所有窗口中的頂層。
在圖7中,在步驟S712中,完成處理。
<移動(dòng)堆棧中組底的請(qǐng)求>
在圖1中,應(yīng)用程序101、102和103可以向窗口系統(tǒng)12發(fā)送將所創(chuàng)建的且為其設(shè)置了窗口類型和組的普通窗口移至堆棧中的組底的請(qǐng)求。在X窗口系統(tǒng)的情況中,例如可以將XLowerWindow()函數(shù)用于請(qǐng)求移動(dòng)堆棧中的組底的請(qǐng)求。另外,可以將將優(yōu)先窗口移至堆棧中優(yōu)先窗口中的底層的請(qǐng)求作為堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12。例如,可以使用和移動(dòng)堆棧中組底的請(qǐng)求中所使用的相同的XLowerWindow()函數(shù)。
在應(yīng)用程序執(zhí)行XLowerWindow()的情況下,窗口系統(tǒng)12不改變堆棧,并向窗口管理程序105發(fā)送一個(gè)棧底移動(dòng)請(qǐng)求事件(ConfigureRequest)。
圖12示出當(dāng)接收到棧底移動(dòng)請(qǐng)求事件時(shí)由窗口管理程序105所執(zhí)行的操作的一個(gè)例子的流程圖。
如圖12所示,在步驟S1201中,從當(dāng)時(shí)所接收到的棧底移動(dòng)請(qǐng)求事件(ConfigureRequest)獲取目標(biāo)窗口的標(biāo)識(shí)符且過(guò)程進(jìn)入步驟S1202。
在步驟S1202中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索目標(biāo)窗口的標(biāo)識(shí)符。當(dāng)相應(yīng)數(shù)據(jù)呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S1203而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S1212。
在步驟S1203中,向窗口系統(tǒng)12查詢?cè)趦?nèi)部數(shù)據(jù)庫(kù)中且其屬性獲取標(biāo)記指示“未獲取”的所有窗口的窗口類型和組值。對(duì)于已能獲取窗口類型和組值的窗口,將窗口類型和組值以及已獲取屬性的事實(shí)存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中,且過(guò)程進(jìn)入步驟S1204。
在步驟S1204中,核查目標(biāo)窗口的窗口類型,并當(dāng)窗口類型為優(yōu)先窗口時(shí),過(guò)程進(jìn)入步驟S1205而當(dāng)其為普通窗口時(shí),過(guò)程進(jìn)入步驟S1206。
在步驟S1205中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索其窗口類型是堆棧中的優(yōu)先窗口的窗口中在底層的窗口。然后,向窗口系統(tǒng)12發(fā)出堆棧改變請(qǐng)求,以將目標(biāo)窗口設(shè)置在緊挨在優(yōu)先窗口中其迭加次序是底層的窗口下而。接著,在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S1212。然后,在搜索結(jié)果是在棧底的窗口是目標(biāo)窗口本身的情況下,不執(zhí)行任何處理且過(guò)程進(jìn)入步驟S1212。
圖13為具體地示例在步驟S1205中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖13所示,可以看出只有目標(biāo)窗口被移至緊挨在其迭加次序在優(yōu)先窗口中為底層的窗口的下面。
在圖12中,在步驟S1206中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索屬于和用于列表的目標(biāo)窗口同一組的普通窗口,且過(guò)程進(jìn)入步驟S1207。
當(dāng)在步驟S1207中其堆棧位置確定標(biāo)記指示“已確定”的窗口呈現(xiàn)在列出的窗口中時(shí),過(guò)程進(jìn)入步驟S1208,而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S1209。
在步驟S1208中,當(dāng)其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口呈現(xiàn)在列出的窗口中時(shí),向窗口系統(tǒng)12發(fā)出堆棧改變請(qǐng)求,以將所有列出的且為“臨時(shí)”的窗口設(shè)置在緊挨在列出的窗口中且其堆棧位置確定標(biāo)記指示“已確定”的諸窗口中處于頂層的窗口上面,而它們的迭加次序在它們之間保持不變,并進(jìn)一步將目標(biāo)窗口設(shè)置在列出的窗口中的底層。接著,當(dāng)其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口呈現(xiàn)在列出的窗口中時(shí),將窗口的堆棧位置更新成已確定的。另外,在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S1212。
圖14示出具體地示例在步驟S1212中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖14所示,可以看出具有和目標(biāo)窗口相同的組值且其堆棧位置確定標(biāo)記指示“臨時(shí)”的普通窗口被移至緊挨在具有相同的組值且其堆棧位置確定標(biāo)記指示“已確定”的普通窗口上面,且目標(biāo)窗口被移至在堆棧中具有相同組值的所有普通窗口中的底層。
在圖12中,當(dāng)在步驟S1209中其堆棧位置確定標(biāo)記指示“已確定的”的窗口呈現(xiàn)在內(nèi)部數(shù)據(jù)庫(kù)中時(shí),過(guò)程進(jìn)入步驟S1210,而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S1211。
在步驟S1210中,將堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12,以將所有在步驟S1206中列出的且其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口設(shè)置在緊挨在內(nèi)部數(shù)據(jù)庫(kù)中的窗口中其堆棧位置確定標(biāo)記指示“已確定”的且其迭加次序是頂層的普通窗口上面而它們的迭加次序在它們之間保持不變,并進(jìn)一步將目標(biāo)窗口設(shè)置在列出的窗口中的底層。然后,更新列出的窗口的堆棧位置確定標(biāo)記以指示“已確定”。另外,在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S1212。
圖15示出具體地示例在步驟S1210中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖15所示,可以看出具有和目標(biāo)窗口相同組值且堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口被移至緊挨在所有其堆棧位置確定標(biāo)記指示“已確定”的窗口中其迭加次序是頂層的窗口上面,且目標(biāo)窗口被移至在堆棧中具有相同組值的所有窗口中的底層。
在圖12中,在步驟S1211中,將堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12,以將所有在步驟S1206中列出的且其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口設(shè)置在整個(gè)堆棧的底層,而它們的迭加次序在它們之間保持不變,并進(jìn)一步將目標(biāo)窗口設(shè)置在所列出的窗口中的底層。接著,更新列出的窗口的堆棧位置確定標(biāo)記以指示“已確定”,并進(jìn)一步更新整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中的堆棧位置信息,然后過(guò)程進(jìn)入步驟S1212。
圖16示出具體地示例在步驟S1211中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖16所示,可以看出具有和目標(biāo)窗口相同的組值且其堆棧位置確定標(biāo)記指示“臨時(shí)”的普通窗口被移至棧底,且目標(biāo)窗口被移至在堆棧中具有相同組值的所有普通窗口中的底層。
在圖12中,在步驟S1212中,完成處理。
<移動(dòng)堆棧中組單元中的頂層的請(qǐng)求>
在圖1中,應(yīng)用程序101、102和103可以向窗口系統(tǒng)12發(fā)送將所創(chuàng)建的且為其設(shè)置了窗口類型和組的普通窗口移至堆棧中組單元中的頂層的請(qǐng)求。在X窗口系統(tǒng)的情況中,例如可以通過(guò)使用客戶消息結(jié)構(gòu)容易地實(shí)現(xiàn)該請(qǐng)求。下面,將利用客戶消息發(fā)送至窗口系統(tǒng)12的移動(dòng)堆棧中的組單元中的頂層的請(qǐng)求的消息稱為移動(dòng)堆棧中組的單元中的頂層的請(qǐng)求的消息。請(qǐng)求移動(dòng)堆棧中組的單元中的頂層的請(qǐng)求的消息包含希望移動(dòng)的組(目標(biāo)組)的組值。
在應(yīng)用程序101、102和103發(fā)出移動(dòng)堆棧中組的單元中的頂層的請(qǐng)求的消息(ClientMessage)的情況下,通過(guò)窗口系統(tǒng)12將該消息發(fā)送至窗口管理程序105。
圖17示出當(dāng)接收到移動(dòng)堆棧中組的單元中的頂層的請(qǐng)求的消息時(shí)由窗口管理程序105所執(zhí)行的操作的一個(gè)例子的流程圖。
如圖17所示,在步驟S1701中,從當(dāng)時(shí)所接收到的請(qǐng)求移動(dòng)堆棧中的組單元中的頂層的請(qǐng)求的消息(ClientMessage)中獲取目標(biāo)組值且過(guò)程進(jìn)入步驟S1702。
在步驟S1702中,向窗口系統(tǒng)12查詢?cè)趦?nèi)部數(shù)據(jù)庫(kù)中且屬性獲取標(biāo)記指示“未獲取”的所有窗口的窗口類型和組值。對(duì)于已能獲取窗口類型和組值的窗口,將窗口類型和組值以及已獲取屬性的事實(shí)存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中,且過(guò)程進(jìn)入步驟S1703。
在步驟S1703中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索具有用于列表的目標(biāo)組值的普通窗口的信息,且過(guò)程進(jìn)入步驟S1704。
在步驟S1704中,當(dāng)其堆棧位置確定信息指示“已確定”且具有與目標(biāo)組值不同的組值信息的普通窗口呈現(xiàn)在內(nèi)部數(shù)據(jù)庫(kù)中時(shí),過(guò)程進(jìn)入步驟S1705,而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S1706。
在步驟S1705中,向窗口系統(tǒng)12發(fā)出堆棧改變請(qǐng)求,以將列出的窗口設(shè)置在緊挨在內(nèi)部數(shù)據(jù)庫(kù)中堆棧位置確定標(biāo)記指示“已確定”且具有與目標(biāo)組值不同的組值信息的普通窗口中其迭加次序是頂層的窗口上面,而它們的迭加次序在它們中保持不變)、。接著,當(dāng)其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口呈現(xiàn)在列出的窗口中時(shí),將窗口的堆棧位置更新成“已確定”。另外,在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S1707。
圖18示出具體地示例在步驟S1705中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖18所示,可以看出具有目標(biāo)組值的諸普通窗口被移至緊挨在其堆棧位置確定標(biāo)記指示“已確定”且具有與諸目標(biāo)組值不同的組值信息的所有普通窗口中其迭加次序是頂層的窗口上面。
在圖17所示的步驟S1706中,向窗口系統(tǒng)12發(fā)送堆棧改變請(qǐng)求以將列出的窗口設(shè)置在整個(gè)堆棧的底層而它們的迭加次序在它們中保持不變。接著,當(dāng)其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口呈現(xiàn)在列出的窗口中時(shí),將窗口的堆棧位置更新成“已確定”。另外,在整個(gè)數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S1707。
圖19示出具體地示例在步驟S1706中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖19所示,可以看出具有目標(biāo)組值的普通窗口被移至整個(gè)堆棧的底層。
在圖17中,在步驟S1707中,處理完成。
<移動(dòng)堆棧中組單元中的底層的請(qǐng)求>
在圖1中,應(yīng)用程序101、102和103可以向窗口系統(tǒng)12發(fā)送將所創(chuàng)建的且為其設(shè)置了窗口類型和組的普通窗口移至堆棧中組單元中的底層的請(qǐng)求。在X窗口系統(tǒng)的情況中,例如可以通過(guò)使用客戶消息結(jié)構(gòu)容易地實(shí)現(xiàn)該請(qǐng)求。下面,將利用客戶消息發(fā)送至窗口系統(tǒng)12的移動(dòng)堆棧中的組單元中的底層的請(qǐng)求的消息稱為移動(dòng)堆棧中組的單元中的底層的請(qǐng)求的消息。移動(dòng)堆棧中組的單元中的底層的請(qǐng)求的消息包含希望移動(dòng)的組(目標(biāo)組)的組值。
在應(yīng)用程序101、102和103發(fā)出移動(dòng)堆棧中組的單元中的底層的請(qǐng)求的消息(ClientMessage)的情況下,通過(guò)窗口系統(tǒng)12將該消息發(fā)送至窗口管理程序105。
圖20示出當(dāng)接收到移動(dòng)堆棧中組的單元中的底層的請(qǐng)求的消息時(shí)由窗口管理程序105所執(zhí)行的操作的一個(gè)例子的流程圖。
如圖20所示,在步驟S2001中,從當(dāng)時(shí)所接收到的請(qǐng)求移動(dòng)堆棧中的組單元中的底層的請(qǐng)求的消息(ClientMessage)中獲取目標(biāo)組值且過(guò)程進(jìn)入步驟S1702。
在步驟S2002中,向窗口系統(tǒng)12查詢?cè)趦?nèi)部數(shù)據(jù)庫(kù)中且屬性獲取標(biāo)記指示“未獲取”的所有窗口的窗口類型和組值,且對(duì)于已能獲取窗口類型和組值的窗口,將窗口類型和組值以及已獲取屬性的事實(shí)存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中,且過(guò)程進(jìn)入步驟S2003。
在步驟S2003中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索具有用于列表的目標(biāo)組值的普通窗口,且過(guò)程進(jìn)入步驟S2004。
在步驟S2004中,向窗口系統(tǒng)12發(fā)出堆棧改變請(qǐng)求,以將列出的窗口設(shè)置在整個(gè)堆棧的底層,而它們的迭加次序在它們中保持不變。接著,當(dāng)其堆棧位置確定標(biāo)記指示“臨時(shí)”的窗口呈現(xiàn)在列出的窗口中時(shí),將該窗口的堆棧位置更新成“已確定”。另外,在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置信息,然后過(guò)程進(jìn)入步驟S2005。
圖21示出具體地示例在步驟S2004中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖21所示,可以看出具有目標(biāo)組值的普通窗口被移至整個(gè)堆棧的底層。
在圖20所示的步驟S2005中,處理完成。
<破壞請(qǐng)求>
在圖1中,應(yīng)用程序101、102和103發(fā)出破壞所創(chuàng)建的窗口的請(qǐng)求。
當(dāng)窗口系統(tǒng)12接收到破壞請(qǐng)求時(shí),它停止管理相應(yīng)的窗口并刪除該窗口。然后,將窗口破壞通知事件(DestroyNotify)發(fā)送至窗口管理程序105。
當(dāng)窗口管理程序105接收到窗口破壞通知事件(DestroyNotify)時(shí),它從中提取窗口標(biāo)識(shí)符并在內(nèi)部數(shù)據(jù)庫(kù)中搜索相應(yīng)窗口信息以刪除該信息,然后按需要更新整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中的堆棧位置,并結(jié)束該處理。
如上所述,在顯示各普通窗口之前,將窗口整體地顯示成一組,以確定組中窗口的迭加次序,從而防止處于頂層的組的各窗口被迭加和顯示在其它組的下面。另外,窗口管理程序通過(guò)接收請(qǐng)求整體地排列屬于堆棧改變的目標(biāo)組的所有普通窗口而保持它們之間的它們的迭加次序的堆棧改變請(qǐng)求來(lái)觸發(fā),然后執(zhí)行堆棧改變,因此應(yīng)用程序能更容易地掌握其自己組的窗口的迭加次序。另外,窗口管理程序設(shè)有移動(dòng)堆棧中組的頂層和移動(dòng)堆棧中組的底層的功能,所以可以在組中控制普通窗口的迭加次序,因此各應(yīng)用程序可以改變堆棧而不必考慮由其它應(yīng)用程序顯示的普通窗口。另外,窗口管理程序設(shè)有移動(dòng)堆棧中組單元的頂層和移動(dòng)堆棧中組單元的底層的功能。因此,在將組分配給各應(yīng)用程序的情況下即使在不知道屬于應(yīng)用程序的窗口的成員時(shí),也可以將屬于該應(yīng)用程序的所有普通窗口移至堆棧的最前面(頂層)。另外,通過(guò)設(shè)置優(yōu)先窗口,可以提供一種用于使能不論組的單元中的迭加次序用最高優(yōu)先權(quán)顯示特定窗口的服務(wù)。
然后,在本實(shí)施例中,雖然窗口管理程序獲取窗口類型和組值的定時(shí)是在接收到映射請(qǐng)求事件(MapRequest)和在接收到堆棧改變請(qǐng)求時(shí),但該定時(shí)不限于此。窗口類型和組值可以通過(guò)應(yīng)用程序設(shè)置窗口類型和組的定時(shí)來(lái)獲取并存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中,這樣處理起來(lái)更有效。另外,通過(guò)此定時(shí),可以將窗口整體地排列成一組以確定組中多層迭加的次序。另外,可以允許或可以不允許窗口類型和組值的改變。在允許改變的情況下,當(dāng)通過(guò)設(shè)置窗口類型和組的定時(shí)將窗口類型從優(yōu)先窗口變成普通窗口時(shí),將堆棧位置確定標(biāo)記變成指示“臨時(shí)”。相反,在窗口類型從普通窗口變成優(yōu)先窗口的情況下,改變堆棧使窗口在該時(shí)刻位于堆棧的頂層。另外,在改變了組值而沒有改變窗口類型的情況下,堆棧位置確定標(biāo)記變成指示“臨時(shí)”。然后,應(yīng)該更新內(nèi)部數(shù)據(jù)庫(kù)。另一方面,在不允許改變的情況下,通過(guò)設(shè)置窗口類型和組核查屬性獲取標(biāo)記,并當(dāng)已執(zhí)行該獲取時(shí),可以忽略該設(shè)置。
另外,雖然描述了用于控制兩種類型的窗口(優(yōu)先窗口和普通窗口)的例子,不用說(shuō)即使當(dāng)使用僅僅一種普通窗口時(shí)也可以容易地實(shí)現(xiàn)本發(fā)明。
另外,雖然將窗口管理程序控制身為根窗口的子窗口的頂層窗口的迭加次序的情況作為例子,不用說(shuō),對(duì)于頂層窗口的后代窗口也可以執(zhí)行本發(fā)明。
另外,雖然窗口管理程序包括X窗口系統(tǒng)和窗口管理程序,并將窗口創(chuàng)建請(qǐng)求和映射請(qǐng)求用作與應(yīng)用程序的接口,本發(fā)明不限于此。只要接口與顯示請(qǐng)求相對(duì)應(yīng),可以使用任何接口。在此情況下,當(dāng)接收到窗口顯示請(qǐng)求時(shí),窗口管理程序可以將接收窗口創(chuàng)建請(qǐng)求時(shí)要執(zhí)行的處理與接收映射請(qǐng)求時(shí)要執(zhí)行的處理(在本實(shí)施例中描述了這些處理)一起執(zhí)行。
當(dāng)將窗口整體地排列一組以確定組中多層迭加的次序時(shí),僅改變?cè)摯翱诘牡哟涡?。然而,例如窗口管理程序?chuàng)建各組的代表窗口并在整體地排列窗口以確定組中的迭加次序時(shí)將窗口作為代表窗口的子窗口處理以執(zhí)行控制,也是容易的。因此,因?yàn)榭梢酝ㄟ^(guò)控制代表窗口來(lái)執(zhí)行組單元中的堆棧移動(dòng)和組單元中窗口的顯示和不顯示之間的切換,所以組具有的窗口越多,可以更多地減少處理中的負(fù)荷。圖22示出使用代表窗口的情況中的堆棧狀態(tài)的一個(gè)例子的示意圖。
另外,雖然窗口管理程序不執(zhí)行不顯示在堆棧中比位于處于頂層的組低的位置的窗口的那種控制,但可以容易地實(shí)現(xiàn)控制以不顯示它。在此情況下,將指示顯示/不顯示的映射標(biāo)記添加至窗口信息,并將應(yīng)用程序的顯示請(qǐng)求的狀態(tài)存儲(chǔ)在映射標(biāo)記中。當(dāng)窗口所屬的組到達(dá)堆棧中普通窗口中的頂層時(shí),核查映射標(biāo)記,并當(dāng)該映射標(biāo)記指示“顯示”時(shí)執(zhí)行映射,而當(dāng)該映射標(biāo)記指示“不顯示”時(shí),該窗口保持不被映射。相反,當(dāng)窗口所屬的組不再處于堆棧中普通窗口中的頂層時(shí),在映射標(biāo)記指示“顯示”的情況下執(zhí)行不映射處理,而在映射標(biāo)記指示“不顯示”的情況下,不執(zhí)行任何處理。因此,即使試圖顯示在堆棧中位于比普通窗口中處于頂層的組低的位置的組的窗口等,也不在顯示單元上顯示該窗口等。因此,不必顧及半當(dāng)中會(huì)在不被處于頂層的組的窗口覆蓋的部分上顯示堆棧中位置較低的組的窗口。
另外,雖然在此實(shí)施例中,沒有特別將由窗口管理程序所創(chuàng)建和映射的特定窗口設(shè)置在緊挨在屬于普通窗口中處于頂層的組的所有窗口中其迭加次序?yàn)榈讓拥拇翱谙旅?,但可以容易地?shí)現(xiàn)該設(shè)置。因此,例如,當(dāng)顯示特定窗口以填充顯示單元中的屏幕時(shí),即使試圖顯示在堆棧中的位置比特定窗口低的組的窗口等,在顯示單元也不顯示該窗口等。因此,不必顧及半當(dāng)中會(huì)在不被處于頂層的組的窗口覆蓋的部分上顯示堆棧中位置較低的組的窗口。圖23示出圖示在使用特定窗口的情況下堆棧的狀態(tài)的一個(gè)例子的示意圖,而圖24進(jìn)一步示出圖示屏幕上顯示的一個(gè)例子的示意圖。
雖然將三個(gè)應(yīng)用程序作為例子,但本發(fā)明不限于此,可以使用一個(gè)或一個(gè)以上程序。
另外,雖然將向各應(yīng)用程序分配一個(gè)組的情況作為例子,本發(fā)明不限于此,可以將多個(gè)組分配給一個(gè)應(yīng)用程序,或可以將一個(gè)組分配給多個(gè)應(yīng)用程序。
另外,雖然所述的是窗口管理程序包括X窗口系統(tǒng)和窗口管理程序并在其間發(fā)送和接收事件和請(qǐng)求的一個(gè)例子,但本發(fā)明不限于此。窗口系統(tǒng)不一定是X窗口系統(tǒng)且窗口管理程序不一定要構(gòu)成得可以被分成兩個(gè)以在其間發(fā)送和接收事件和各種請(qǐng)求。在整體地構(gòu)成和執(zhí)行窗口管理程序的情況下,將事件或消息的接口變成基于功能的,從而使此實(shí)施例能容易地應(yīng)用。
另外,雖然沒有特別將由窗口管理程序所創(chuàng)建的特定窗口設(shè)置在緊挨在屬于普通窗口中處于頂層的組的所有窗口中其迭加次序是頂層的窗口上面,但可以容易地實(shí)現(xiàn)該設(shè)置。因此,例如,當(dāng)用另一組代替處于頂層的組時(shí),在X窗口系統(tǒng)的情況中,使用XRestackWindows()函數(shù),并可以將特定窗口用于指示要移動(dòng)的窗口組的堆棧的目的地。在堆棧中沒有比處于頂層的組的窗口位置高的窗口的情況下,確定呈現(xiàn)的所有窗口的排列次序,該次序應(yīng)分配給XRestackWindows()的自變量。當(dāng)特定窗口呈現(xiàn)時(shí),只需將該特定窗口和窗口組(set)設(shè)置分配給自變量。下面將簡(jiǎn)要地說(shuō)明原因。有兩種用XRestackWindows()函數(shù)改變迭加次序的方法。第一種方法是將所有現(xiàn)有窗口以迭加次序整體地排列并分配給自變量的整體分配方法。第二種方法是將具有迭加次序不變的窗口和位置比所述窗口低的且要改變其迭加次序的那些窗口分配給自變量的部分分配方法。例如,在五個(gè)窗口A、B、C、D和E以由堆棧較高位置開始的次序呈現(xiàn)時(shí),可以將迭加次序變成A、C、B、D、E??蓪?A,C,B,D,E)作為整體分配分配給自變量,而將(A,C,B)分配給自變量作為部分分配。如上所述,部分分配與整體分配相比具有需要分配給自變量的窗口數(shù)量減少了。如上所述,將由窗口管理程序所創(chuàng)建的特定窗口設(shè)置在緊挨在屬于普通窗口中處于頂層的組的所有窗口中其迭加次序是頂層的窗口上面,因此可以將該特定窗口用作用于部分分配中的自變量的“具有迭加次序不變的窗口”。因此,當(dāng)用另一組代替處于頂層的組時(shí),也可以用部分分配改變迭加次序。然后,作為部分分配的另一優(yōu)點(diǎn),XRestackWindows()函數(shù)的執(zhí)行更容易成功。這是因?yàn)榇翱谙到y(tǒng)與窗口管理程序不同步運(yùn)行,且和映射(窗口顯示)不一樣,基于來(lái)自應(yīng)用程序的請(qǐng)求的窗口創(chuàng)建和破壞是在應(yīng)用程序和窗口系統(tǒng)之間任意地執(zhí)行的。因此,由窗口管理程序管理的有關(guān)窗口是否呈現(xiàn)的信息有時(shí)與已更新信息不同。在此情況下,整體分配要求分配所有窗口的迭加次序,從而不能改變迭加次序。
另外,在使用X窗口系統(tǒng)的情況下,窗口管理程序使用XRestackWindows()函數(shù)來(lái)控制堆棧。窗口組和指示該窗口組要移向的目的地的窗口被分配給XRestackWindows()函數(shù)。然而,在窗口中任何一個(gè)被破壞的情況下,有時(shí)有意不執(zhí)行堆??刂?。作為對(duì)其的對(duì)策,例如,當(dāng)窗口管理程序接收到窗口破壞通知事件(DestroyNotify)時(shí),窗口管理程序在內(nèi)部數(shù)據(jù)庫(kù)中搜索相應(yīng)的窗口信息并刪除它,并按需要在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置,然后在要獲取棧樹時(shí)在窗口系統(tǒng)中查詢棧樹,并從目標(biāo)中消除窗口管理程序所沒有識(shí)別出的新窗口,核查該棧樹與窗口管理程序中的棧樹一致性,并在該棧樹與窗口管理程序所識(shí)別出的棧樹不同的情況下,窗口管理程序發(fā)出一個(gè)使該棧樹與窗口管理程序中的棧一致的堆棧改變請(qǐng)求,并且直到識(shí)別相互一致以前,窗口管理程序可以重復(fù)查詢當(dāng)時(shí)在窗口系統(tǒng)中的棧樹,核查一致性和發(fā)出堆棧改變請(qǐng)求。因此,即使當(dāng)窗口系統(tǒng)在堆棧改變處理中失敗,窗口管理程序也可以確保在認(rèn)識(shí)堆棧方面與窗口系統(tǒng)一致,從而防止處理中的失敗。
另外,當(dāng)執(zhí)行XRestackWindows()時(shí)窗口管理程序可以設(shè)置一個(gè)標(biāo)記。只有在接收到窗口破壞通知事件(DestroyNotify)時(shí)設(shè)置該標(biāo)記的情況下,窗口管理程序才可以記下該標(biāo)記并執(zhí)行與棧樹一致性的處理。因此,可以減小用于執(zhí)行與棧樹一致性的處理的頻率。
另外,不用說(shuō),可以將諸如家用計(jì)算機(jī)、蜂窩電話、PDA(個(gè)人數(shù)字助理)、機(jī)頂盒、數(shù)字照相機(jī)和照相機(jī)集成型VTR之類的任何在其上安裝了運(yùn)行程序的CPU和存儲(chǔ)器并試圖在顯示單元上顯示多個(gè)窗口的設(shè)備用作計(jì)算機(jī)7。
另外,雖然顯示單元11是計(jì)算機(jī)7的一部分,這并不是指顯示單元和計(jì)算機(jī)被物理地集成在一起,且顯示單元可以以不論是有線是或是無(wú)線的方式與計(jì)算機(jī)7連接。
另外,不用說(shuō),用于實(shí)現(xiàn)根據(jù)本實(shí)施例的窗口堆??刂品椒ǖ拇翱诠芾沓绦蚩梢源鎯?chǔ)在要提供給計(jì)算機(jī)ROM、盤等中,也可以通過(guò)網(wǎng)絡(luò)提供給計(jì)算機(jī)。
(實(shí)施例2)根據(jù)第二實(shí)施例的窗口堆??刂品椒ㄊ歉鶕?jù)第一實(shí)施例的方法的修改,而第二實(shí)施例與第一實(shí)施例的不同之處僅在于接收映射請(qǐng)求事件(MapRequest)時(shí)窗口管理程序105所執(zhí)行的操作以及在第二實(shí)施例中窗口管理程序105不應(yīng)將窗口整體地排列成一組以通過(guò)應(yīng)用程序設(shè)置窗口類型和組值的定時(shí)確定迭加次序。因此,在此實(shí)施例中,只說(shuō)明在窗口管理程序105接收映射請(qǐng)求事件(MapRequest)時(shí)由窗口管理程序105所執(zhí)行的操作。
圖25示出當(dāng)接收到映射請(qǐng)求事件(MapRequest)時(shí)由窗口管理程序執(zhí)行的操作的一個(gè)例子的流程圖。
如圖25所示,在步驟S2501中從當(dāng)時(shí)接收到的映射請(qǐng)求事件(MapRequest)中獲取要映射的目標(biāo)窗口的標(biāo)識(shí)符,且過(guò)程進(jìn)入步驟S2502。
在步驟S2502中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索要映射的目標(biāo)窗口的標(biāo)識(shí)符。當(dāng)相應(yīng)的窗口信息呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S2503,而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S2515。
在步驟S2503中,在內(nèi)部數(shù)據(jù)庫(kù)中核查目標(biāo)窗口的堆棧位置確定標(biāo)記是否指示“已確定”,并當(dāng)其指示“已確定”時(shí),過(guò)程進(jìn)入步驟S2514,而當(dāng)其指示“臨時(shí)”時(shí),過(guò)程進(jìn)入步驟S2504。
在步驟S2504中,核查目標(biāo)窗口的屬性獲取標(biāo)記,并當(dāng)其指示“已獲取”時(shí),過(guò)程進(jìn)入步驟S2506,而當(dāng)其指示“未獲取”時(shí),過(guò)程進(jìn)入步驟S2505。
在步驟S2505中,向窗口系統(tǒng)查詢?cè)撃繕?biāo)窗口的窗口類型和組值以獲取它們,并將該窗口類型和組值存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中,且過(guò)程進(jìn)入步驟S2506。
在步驟S2506中,核該查目標(biāo)窗口的窗口類型。當(dāng)該窗口類型是優(yōu)先窗口時(shí),過(guò)程進(jìn)入步驟S2514,而當(dāng)該窗口類型是普通窗口時(shí),過(guò)程進(jìn)入步驟S2507。
在步驟S2507中,對(duì)于在內(nèi)部數(shù)據(jù)庫(kù)中且屬性獲取標(biāo)記指示“未獲取”的所有窗口,向窗口系統(tǒng)12查詢窗口類型和組值,且對(duì)于已獲取它們的窗口,將窗口類型和組值以及已獲取屬性的事實(shí)存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中,且過(guò)程進(jìn)入步驟S2508。
在步驟S2508中,在內(nèi)部數(shù)據(jù)庫(kù)中搜索和用于列表的目標(biāo)窗口屬于同一組的普通窗口,且過(guò)程進(jìn)入步驟S2509。
在步驟S2509中,當(dāng)其堆棧位置確定標(biāo)記指示“已確定”的窗口呈現(xiàn)在列出的窗口中時(shí),過(guò)程進(jìn)入步驟S2510,而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S2511。
在步驟S2510中,將堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12以將所列出的且其堆棧位置確定標(biāo)記指示“臨時(shí)”的所有窗口設(shè)置在緊挨在列出的且其堆棧位置確定標(biāo)記指示“已確定”的窗口中處于頂層的窗口上面而它們中的它們的迭加次序保持不變,且過(guò)程進(jìn)入步驟S2514。
圖26為具體地示例在步驟S2510中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖26所示,可以看出要映射的目標(biāo)窗口和具有和要映射的目標(biāo)窗口相同的組值且其堆棧位置確定標(biāo)記指示“臨時(shí)”的普通窗口被移至緊挨在具有相同組值且其堆棧位置確定標(biāo)記指示“已確定”的普通窗口上面。
在圖25中,在步驟S2511中,當(dāng)其堆棧位置確定標(biāo)記指示“已確定”的普通窗口在內(nèi)部數(shù)據(jù)庫(kù)中呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S2512,而當(dāng)沒有呈現(xiàn)時(shí),過(guò)程進(jìn)入步驟S2513。
在步驟S2512中,將堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12以將步驟S2508中所列出的且其堆棧位置確定標(biāo)記指示“臨時(shí)”的所有窗口設(shè)置在緊挨在內(nèi)部數(shù)據(jù)庫(kù)中且其堆棧位置確定標(biāo)記指示“已確定”的窗口中其迭加次序是頂層的普通窗口上面,而它們中的它們的迭加次序保持不變,且過(guò)程進(jìn)入步驟S2514。
圖27示出具體地示例在步驟S2512中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖27所示,可以看出要映射的目標(biāo)窗口和具有和要映射的目標(biāo)窗口相同的組值且其堆棧位置確定標(biāo)記指示“臨時(shí)”的普通窗口被移至緊挨在堆棧位置確定標(biāo)記指示“已確定”的所有普通窗口中迭加次序是頂層的窗口上。
在圖25中,在步驟S2513中,將堆棧改變請(qǐng)求發(fā)送至窗口系統(tǒng)12以將步驟S2508中所列出的且其堆棧位置確定標(biāo)記指示“臨時(shí)”的所有窗口設(shè)置在緊挨在整個(gè)堆棧的底層而它們中的它們的迭加次序保持不變,且過(guò)程進(jìn)入步驟S2514。
圖28示出具體地示例在步驟S2513中如何根據(jù)堆棧改變請(qǐng)求改變堆棧的示意圖。
如圖28所示,可以看出要映射的目標(biāo)窗口和具有和要映射的目標(biāo)窗口相同的組值且其堆棧位置確定標(biāo)記指示“臨時(shí)”的普通窗口被移至棧底。
在圖25中,在步驟S2514中,將用于要映射的目標(biāo)窗口的映射請(qǐng)求發(fā)送至窗口系統(tǒng)12,并在內(nèi)部數(shù)據(jù)庫(kù)中目標(biāo)窗口的窗口信息的堆棧位置確定標(biāo)記指示“未確定”時(shí),將堆棧位置更新成“已確定”,并按需要進(jìn)一步在整個(gè)內(nèi)部數(shù)據(jù)庫(kù)中更新堆棧位置,然后過(guò)程進(jìn)入步驟S2515。
在步驟S2515中,處理完成。
如上所述,窗口管理程序移動(dòng)具有和要映射的目標(biāo)窗口相同的組值且其堆棧位置是臨時(shí)的普通窗口組的堆棧位置,而保持它們?cè)谄胀ù翱诮M中堆棧中的上下關(guān)系,并將普通窗口整體地排列成一組,因此,同一組的迭加次序不因映射而改變并減少了用于管理同一組應(yīng)用程序中迭加次序的負(fù)荷。另外,如第一實(shí)施例中所述,同樣在接收到堆棧改變請(qǐng)求時(shí),將具有和目標(biāo)窗口相同組值且其堆棧位置是臨時(shí)的普通窗口組整體地排列成一組,而在普通窗口組中維持它們?cè)诙褩V械纳舷玛P(guān)系,從而該應(yīng)用程序可以根據(jù)創(chuàng)建窗口的次序管理屬于其自己一組窗口的迭加次序。這匹配X窗口系統(tǒng)的基礎(chǔ),且該應(yīng)用程序可以根據(jù)典型的迭加次序確定規(guī)則的創(chuàng)建次序管理其自己一組的普通窗口的堆棧。
然后,雖然在本實(shí)施例中在接收映射請(qǐng)求事件(MapRequest)時(shí)管理程序獲取窗口的組值,但本發(fā)明不限于此。在第一實(shí)施例的情況中,可以通過(guò)應(yīng)用程序設(shè)置窗口類型和組的定時(shí)來(lái)獲取組值,并可以將窗口類型和組值及已獲取屬性的事實(shí)存儲(chǔ)在內(nèi)部數(shù)據(jù)庫(kù)中,這樣處理起來(lái)更有效。然而,與第一實(shí)施例不同,可以將窗口整體地排列成一組以通過(guò)上述定時(shí)確定組中多層迭加的次序。
工業(yè)實(shí)用性本發(fā)明適用于在顯示單元上顯示多個(gè)窗口,且特別適用于管理蜂窩電話、PDA等的小屏幕的窗口從而這些窗口更易于相互覆蓋的窗口。
權(quán)利要求
1.一種用于根據(jù)一個(gè)或多個(gè)應(yīng)用程序管理在顯示單元上所顯示的多個(gè)窗口的堆棧的窗口堆棧控制方法,其特征在于,包括以下步驟指定一組來(lái)自應(yīng)用程序的窗口;接收用于顯示來(lái)自應(yīng)用程序的窗口的請(qǐng)求;和將窗口整體地排列成一組以在響應(yīng)顯示請(qǐng)求顯示窗口時(shí)確定該組中的窗口的迭加次序。
2.如權(quán)利要求1所述的窗口堆??刂品椒?,其特征在于,其中,在整體排列步驟中,當(dāng)從應(yīng)用程序接收到用于顯示沒有整體地排成一組的第一窗口的請(qǐng)求時(shí),將其窗口與第一窗口屬于同一組且沒有整體地排列成一組的第一窗口組和其窗口與第一窗口屬于同一組且整體地排列成一組的第二窗口組集中起來(lái),而保持第一窗口組中迭加次序,使第一窗口組的迭加次序后連著第二窗口組的迭加次序。
3.如權(quán)利要求1或2所述的窗口堆棧控制方法,其特征在于,還包括用于為各組建立代表窗口的步驟,其中所述整體排列步驟包括當(dāng)將窗口整體地排列成一組以確定該窗口在組中的迭加次序時(shí),將該窗口作為代表窗口的子窗口處理。
4.如權(quán)利要求1-3中任一所述的窗口堆棧控制方法,其特征在于,還包括以下步驟從應(yīng)用程序中接收一個(gè)請(qǐng)求移動(dòng)窗口堆棧中組的頂層的請(qǐng)求和一個(gè)請(qǐng)求移動(dòng)窗口堆棧中組的底層的請(qǐng)求;和響應(yīng)移動(dòng)頂?shù)恼?qǐng)求或移動(dòng)底的請(qǐng)求改變組中的堆棧。
5.如權(quán)利要求4所述的窗口堆??刂品椒?,其特征在于,所述堆棧改變步驟包括當(dāng)從應(yīng)用程序接收到將第一窗口移至窗口堆棧中組的頂層的請(qǐng)求和將第一窗口移至窗口堆棧中組的底層的請(qǐng)求時(shí),改變堆棧以將其窗口與第一窗口屬于同一組且沒有整體地排列成一組的第一窗口組和其窗口與第一窗口屬于同一組且整體地排列成一組的第二窗口組集中起來(lái),而保持第一窗口組中的迭加次序,使得第一窗口組的迭加次序后連著第二窗口組的迭加次序。
6.如權(quán)利要求1-3中任一所述的窗口堆??刂品椒ǎ涮卣髟谟?,還包括用于從應(yīng)用程序接收請(qǐng)求移動(dòng)窗口堆棧中組單元中頂?shù)恼?qǐng)求和請(qǐng)求移動(dòng)窗口堆棧中組單元中底的請(qǐng)求的步驟,和響應(yīng)移動(dòng)項(xiàng)的請(qǐng)求或移動(dòng)底的請(qǐng)求改變組單元中的堆棧的步驟。
7.如權(quán)利要求5所述的窗口堆??刂品椒ǎ涮卣髟谟?,所述堆棧改變步驟包括當(dāng)從應(yīng)用程序接收到請(qǐng)求將第一組移至窗口堆棧中組單元中的頂層的請(qǐng)求和請(qǐng)求將第一組移至窗口堆棧中組單元中的底層的請(qǐng)求時(shí),改變堆棧以將其窗口屬于第一組且沒有整體地排列成一組的第一窗口組和其窗口與屬于第一組且整體地排列成一組的第二窗口組用集中起來(lái),而保持第一窗口組中的迭加次序,使得第一窗口組的迭加次序后連著第二窗口組的迭加次序。
8.如權(quán)利要求1所述的窗口堆??刂品椒?,其特征在于,使得用應(yīng)用程序指定成優(yōu)先窗口的窗口不屬于任何一組并使該優(yōu)先窗口在堆棧一直處于比在顯示單元上所顯示的且屬于任何組的所有窗口高的位置。
9.如權(quán)利要求1所述的窗口堆??刂品椒?,其特征在于,在堆棧中的位置比屬于處于頂層的組的窗口低的窗口一直處于不顯示狀態(tài)。
10.如權(quán)利要求1所述的窗口堆??刂品椒?,其特征在于,其中特定窗口緊挨在迭加次序在屬于處于頂層的組的窗口中為底層的窗口的下面。
11.如權(quán)利要求4或6所述的窗口堆??刂品椒ǎ涮卣髟谟?,X窗口系統(tǒng)和窗口管理程序管理多個(gè)窗口的堆棧,且特定窗口緊挨在處于頂層的組的上面。
12.如權(quán)利要求1-3中任一所述的窗口堆??刂品椒ǎ涮卣髟谟?,X窗口系統(tǒng)和窗口管理程序管理多個(gè)窗口的堆棧,且窗口管理程序在接收到窗口破壞通知時(shí)確認(rèn)其識(shí)別出的堆棧是否與由窗口系統(tǒng)識(shí)別出的堆棧一致,并在不一致的情況下執(zhí)行用于使由窗口系統(tǒng)識(shí)別出的堆棧與由窗口管理程序識(shí)別出的堆棧一致的處理。
13.如權(quán)利要求1-3中任一所述窗口堆棧控制方法,其特征在于,X窗口系統(tǒng)和窗口管理程序管理多個(gè)窗口的堆棧,且窗口管理程序在請(qǐng)求窗口系統(tǒng)改變堆棧時(shí)設(shè)置一個(gè)標(biāo)記,并且只有在接收到窗口破壞通知時(shí)設(shè)置該標(biāo)記時(shí),確認(rèn)其識(shí)別出的堆棧是否與由窗口系統(tǒng)識(shí)別出的堆棧一致,并在不一致的情況中執(zhí)行用于使由窗口系統(tǒng)識(shí)別出的堆棧與由窗口管理程序識(shí)別出的堆棧一致的處理,從而將該標(biāo)記記下。
14.如權(quán)利要求1所述的窗口堆??刂品椒?,其特征在于,所述整體排列步驟包括當(dāng)從應(yīng)用程序接收到顯示沒有整體地排列成一組的第一窗口的請(qǐng)求時(shí),集中屬于與該第一窗口同一組的且沒有整體地排列成一組的第一窗口和第二窗口組的窗口,使得第一窗口組的迭加次序后連著第二窗口組的迭加次序。
15.一種用于根據(jù)一個(gè)或多個(gè)應(yīng)用程序管理顯示在顯示單元上的多個(gè)窗口的堆棧的窗口管理程序,其特征在于,在該程序中計(jì)算機(jī)可用于執(zhí)行以下步驟指定一組來(lái)自應(yīng)用程序窗口;接收一個(gè)顯示來(lái)自應(yīng)用程序的窗口的請(qǐng)求;并整體地將窗口排成一組以在接收到顯示請(qǐng)求時(shí)確定該窗口在該組中的迭加次序。
16.一種用于在顯示單元上顯示多個(gè)窗口時(shí)管理窗口的堆棧的窗口管理裝置,其特征在于,所述裝置包括用于在顯示單元上顯示一個(gè)或多個(gè)窗口的一個(gè)或多個(gè)應(yīng)用程序;用于管理由一個(gè)或多個(gè)應(yīng)用程序顯示的窗口堆棧的窗口管理程序;和用于執(zhí)行所述應(yīng)用程序和所述窗口管理程序的處理單元,其中所述應(yīng)用程序指定一組相對(duì)于窗口管理程序的窗口,且所述窗口管理程序在接收到顯示來(lái)自應(yīng)用程序的窗口的請(qǐng)求并顯示該窗口時(shí)執(zhí)行控制,以將窗口整體地排成一組,從而確定該窗口在該組中的迭加次序。
全文摘要
當(dāng)控制用于管理由計(jì)算機(jī)(7)在顯示單元(11)上顯示多個(gè)窗口中的窗口的堆棧的窗口堆棧時(shí),各應(yīng)用程序(101、102和103)將一窗口分配給組,且窗口管理程序(104)將窗口整體地排列成一組以確定該窗口在組中的迭加次序。從而防止在最前面顯示窗口的應(yīng)用程序所執(zhí)行的窗口顯示不適當(dāng)?shù)厥艿搅硪粦?yīng)用程序的影響。
文檔編號(hào)G09G5/14GK1771475SQ2004800094
公開日2006年5月10日 申請(qǐng)日期2004年3月29日 優(yōu)先權(quán)日2003年4月10日
發(fā)明者灘本雄二 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社