GTK中的系统模态对话框

时间:2010-09-02 19:08:10

标签: c++ linux modal-dialog gtk

我正在尝试使用系统范围的Modal属性创建GtkDialog,即当打开对话框时,其他窗口不应该获得焦点。有一个选项可以使用GtkDialogFlag进行模态化,但这不是系统范围的模态。

1 个答案:

答案 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线程的,但我认为这应该是真的。