xcb: unset old states and set new ones for window
This partly reverts a02959bb5b43a3f9d881e5213ceedf535202b6a1. Fixes: QTBUG-87078 Change-Id: I69e18ad3c0a8d142b2e1f5ab87990addc97d9df1 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit f61b140482d9578c07410a5979379e44e05352e5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
b427721f58
commit
e41cb4db84
@ -1172,9 +1172,19 @@ void QXcbWindow::setWindowState(Qt::WindowStates state)
|
|||||||
if (state == m_windowState)
|
if (state == m_windowState)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((m_windowState & Qt::WindowMinimized) && !(state & Qt::WindowMinimized)) {
|
// unset old state
|
||||||
|
if (m_windowState & Qt::WindowMinimized)
|
||||||
xcb_map_window(xcb_connection(), m_window);
|
xcb_map_window(xcb_connection(), m_window);
|
||||||
} else if (!(m_windowState & Qt::WindowMinimized) && (state & Qt::WindowMinimized)) {
|
if (m_windowState & Qt::WindowMaximized)
|
||||||
|
setNetWmState(false,
|
||||||
|
atom(QXcbAtom::_NET_WM_STATE_MAXIMIZED_HORZ),
|
||||||
|
atom(QXcbAtom::_NET_WM_STATE_MAXIMIZED_VERT));
|
||||||
|
if (m_windowState & Qt::WindowFullScreen)
|
||||||
|
setNetWmState(false, atom(QXcbAtom::_NET_WM_STATE_FULLSCREEN));
|
||||||
|
|
||||||
|
// set new state
|
||||||
|
if (state & Qt::WindowMinimized) {
|
||||||
|
{
|
||||||
xcb_client_message_event_t event;
|
xcb_client_message_event_t event;
|
||||||
|
|
||||||
event.response_type = XCB_CLIENT_MESSAGE;
|
event.response_type = XCB_CLIENT_MESSAGE;
|
||||||
@ -1191,8 +1201,15 @@ void QXcbWindow::setWindowState(Qt::WindowStates state)
|
|||||||
xcb_send_event(xcb_connection(), 0, xcbScreen()->root(),
|
xcb_send_event(xcb_connection(), 0, xcbScreen()->root(),
|
||||||
XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT,
|
XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT,
|
||||||
(const char *)&event);
|
(const char *)&event);
|
||||||
|
}
|
||||||
m_minimized = true;
|
m_minimized = true;
|
||||||
}
|
}
|
||||||
|
if (state & Qt::WindowMaximized)
|
||||||
|
setNetWmState(true,
|
||||||
|
atom(QXcbAtom::_NET_WM_STATE_MAXIMIZED_HORZ),
|
||||||
|
atom(QXcbAtom::_NET_WM_STATE_MAXIMIZED_VERT));
|
||||||
|
if (state & Qt::WindowFullScreen)
|
||||||
|
setNetWmState(true, atom(QXcbAtom::_NET_WM_STATE_FULLSCREEN));
|
||||||
|
|
||||||
setNetWmState(state);
|
setNetWmState(state);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user