[英]Gtk: send focus to a toplevel window without losing the first toplevel window
情況如下:
1)我有兩個頂級窗口,A和B
2)A在B前面
如何在將窗口A保持在B前面的同時,將焦點發送到窗口B?
如果您不介意它不是直接的,則可以將鍵盤事件從頂層窗口發送到它后面的窗口。 當然,假定這兩個窗口都是您創建的,而不是編寫程序在后台懸停並讀取在單獨程序上使用的鍵盤輸入。
我假設您同時控制兩個窗口,並且這是在X11系統(如Linux)上。 如果沒有,那就更具挑戰性。 我已經在單個應用程序中完成了類似的操作,下面是一些回憶。
您可能已經發現不能只使用gtk_widget_grab_focus()來做到這一點。 這僅適用於在窗口本身具有焦點時確定窗口中的哪個窗口小部件具有焦點。
是X11,它根據窗口層次結構,來自窗口管理器的信息等來確定哪個窗口獲取鍵盤事件。但是,您可以通過GDK隨意查找以獲得所需的結果。
您將必須了解GDK事件傳播 ,並可能閱讀了一些GDK源。 但我相信,通常來說,您需要做的是:
如果Windows屬於不同的應用程序,則可以查看gdk_event_send_client_message(),但我從未使用過它。
gtk_window_set_keep_above
(a)
之后是gtk_window_present
(b)
嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.