2010-09-02 77 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线程化,但我认为这应该是事实。