我正在尝试使用系统范围的Modal属性创建GtkDialog,即当打开对话框时,其他窗口不应该获得焦点。有一个选项可以使用GtkDialogFlag进行模态化,但这不是系统范围的模态。
答案 0 :(得分: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线程的,但我认为这应该是真的。