Changeset View
Changeset View
Standalone View
Standalone View
xdgshellclient.cpp
Show First 20 Lines • Show All 1130 Lines • ▼ Show 20 Line(s) | 1127 | if (it->serialId == m_lastAckedConfigureRequest) { | |||
---|---|---|---|---|---|
1131 | position = it->positionAfterResize; | 1131 | position = it->positionAfterResize; | ||
1132 | maximizeMode = it->maximizeMode; | 1132 | maximizeMode = it->maximizeMode; | ||
1133 | 1133 | | |||
1134 | m_pendingConfigureRequests.erase(m_pendingConfigureRequests.begin(), ++it); | 1134 | m_pendingConfigureRequests.erase(m_pendingConfigureRequests.begin(), ++it); | ||
1135 | break; | 1135 | break; | ||
1136 | } | 1136 | } | ||
1137 | //else serialId < m_lastAckedConfigureRequest and the state is now irrelevant and can be ignored | 1137 | //else serialId < m_lastAckedConfigureRequest and the state is now irrelevant and can be ignored | ||
1138 | } | 1138 | } | ||
1139 | doSetGeometry(QRect(position, m_windowGeometry.size() + QSize(borderLeft() + borderRight(), borderTop() + borderBottom()))); | 1139 | QRect geometry = QRect(position, adjustedSize()); | ||
1140 | if (isMove()) { | ||||
1141 | geometry = adjustMoveGeometry(geometry); | ||||
1142 | } | ||||
1143 | if (isResize()) { | ||||
1144 | geometry = adjustResizeGeometry(geometry); | ||||
1145 | } | ||||
1146 | doSetGeometry(geometry); | ||||
1140 | updateMaximizeMode(maximizeMode); | 1147 | updateMaximizeMode(maximizeMode); | ||
1141 | } | 1148 | } | ||
1142 | 1149 | | |||
1143 | void XdgShellClient::handleConfigureAcknowledged(quint32 serial) | 1150 | void XdgShellClient::handleConfigureAcknowledged(quint32 serial) | ||
1144 | { | 1151 | { | ||
1145 | m_lastAckedConfigureRequest = serial; | 1152 | m_lastAckedConfigureRequest = serial; | ||
1146 | } | 1153 | } | ||
1147 | 1154 | | |||
▲ Show 20 Lines • Show All 832 Lines • ▼ Show 20 Line(s) | |||||
1980 | bool XdgShellClient::supportsWindowRules() const | 1987 | bool XdgShellClient::supportsWindowRules() const | ||
1981 | { | 1988 | { | ||
1982 | if (m_plasmaShellSurface) { | 1989 | if (m_plasmaShellSurface) { | ||
1983 | return false; | 1990 | return false; | ||
1984 | } | 1991 | } | ||
1985 | return m_xdgShellSurface; | 1992 | return m_xdgShellSurface; | ||
1986 | } | 1993 | } | ||
1987 | 1994 | | |||
1995 | QRect XdgShellClient::adjustMoveGeometry(const QRect &rect) const | ||||
1996 | { | ||||
1997 | QRect geometry = rect; | ||||
1998 | geometry.moveTopLeft(moveResizeGeometry().topLeft()); | ||||
1999 | return geometry; | ||||
2000 | } | ||||
2001 | | ||||
2002 | QRect XdgShellClient::adjustResizeGeometry(const QRect &rect) const | ||||
2003 | { | ||||
2004 | QRect geometry = rect; | ||||
2005 | | ||||
2006 | // We need to adjust frame geometry because configure events carry the maximum window geometry | ||||
2007 | // size. A client that has aspect ratio can attach a buffer with smaller size than the one in | ||||
2008 | // a configure event. | ||||
2009 | switch (moveResizePointerMode()) { | ||||
2010 | case PositionTopLeft: | ||||
2011 | geometry.moveRight(moveResizeGeometry().right()); | ||||
2012 | geometry.moveBottom(moveResizeGeometry().bottom()); | ||||
2013 | break; | ||||
2014 | case PositionTop: | ||||
2015 | case PositionTopRight: | ||||
2016 | geometry.moveLeft(moveResizeGeometry().left()); | ||||
2017 | geometry.moveBottom(moveResizeGeometry().bottom()); | ||||
2018 | break; | ||||
2019 | case PositionRight: | ||||
2020 | case PositionBottomRight: | ||||
2021 | case PositionBottom: | ||||
2022 | geometry.moveLeft(moveResizeGeometry().left()); | ||||
2023 | geometry.moveTop(moveResizeGeometry().top()); | ||||
2024 | break; | ||||
2025 | case PositionBottomLeft: | ||||
2026 | case PositionLeft: | ||||
2027 | geometry.moveRight(moveResizeGeometry().right()); | ||||
2028 | geometry.moveTop(moveResizeGeometry().top()); | ||||
2029 | break; | ||||
2030 | case PositionCenter: | ||||
2031 | Q_UNREACHABLE(); | ||||
2032 | } | ||||
2033 | | ||||
2034 | return geometry; | ||||
2035 | } | ||||
2036 | | ||||
1988 | } | 2037 | } |