fix: 修复任务点击应用打开后,再次点击没有将应用窗口最小化的问题
调用xcb_ewmh_send_client_message接口,设置窗口WM_CHANGE_STATE属性,设置最小化 Log: 修复任务点击应用打开后,再次点击没有将应用窗口最小化的问题 Task: https://pms.uniontech.com/task-view-150819.html Influence: 任务栏应用能正常最小化 Change-Id: Ic856a60f6fac754431687345b4c838e32780b184
This commit is contained in:
parent
2d36508f1e
commit
e9e79e3ac9
@ -501,15 +501,13 @@ WMClass XCBUtils::getWMClass(XWindow xid)
|
||||
return ret;
|
||||
}
|
||||
|
||||
// TODO
|
||||
void XCBUtils::minimizeWindow(XWindow xid)
|
||||
{
|
||||
xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_hints(m_connect, xid);
|
||||
xcb_icccm_wm_hints_t *hints = new xcb_icccm_wm_hints_t; // 分配堆空间
|
||||
xcb_icccm_get_wm_hints_reply(m_connect, cookie, hints, nullptr);
|
||||
xcb_icccm_wm_hints_set_iconic(hints);
|
||||
xcb_icccm_set_wm_hints(m_connect, xid, hints);
|
||||
free(hints);
|
||||
uint32_t data[2];
|
||||
data[0] = XCB_ICCCM_WM_STATE_ICONIC;
|
||||
data[1] = XCB_NONE;
|
||||
xcb_ewmh_send_client_message(m_connect, xid, getRootWindow(),getAtom("WM_CHANGE_STATE"), 2, data);
|
||||
flush();
|
||||
}
|
||||
|
||||
void XCBUtils::maxmizeWindow(XWindow xid)
|
||||
|
@ -652,6 +652,7 @@ void Entry::active(uint32_t timestamp)
|
||||
// 激活隐藏窗口
|
||||
dock->doActiveWindow(xid);
|
||||
} else if (windowInfoMap.size() == 1) {
|
||||
// 窗口图标化
|
||||
XCB->minimizeWindow(xid);
|
||||
} else if (dock->getActiveWindow() && dock->getActiveWindow()->getXid() == xid) {
|
||||
WindowInfoBase *nextWin = findNextLeader();
|
||||
|
Loading…
Reference in New Issue
Block a user