2011-10-12 84 views
1

我将外部窗口重新导入Qt应用程序(XReparentWindow, XMapRaised, XMoveResizeWindow)。它的工作原理,但当我点击重新窗口的系统锁定(没有鼠标或键盘事件),期望可能是重新输入窗口内的一些输入或可能是我的应用程序。如何防止重新打包的窗口阻塞X会话?

试图嵌入,例如,gedit和点击进入它导致键盘事件只在gedit(甚至全球真棒热键禁用)和任何地方没有鼠标点击(除非我关闭嵌入式gedit使用Ctrl + Q)。

如果使用QX11EmbedContainer,则相同。即使做到setEnabled(false)吧。

为什么它锁定?如何防止这种锁定或如何禁用某些X窗口的输入处理?

回答

0

将窗口重新组装到一个自己的应用程序中,由XEmbed规范覆盖。如果你看的规格,你会看到,一些额外的工作要做,以使这项工作:

http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html

+0

可能有简单的方法,只是禁用点击进入该窗口? –

+0

@Vi .:那不会解决你的问题。问题是,容器和嵌入式窗口正在争夺输入焦点。请注意,Qt会为您提供所有肮脏的细节,只需使用正确的类:http://doc.qt.nokia.com/stable/qx11embedcontainer.html – datenwolf

+0

使用QX11EmbedContainer尝试 - 相同。尝试嵌入,例如,gedit并点击它将导致仅在gedit中发生键盘事件(甚至禁用全球Awesome的热键),并且不会在任何地方点击鼠标(除非使用Ctrl + Q关闭嵌入的gedit)。 –