创建子窗口失败并显示BadRegion? [英] Creating subwindow fails with BadRegion?

查看:20
本文介绍了创建子窗口失败并显示BadRegion?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在尝试修复https://stackoverflow.com/a/69647995?noredirect=1时,我有了一个想法;如果我在框架窗口的子窗口中绘制(无法直接在窗口上绘制的)内容会怎么样?看起来像Openbox这样的其他WMS也采用了这种方法。

所以我尝试这样做:

 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_PIXECT是白色的,并且我将其映射到框架)。 我能做错什么呢?这似乎不受深度的影响,顺便说一句。

推荐答案

我已经弄清楚了。Text_Win";需要使用与框架窗口相同的视觉效果;我意外地使用了X11屏幕的根视觉效果。

因此此CREATE_WINDOW调用按预期运行:

    .background_pixel(0xFFFFFF);
        self.conn.create_window(
            COPY_DEPTH_FROM_PARENT,
            text_win,
            frame_win,
            15,
            15,
            60,
            25,
            0,
            xproto::WindowClass::INPUT_OUTPUT,
            attr.visual,
            &text_win_aux,
        )?;

(另外,我发现BadRegion是另一个东西,它是一个xCompmgr错误,与此无关)

这篇关于创建子窗口失败并显示BadRegion?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆