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