Paste P496

(An Untitled Masterwork)
ActivePublic

Authored by zzag on Nov 29 2019, 5:18 PM.
From bc68cd8d05f4375be72a4586115efe99b3796084 Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vladzzag@gmail.com>
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
zzag created this paste.Nov 29 2019, 5:18 PM
zzag created this object in space S1 KDE Community.