我想执行以下操作:创建一个全屏、始终位于顶部的 pygtk 窗口,其中包含显示一些 html 的 webkit 小部件,但带有一个完全透明的框,以便下面的窗口可见。 (这似乎是可能的:是否可以使用 WebKit 在清晰的背景上渲染网页内容?)
我想要的是将透明框中发生的所有鼠标事件(有时)传递到应用程序窗口下方的窗口,以便我可以正常与它们交互。因此不仅在视觉上透明,而且对鼠标事件也是透明的。
理论上,我想我可以使用 pygtk Eventbox 捕获我感兴趣的所有事件,使用 wnck 找到我的正下方的窗口,并使用 python-xlib 将此事件传递给它。
这看起来并不是最优雅的解决方案;有没有更好的办法?
转发事件的效果并不像您想象的那么好;它会产生很多竞争条件,并且某些应用程序会忽略来自的内容XSendEvent
anyway.
您可以做的是设置输入形状蒙版。看http://www.x.org/releases/current/doc/xextproto/shape.html然后看看XFixesSetWindowShapeRegion()
in /usr/include/X11/extensions/Xfixes.h
它可以让你指定一个形状“种类”(在这里你想要ShapeInput
).
就像是:
XRectangle rect;
XserverRegion region = XFixesCreateRegion(display, &rect, 1);
XFixesSetWindowShapeRegion(display, window, ShapeInput, 0, 0, region);
XFixesDestroyRegion(display, region);
设置能力ShapeInput
“仅”有 5-6 年历史,所以如果你关心 X11 的非常蹩脚的旧版本,你可能会被淘汰。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)