Changeset View
Changeset View
Standalone View
Standalone View
shell_client.cpp
Show First 20 Lines • Show All 1078 Lines • ▼ Show 20 Line(s) | |||||
1079 | } | 1079 | } | ||
1080 | 1080 | | |||
1081 | bool ShellClient::requestGeometry(const QRect &rect) | 1081 | bool ShellClient::requestGeometry(const QRect &rect) | ||
1082 | { | 1082 | { | ||
1083 | if (m_requestGeometryBlockCounter != 0) { | 1083 | if (m_requestGeometryBlockCounter != 0) { | ||
1084 | m_blockedRequestGeometry = rect; | 1084 | m_blockedRequestGeometry = rect; | ||
1085 | return false; | 1085 | return false; | ||
1086 | } | 1086 | } | ||
1087 | PendingConfigureRequest configureRequest; | | |||
1088 | configureRequest.positionAfterResize = rect.topLeft(); | | |||
1089 | configureRequest.maximizeMode = m_requestedMaximizeMode; | | |||
1090 | 1087 | | |||
1091 | const QSize size = rect.size() - QSize(borderLeft() + borderRight(), borderTop() + borderBottom()); | 1088 | QSize size; | ||
1089 | if (rect.isValid()) { | ||||
1090 | size = rect.size() - QSize(borderLeft() + borderRight(), borderTop() + borderBottom()); | ||||
1091 | } else { | ||||
1092 | size = QSize(0, 0); | ||||
1093 | } | ||||
1092 | m_requestedClientSize = size; | 1094 | m_requestedClientSize = size; | ||
1093 | 1095 | | |||
1094 | if (m_shellSurface) { | 1096 | quint64 serialId = 0; | ||
1097 | | ||||
1098 | if (m_shellSurface && !size.isEmpty()) { | ||||
1095 | m_shellSurface->requestSize(size); | 1099 | m_shellSurface->requestSize(size); | ||
1096 | } | 1100 | } | ||
1097 | if (m_xdgShellSurface) { | 1101 | if (m_xdgShellSurface) { | ||
1098 | configureRequest.serialId = m_xdgShellSurface->configure(xdgSurfaceStates(), size); | 1102 | serialId = m_xdgShellSurface->configure(xdgSurfaceStates(), size); | ||
1099 | } | 1103 | } | ||
1100 | if (m_xdgShellPopup) { | 1104 | if (m_xdgShellPopup) { | ||
1101 | auto parent = transientFor(); | 1105 | auto parent = transientFor(); | ||
1102 | if (parent) { | 1106 | if (parent) { | ||
1103 | const QPoint globalClientContentPos = parent->geometry().topLeft() + parent->clientPos(); | 1107 | const QPoint globalClientContentPos = parent->geometry().topLeft() + parent->clientPos(); | ||
1104 | const QPoint relativeOffset = rect.topLeft() -globalClientContentPos; | 1108 | const QPoint relativeOffset = rect.topLeft() - globalClientContentPos; | ||
1105 | configureRequest.serialId = m_xdgShellPopup->configure(QRect(relativeOffset, rect.size())); | 1109 | serialId = m_xdgShellPopup->configure(QRect(relativeOffset, rect.size())); | ||
1106 | } | 1110 | } | ||
1107 | } | 1111 | } | ||
1108 | 1112 | | |||
1113 | if (rect.isValid()) { //if there's no requested size, then there's implicity no positional information worth using | ||||
1114 | PendingConfigureRequest configureRequest; | ||||
1115 | configureRequest.serialId = serialId; | ||||
1116 | configureRequest.positionAfterResize = rect.topLeft(); | ||||
1117 | configureRequest.maximizeMode = m_requestedMaximizeMode; | ||||
1109 | m_pendingConfigureRequests.append(configureRequest); | 1118 | m_pendingConfigureRequests.append(configureRequest); | ||
1119 | } | ||||
1110 | 1120 | | |||
1111 | m_blockedRequestGeometry = QRect(); | 1121 | m_blockedRequestGeometry = QRect(); | ||
1112 | return true; | 1122 | return true; | ||
1113 | } | 1123 | } | ||
1114 | 1124 | | |||
1115 | void ShellClient::updatePendingGeometry() | 1125 | void ShellClient::updatePendingGeometry() | ||
1116 | { | 1126 | { | ||
1117 | QPoint position = geom.topLeft(); | 1127 | QPoint position = geom.topLeft(); | ||
▲ Show 20 Lines • Show All 733 Lines • Show Last 20 Lines |