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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
|
||||||
void XCBUtils::minimizeWindow(XWindow xid)
|
void XCBUtils::minimizeWindow(XWindow xid)
|
||||||
{
|
{
|
||||||
xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_hints(m_connect, xid);
|
uint32_t data[2];
|
||||||
xcb_icccm_wm_hints_t *hints = new xcb_icccm_wm_hints_t; // 分配堆空间
|
data[0] = XCB_ICCCM_WM_STATE_ICONIC;
|
||||||
xcb_icccm_get_wm_hints_reply(m_connect, cookie, hints, nullptr);
|
data[1] = XCB_NONE;
|
||||||
xcb_icccm_wm_hints_set_iconic(hints);
|
xcb_ewmh_send_client_message(m_connect, xid, getRootWindow(),getAtom("WM_CHANGE_STATE"), 2, data);
|
||||||
xcb_icccm_set_wm_hints(m_connect, xid, hints);
|
flush();
|
||||||
free(hints);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XCBUtils::maxmizeWindow(XWindow xid)
|
void XCBUtils::maxmizeWindow(XWindow xid)
|
||||||
|
@ -652,6 +652,7 @@ void Entry::active(uint32_t timestamp)
|
|||||||
// 激活隐藏窗口
|
// 激活隐藏窗口
|
||||||
dock->doActiveWindow(xid);
|
dock->doActiveWindow(xid);
|
||||||
} else if (windowInfoMap.size() == 1) {
|
} else if (windowInfoMap.size() == 1) {
|
||||||
|
// 窗口图标化
|
||||||
XCB->minimizeWindow(xid);
|
XCB->minimizeWindow(xid);
|
||||||
} else if (dock->getActiveWindow() && dock->getActiveWindow()->getXid() == xid) {
|
} else if (dock->getActiveWindow() && dock->getActiveWindow()->getXid() == xid) {
|
||||||
WindowInfoBase *nextWin = findNextLeader();
|
WindowInfoBase *nextWin = findNextLeader();
|
||||||
|
Loading…
Reference in New Issue
Block a user