Changeset View
Changeset View
Standalone View
Standalone View
x11client.cpp
Show First 20 Lines • Show All 2747 Lines • ▼ Show 20 Line(s) | 2747 | m_edgeRemoveConnection = connect(this, &AbstractClient::keepBelowChanged, this, [this](){ | |||
---|---|---|---|---|---|
2748 | if (!keepBelow()) { | 2748 | if (!keepBelow()) { | ||
2749 | ScreenEdges::self()->reserve(this, ElectricNone); | 2749 | ScreenEdges::self()->reserve(this, ElectricNone); | ||
2750 | } | 2750 | } | ||
2751 | }); | 2751 | }); | ||
2752 | } else { | 2752 | } else { | ||
2753 | hideClient(true); | 2753 | hideClient(true); | ||
2754 | successfullyHidden = isHiddenInternal(); | 2754 | successfullyHidden = isHiddenInternal(); | ||
2755 | 2755 | | |||
2756 | m_edgeGeometryTrackingConnection = connect(this, &X11Client::geometryChanged, this, [this, border](){ | 2756 | m_edgeGeometryTrackingConnection = connect(this, &X11Client::frameGeometryChanged, this, [this, border](){ | ||
2757 | hideClient(true); | 2757 | hideClient(true); | ||
2758 | ScreenEdges::self()->reserve(this, border); | 2758 | ScreenEdges::self()->reserve(this, border); | ||
2759 | }); | 2759 | }); | ||
2760 | } | 2760 | } | ||
2761 | 2761 | | |||
2762 | if (successfullyHidden) { | 2762 | if (successfullyHidden) { | ||
2763 | ScreenEdges::self()->reserve(this, border); | 2763 | ScreenEdges::self()->reserve(this, border); | ||
2764 | } else { | 2764 | } else { | ||
▲ Show 20 Lines • Show All 126 Lines • ▼ Show 20 Line(s) | 2884 | if (areGeometryUpdatesBlocked()) { | |||
2891 | } | 2891 | } | ||
2892 | return; | 2892 | return; | ||
2893 | } | 2893 | } | ||
2894 | updateServerGeometry(); | 2894 | updateServerGeometry(); | ||
2895 | updateWindowRules(Rules::Position); | 2895 | updateWindowRules(Rules::Position); | ||
2896 | screens()->setCurrent(this); | 2896 | screens()->setCurrent(this); | ||
2897 | workspace()->updateStackingOrder(); | 2897 | workspace()->updateStackingOrder(); | ||
2898 | // client itself is not damaged | 2898 | // client itself is not damaged | ||
2899 | const QRect oldFrameGeometry = frameGeometryBeforeUpdateBlocking(); | ||||
2899 | addRepaintDuringGeometryUpdates(); | 2900 | addRepaintDuringGeometryUpdates(); | ||
2900 | updateGeometryBeforeUpdateBlocking(); | 2901 | updateGeometryBeforeUpdateBlocking(); | ||
2901 | emit geometryChanged(); | 2902 | emit frameGeometryChanged(this, oldFrameGeometry); | ||
2902 | } | 2903 | } | ||
2903 | 2904 | | |||
2904 | bool X11Client::belongToSameApplication(const X11Client *c1, const X11Client *c2, SameApplicationChecks checks) | 2905 | bool X11Client::belongToSameApplication(const X11Client *c1, const X11Client *c2, SameApplicationChecks checks) | ||
2905 | { | 2906 | { | ||
2906 | bool same_app = false; | 2907 | bool same_app = false; | ||
2907 | 2908 | | |||
2908 | // tests that definitely mean they belong together | 2909 | // tests that definitely mean they belong together | ||
2909 | if (c1 == c2) | 2910 | if (c1 == c2) | ||
▲ Show 20 Lines • Show All 1282 Lines • ▼ Show 20 Line(s) | 4143 | { | |||
4192 | updateServerGeometry(); | 4193 | updateServerGeometry(); | ||
4193 | updateWindowRules(Rules::Position|Rules::Size); | 4194 | updateWindowRules(Rules::Position|Rules::Size); | ||
4194 | 4195 | | |||
4195 | // keep track of old maximize mode | 4196 | // keep track of old maximize mode | ||
4196 | // to detect changes | 4197 | // to detect changes | ||
4197 | screens()->setCurrent(this); | 4198 | screens()->setCurrent(this); | ||
4198 | workspace()->updateStackingOrder(); | 4199 | workspace()->updateStackingOrder(); | ||
4199 | 4200 | | |||
4201 | const QRect oldFrameGeometry = frameGeometryBeforeUpdateBlocking(); | ||||
4202 | | ||||
4200 | // Need to regenerate decoration pixmaps when the buffer size is changed. | 4203 | // Need to regenerate decoration pixmaps when the buffer size is changed. | ||
4201 | if (bufferGeometryBeforeUpdateBlocking().size() != m_bufferGeometry.size()) { | 4204 | if (bufferGeometryBeforeUpdateBlocking().size() != m_bufferGeometry.size()) { | ||
4202 | discardWindowPixmap(); | 4205 | discardWindowPixmap(); | ||
4203 | } | 4206 | } | ||
4204 | emit geometryShapeChanged(this, frameGeometryBeforeUpdateBlocking()); | 4207 | emit geometryShapeChanged(this, oldFrameGeometry); | ||
4205 | addRepaintDuringGeometryUpdates(); | 4208 | addRepaintDuringGeometryUpdates(); | ||
4206 | updateGeometryBeforeUpdateBlocking(); | 4209 | updateGeometryBeforeUpdateBlocking(); | ||
4207 | // TODO: this signal is emitted too often | 4210 | // TODO: this signal is emitted too often | ||
4208 | emit geometryChanged(); | 4211 | emit frameGeometryChanged(this, oldFrameGeometry); | ||
4209 | } | 4212 | } | ||
4210 | 4213 | | |||
4211 | void X11Client::plainResize(int w, int h, ForceGeometry_t force) | 4214 | void X11Client::plainResize(int w, int h, ForceGeometry_t force) | ||
4212 | { | 4215 | { | ||
4213 | QSize frameSize(w, h); | 4216 | QSize frameSize(w, h); | ||
4214 | QSize bufferSize; | 4217 | QSize bufferSize; | ||
4215 | 4218 | | |||
4216 | // this code is also duplicated in X11Client::setGeometry(), and it's also commented there | 4219 | // this code is also duplicated in X11Client::setGeometry(), and it's also commented there | ||
Show All 32 Lines | 4247 | if (areGeometryUpdatesBlocked()) { | |||
4249 | else | 4252 | else | ||
4250 | setPendingGeometryUpdate(PendingGeometryNormal); | 4253 | setPendingGeometryUpdate(PendingGeometryNormal); | ||
4251 | return; | 4254 | return; | ||
4252 | } | 4255 | } | ||
4253 | updateServerGeometry(); | 4256 | updateServerGeometry(); | ||
4254 | updateWindowRules(Rules::Position|Rules::Size); | 4257 | updateWindowRules(Rules::Position|Rules::Size); | ||
4255 | screens()->setCurrent(this); | 4258 | screens()->setCurrent(this); | ||
4256 | workspace()->updateStackingOrder(); | 4259 | workspace()->updateStackingOrder(); | ||
4260 | const QRect oldFrameGeometry = frameGeometryBeforeUpdateBlocking(); | ||||
4257 | if (bufferGeometryBeforeUpdateBlocking().size() != m_bufferGeometry.size()) { | 4261 | if (bufferGeometryBeforeUpdateBlocking().size() != m_bufferGeometry.size()) { | ||
4258 | discardWindowPixmap(); | 4262 | discardWindowPixmap(); | ||
4259 | } | 4263 | } | ||
4260 | emit geometryShapeChanged(this, frameGeometryBeforeUpdateBlocking()); | 4264 | emit geometryShapeChanged(this, oldFrameGeometry); | ||
4261 | addRepaintDuringGeometryUpdates(); | 4265 | addRepaintDuringGeometryUpdates(); | ||
4262 | updateGeometryBeforeUpdateBlocking(); | 4266 | updateGeometryBeforeUpdateBlocking(); | ||
4263 | // TODO: this signal is emitted too often | 4267 | // TODO: this signal is emitted too often | ||
4264 | emit geometryChanged(); | 4268 | emit frameGeometryChanged(this, oldFrameGeometry); | ||
4265 | } | 4269 | } | ||
4266 | 4270 | | |||
4267 | void X11Client::updateServerGeometry() | 4271 | void X11Client::updateServerGeometry() | ||
4268 | { | 4272 | { | ||
4269 | if (m_frame.geometry().size() != m_bufferGeometry.size() || pendingGeometryUpdate() == PendingGeometryForced) { | 4273 | if (m_frame.geometry().size() != m_bufferGeometry.size() || pendingGeometryUpdate() == PendingGeometryForced) { | ||
4270 | resizeDecoration(); | 4274 | resizeDecoration(); | ||
4271 | m_frame.setGeometry(m_bufferGeometry); | 4275 | m_frame.setGeometry(m_bufferGeometry); | ||
4272 | if (!isShade()) { | 4276 | if (!isShade()) { | ||
▲ Show 20 Lines • Show All 681 Lines • Show Last 20 Lines |