我做了一个小的窗口管理器,基于:
simplewm.py https://github.com/mpnordland/Mozzarella/blob/master/cheesewm.py~
我正在尝试让firefox正常工作,但无法显示未映射的窗口(即firefox菜单/右键单击选项)。
但是,我已经尝试过window.map(),这只会使菜单再次闪烁和消失。它还会导致一个"Xlib.X.UnmapNotify“事件
当我在firefox中右键单击(或单击菜单)时,它会导致两个xlib事件:
Xlib.protocol.event.ClientMessage(type = 161, window = <Xlib.display.Window 0x010005a9>, client_type = 343, data = (32, array('I', [0L, 383L, 0L, 0L, 0L])), sequence_number = 3106)
Xlib.protocol.event.UnmapNotify(window = <Xlib.display.Window 0x010005a9>, type = 146, event = <Xlib.display.Window 0x00000292>, sequence_number = 3108, from_configure = 0)所以看起来Firefox正在取消我想要映射的菜单的映射...:/
发布于 2015-09-05 08:06:02
找到了!
问题出在窗口焦点上。除非在Firefox主窗口上设置了输入焦点,否则Firefox不允许菜单或右键单击对话框保持打开状态。
window.set_input_focus(Xlib.X.RevertToPointerRoot, Xlib.X.CurrentTime)发布于 2015-09-06 04:10:54
我也已经寻找了大约一个星期的解决方案,这对我很有帮助。
更具体地说,当您在框架窗口上获得一个EnterNotify时,必须在主客户机窗口中调用set_input_focus()。(即,在焦点跟随鼠标模式下)。无论您使用RevertToPointerRoot还是RevertToParent,似乎都无关紧要。
https://stackoverflow.com/questions/32390790
复制相似问题