2010-09-02 115 views
0

我正在嘗試使用全系統模態屬性創建GtkDialog,即當對話框打開時,沒有其他窗口應該獲得焦點。有一個選項可以使用GtkDialogFlag使它成爲模態,但這不是系統範圍的模態。GTK中的系統模式對話框

+0

壞主意。如果您的應用程序凍結而無法使用系統監視器或終端來終止它,該怎麼辦?在他回答你的模態對話框之前,你的用戶*不能做任何其他事情是非常重要的嗎? – BoltClock 2010-09-02 19:20:43

+0

實際上,我正在實現關閉和重新啓動的對話框。所以我需要該用戶不應該關注其他任何東西,除非回答對話。 – Durgesh 2010-09-03 07:29:18

回答

1

這是一個完全的可怕的的想法,但你可以覆蓋你的窗口的「焦點出事件」處理程序,並呼籲gtk_window_present

喜歡的東西gksu作用:

 
static gboolean 
focus_out_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) 
{ 
    gtk_window_present (GTK_WINDOW(widget)); 
    return TRUE; 
} 

//in your initialization code for your window... 
/* make sure that our window will always have the focus */ 
g_signal_connect (G_OBJECT(mywindow), "focus-out-event", 
      G_CALLBACK(focus_out_cb), NULL); 

此希望有,如果你的應用程序確實凍結,聚焦出事件的信號可能不會被處理的好處。我不確定GTK如何進行UI線程化,但我認爲這應該是事實。