首页 > 解决方案 > 当窗口在 xlib / xcb 中移动时如何获取窗口的位置

问题描述

在 Ubuntu 18.04 KDE 桌面上,当窗口移动时,我无法准确获得窗口的位置。

使用 xcb_get_geomerty() 函数,我可以获得窗口的位置。

但是当窗口移动时,窗口的位置还是和以前一样,没有变化。当释放鼠标并完成窗口移动时,我可以准确地获得窗口的位置。

    auto geom = xcb_get_geometry(xcb_connection(), window);
    auto offset = xcb_translate_coordinate(xcb_connection(), window, rootwin, geom->x, geom->y);

    offset->dst_x // top-level window's x offset on the screen
    offset->dst_y // top-level window's y offset on the screen
    geom->width   // top-level window's width
    geom->height  // top-level window's height

当窗口在其他桌面环境(即 gnome、xfce)但 KDE 中移动时,正确获取窗口的位置。移动时是否有任何其他方式或 xwindow 属性可以获取窗口的位置?

标签: c++ubuntuxcb

解决方案


推荐阅读