From bc68cd8d05f4375be72a4586115efe99b3796084 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Fri, 29 Nov 2019 19:17:42 +0200 Subject: [PATCH] Tidy code --- geometry.cpp | 82 +++++++++++++++++++++++++--------------------------- x11client.h | 2 +- 2 files changed, 40 insertions(+), 44 deletions(-) diff --git a/geometry.cpp b/geometry.cpp index b6938d6a8..ad84c04b4 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -1965,6 +1965,7 @@ void X11Client::setFrameGeometry(int x, int y, int w, int h, ForceGeometry_t for } else { serverGeometry = m_clientGeometry; } + geom = frameGeometry; if (!areGeometryUpdatesBlocked() && frameGeometry != rules()->checkGeometry(frameGeometry)) { qCDebug(KWIN_CORE) << "forced geometry fail:" << frameGeometry << ":" << rules()->checkGeometry(frameGeometry); } @@ -1972,7 +1973,6 @@ void X11Client::setFrameGeometry(int x, int y, int w, int h, ForceGeometry_t for return; } m_serverGeometry = serverGeometry; - geom = frameGeometry; if (areGeometryUpdatesBlocked()) { if (pendingGeometryUpdate() == PendingGeometryForced) {} // maximum, nothing needed @@ -1982,35 +1982,7 @@ void X11Client::setFrameGeometry(int x, int y, int w, int h, ForceGeometry_t for setPendingGeometryUpdate(PendingGeometryNormal); return; } - const QRect previousServerGeometry = m_frame.geometry(); - bool resized = (previousServerGeometry.size() != m_serverGeometry.size() || pendingGeometryUpdate() == PendingGeometryForced); - if (resized) { - resizeDecoration(); - m_frame.setGeometry(m_serverGeometry); - if (!isShade()) { - QSize cs = clientSize(); - m_wrapper.setGeometry(QRect(clientPos(), cs)); - if (!isResize() || syncRequest.counter == XCB_NONE) - m_client.setGeometry(0, 0, cs.width(), cs.height()); - // SELI - won't this be too expensive? - // THOMAS - yes, but gtk+ clients will not resize without ... - sendSyntheticConfigureNotify(); - } - updateShape(); - } else { - if (isMoveResize()) { - if (compositing()) // Defer the X update until we leave this mode - needsXWindowMove = true; - else - m_frame.move(m_serverGeometry.topLeft()); // sendSyntheticConfigureNotify() on finish shall be sufficient - } else { - m_frame.move(m_serverGeometry.topLeft()); - sendSyntheticConfigureNotify(); - } - - // Unconditionally move the input window: it won't affect rendering - m_decoInputExtent.move(QPoint(x, y) + inputPos()); - } + updateServerGeometry(); updateWindowRules(Rules::Position|Rules::Size); // keep track of old maximize mode @@ -2019,7 +1991,7 @@ void X11Client::setFrameGeometry(int x, int y, int w, int h, ForceGeometry_t for workspace()->updateStackingOrder(); // Need to regenerate decoration pixmaps when the buffer size is changed. - if (previousServerGeometry.size() != m_serverGeometry.size()) { + if (bufferGeometryBeforeUpdateBlocking().size() != bufferGeometry().size()) { discardWindowPixmap(); } emit geometryShapeChanged(this, frameGeometryBeforeUpdateBlocking()); @@ -2055,13 +2027,13 @@ void X11Client::plainResize(int w, int h, ForceGeometry_t force) if (!areGeometryUpdatesBlocked() && frameSize != rules()->checkSize(frameSize)) { qCDebug(KWIN_CORE) << "forced size fail:" << frameSize << ":" << rules()->checkSize(frameSize); } + geom.setSize(frameSize); // resuming geometry updates is handled only in setGeometry() Q_ASSERT(pendingGeometryUpdate() == PendingGeometryNone || areGeometryUpdatesBlocked()); if (force == NormalGeometrySet && m_serverGeometry.size() == serverSize) { return; } m_serverGeometry.setSize(serverSize); - geom.setSize(frameSize); if (areGeometryUpdatesBlocked()) { if (pendingGeometryUpdate() == PendingGeometryForced) {} // maximum, nothing needed @@ -2071,20 +2043,11 @@ void X11Client::plainResize(int w, int h, ForceGeometry_t force) setPendingGeometryUpdate(PendingGeometryNormal); return; } - resizeDecoration(); - m_frame.resize(m_serverGeometry.size()); - if (!isShade()) { - QSize cs = clientSize(); - m_wrapper.setGeometry(QRect(clientPos(), cs)); - m_client.setGeometry(0, 0, cs.width(), cs.height()); - } - updateShape(); - - sendSyntheticConfigureNotify(); + updateServerGeometry(); updateWindowRules(Rules::Position|Rules::Size); screens()->setCurrent(this); workspace()->updateStackingOrder(); - if (m_serverGeometry.size() != serverSize) { + if (bufferGeometryBeforeUpdateBlocking().size() != bufferGeometry().size()) { discardWindowPixmap(); } emit geometryShapeChanged(this, frameGeometryBeforeUpdateBlocking()); @@ -2094,6 +2057,39 @@ void X11Client::plainResize(int w, int h, ForceGeometry_t force) emit geometryChanged(); } +void X11Client::updateServerGeometry() +{ + const QRect previousServerGeometry = m_frame.geometry(); + const bool resized = (previousServerGeometry.size() != m_serverGeometry.size() || pendingGeometryUpdate() == PendingGeometryForced); + if (resized) { + resizeDecoration(); + m_frame.setGeometry(m_serverGeometry); + if (!isShade()) { + QSize cs = clientSize(); + m_wrapper.setGeometry(QRect(clientPos(), cs)); + if (!isResize() || syncRequest.counter == XCB_NONE) + m_client.setGeometry(0, 0, cs.width(), cs.height()); + // SELI - won't this be too expensive? + // THOMAS - yes, but gtk+ clients will not resize without ... + sendSyntheticConfigureNotify(); + } + updateShape(); + } else { + if (isMoveResize()) { + if (compositing()) // Defer the X update until we leave this mode + needsXWindowMove = true; + else + m_frame.move(m_serverGeometry.topLeft()); // sendSyntheticConfigureNotify() on finish shall be sufficient + } else { + m_frame.move(m_serverGeometry.topLeft()); + sendSyntheticConfigureNotify(); + } + + // Unconditionally move the input window: it won't affect rendering + m_decoInputExtent.move(pos() + inputPos()); + } +} + /** * Reimplemented to inform the client about the new window position. */ diff --git a/x11client.h b/x11client.h index 0f802dd34..2caa08b39 100644 --- a/x11client.h +++ b/x11client.h @@ -472,7 +472,7 @@ private: void map(); void unmap(); void updateHiddenPreview(); - + void updateServerGeometry(); void updateInputShape(); xcb_timestamp_t readUserTimeMapTimestamp(const KStartupInfoId* asn_id, const KStartupInfoData* asn_data, -- 2.24.0