fix: 修复打开应用后,点击应用右键菜单“关闭所有”,应用图标背景颜色没有调整的问题

修复点击应用右键菜单“关闭所有”后,没有接受到DestroyNotify事件,主动调用xcb_flush刷新缓存数据

Log: 修复点击应用右键菜单“关闭所有”后应用图标背景颜色没有调整的问题
Task: https://pms.uniontech.com/task-view-150883.html
Influence: 应用“关闭所有”后图标显示正常
Change-Id: I8ed731adbd491e531251820826bf75cf891155b6
This commit is contained in:
weizhixiang 2022-06-17 17:15:04 +08:00
parent e0ad69d3d7
commit 2d36508f1e
3 changed files with 13 additions and 3 deletions

View File

@ -51,6 +51,11 @@ XWindow XCBUtils::allocId()
return xcb_generate_id(m_connect);
}
void XCBUtils::flush()
{
xcb_flush(m_connect);
}
void XCBUtils::killClientChecked(XWindow xid)
{
xcb_kill_client_checked(m_connect, xid);
@ -172,8 +177,7 @@ void XCBUtils::setActiveWindow(XWindow xid)
void XCBUtils::changeActiveWindow(XWindow newActiveXid)
{
xcb_ewmh_request_change_active_window(&m_ewmh, m_screenNum, newActiveXid, XCB_EWMH_CLIENT_SOURCE_TYPE_OTHER, XCB_CURRENT_TIME, XCB_WINDOW_NONE);
// 此处getActiveWindow作用是触发缓冲机制执行设置活动窗口动作
getActiveWindow();
flush();
}
void XCBUtils::restackWindow(XWindow xid)
@ -596,7 +600,7 @@ void XCBUtils::registerEvents(XWindow xid, uint32_t eventMask)
xid,
XCB_CW_EVENT_MASK,
&value);
xcb_flush(m_connect);
flush();
xcb_generic_error_t *error = xcb_request_check(m_connect, cookie);
if (error != nullptr) {

View File

@ -100,6 +100,9 @@ public:
// 分配XID
XWindow allocId();
// 刷新
void flush();
/************************* xpropto method ***************************/
// 杀掉进程
void killClientChecked(XWindow xid);

View File

@ -778,6 +778,9 @@ AppMenuItem Entry::getMenuItemCloseAll()
qInfo() << "close WindowId " << info->getXid();
info->close(timestamp);
}
// 关闭窗口后,主动刷新事件
XCB->flush();
};
AppMenuItem item;