如何将X11本机(或SDL)窗口指定为GTK对话框的父窗口?

如何将X11本机(或SDL)窗口指定为GTK对话框的父窗口?,gtk,sdl,x11,gtk3,sdl-2,Gtk,Sdl,X11,Gtk3,Sdl 2,我有一个项目仅在某些任务中使用GTK+3,例如提供带有GTK\u file\u chooser\u dialog\u new的文件打开对话框。我必须将parent设置为NULL,因为我没有“主”GTK窗口。然而,我的程序的stdout中充斥着这样的消息(特别是因为我将stdin与libreadline一起使用,以获得命令行界面),这非常令人恼火: 我怎样才能避免这种情况?或者更好(可能也是更正确的方法),而不仅仅是避免:我可以在不做太多工作的情况下,以某种方式为GTK小部件指定一个X11窗口作为

我有一个项目仅在某些任务中使用GTK+3,例如提供带有
GTK\u file\u chooser\u dialog\u new
的文件打开对话框。我必须将
parent
设置为
NULL
,因为我没有“主”GTK窗口。然而,我的程序的stdout中充斥着这样的消息(特别是因为我将stdin与libreadline一起使用,以获得命令行界面),这非常令人恼火:

我怎样才能避免这种情况?或者更好(可能也是更正确的方法),而不仅仅是避免:我可以在不做太多工作的情况下,以某种方式为GTK小部件指定一个X11窗口作为父窗口吗?实际上,这是一个SDL项目,但我不想为了这个而将SDL“嵌入”到GTK窗口中。但是,我可以使用
SDL\u GetWindowWMInfo()
说出我的SDL窗口的X11窗口id。在我看来,这比仅仅“避免”来自GTK的消息要好(但我甚至不知道怎么做),因为-例如-窗口管理器知道对话框和主(SDL/X11)窗口的关系,等等

这只是一个旁注(实际上应该是另一个问题),似乎在GTK文件选择过程中完成的各种GUI事件(鼠标点击、按键等)可能会被SDL“感知”(在对话框关闭后等),这当然是不需要的。我想我应该尝试从不需要的事件中清空SDL事件队列

Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.