【发布时间】:2021-12-10 01:18:26
【问题描述】:
在尝试修复https://stackoverflow.com/a/69647995?noredirect=1 时,我有一个想法;如果我在框架窗口的子窗口中绘制了东西(未能直接在窗口上绘制)怎么办?看起来像 Openbox 这样的其他 WM 也采用了这种方法。
所以我尝试这样做:
let text_win = self.conn.generate_id()?;
let text_win_aux = xproto::CreateWindowAux::new()
.event_mask(
xproto::EventMask::EXPOSURE
| xproto::EventMask::SUBSTRUCTURE_REDIRECT
| xproto::EventMask::SUBSTRUCTURE_NOTIFY
| xproto::EventMask::BUTTON_PRESS
| xproto::EventMask::BUTTON_RELEASE
| xproto::EventMask::POINTER_MOTION
| xproto::EventMask::ENTER_WINDOW
| xproto::EventMask::PROPERTY_CHANGE,
)
.background_pixel(0xFFFFFF);
self.conn.create_window(
COPY_DEPTH_FROM_PARENT,
text_win,
frame_win,
15,
15,
60,
25,
0,
xproto::WindowClass::INPUT_OUTPUT,
screen.root_visual,
&text_win_aux,
)?;
self.conn.map_window(text_win)?
但它不起作用(没有呈现白色矩形),而且看起来我也收到了 BadRegion 错误。 我期望的是在框架窗口上呈现一个白色矩形(因为孩子的 background_pixel 是白色的,我将它映射到框架)。 我可能做错了什么?顺便说一句,这似乎不受深度的影响。
【问题讨论】:
-
在问题本身中包含完整的问题(不要在链接中留下部分描述)
-
如果这就是你的意思,也将“不起作用”改为“什么都不做”。
-
这是什么语言?看起来有点像 C# 什么的
-
语言是 Rust。为什么我要把“不起作用”改为“什么都不做”?代码没有按预期工作,所以我认为术语非常好。完整的问题在这里,链接只是说明我为什么尝试这个;但实际问题的问题都在这里。
-
因为“不起作用”非常不具体,并且不能帮助回答者诊断问题。 “一个窗口弹出并立即消失”,“它显示错误消息ABC”,“它使计算机崩溃”是特定的。