Make scale and glide effect ignore lockscreen greeter
On X11, the lockscreen greeter is an override-redirect window so the scale and the glide effect ignore it. On Wayland, the lockscreen greeter is a regular window so both effects try to animate it upon the screen being unlocked, which looks bad.
This commit is contained in:
parent
0f60cc68a9
commit
7475385c82
9 changed files with 29 additions and 4 deletions
|
@ -251,6 +251,9 @@ public:
|
|||
bool isOutline() const override {
|
||||
return false;
|
||||
}
|
||||
bool isLockScreen() const override {
|
||||
return false;
|
||||
}
|
||||
pid_t pid() const override {
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ Deleted::Deleted()
|
|||
, m_wasPopupWindow(false)
|
||||
, m_wasOutline(false)
|
||||
, m_wasDecorated(false)
|
||||
, m_wasLockScreen(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -120,6 +121,7 @@ void Deleted::copyToDeleted(Toplevel* c)
|
|||
|
||||
m_wasPopupWindow = c->isPopupWindow();
|
||||
m_wasOutline = c->isOutline();
|
||||
m_wasLockScreen = c->isLockScreen();
|
||||
}
|
||||
|
||||
void Deleted::unrefWindow()
|
||||
|
|
|
@ -100,6 +100,9 @@ public:
|
|||
bool isOutline() const override {
|
||||
return m_wasOutline;
|
||||
}
|
||||
bool isLockScreen() const override {
|
||||
return m_wasLockScreen;
|
||||
}
|
||||
|
||||
private Q_SLOTS:
|
||||
void mainClientClosed(KWin::Toplevel *client);
|
||||
|
@ -140,6 +143,7 @@ private:
|
|||
bool m_wasPopupWindow;
|
||||
bool m_wasOutline;
|
||||
bool m_wasDecorated;
|
||||
bool m_wasLockScreen;
|
||||
qreal m_bufferScale = 1;
|
||||
};
|
||||
|
||||
|
|
|
@ -1918,6 +1918,7 @@ TOPLEVEL_HELPER(bool, skipsCloseAnimation, skipsCloseAnimation)
|
|||
TOPLEVEL_HELPER(KWaylandServer::SurfaceInterface *, surface, surface)
|
||||
TOPLEVEL_HELPER(bool, isPopupWindow, isPopupWindow)
|
||||
TOPLEVEL_HELPER(bool, isOutline, isOutline)
|
||||
TOPLEVEL_HELPER(bool, isLockScreen, isLockScreen)
|
||||
TOPLEVEL_HELPER(pid_t, pid, pid)
|
||||
TOPLEVEL_HELPER(qlonglong, windowId, window)
|
||||
|
||||
|
|
|
@ -463,6 +463,7 @@ public:
|
|||
bool isModal() const override;
|
||||
bool isPopupWindow() const override;
|
||||
bool isOutline() const override;
|
||||
bool isLockScreen() const override;
|
||||
|
||||
KWaylandServer::SurfaceInterface *surface() const override;
|
||||
bool isFullScreen() const override;
|
||||
|
|
|
@ -310,8 +310,8 @@ bool GlideEffect::isGlideWindow(EffectWindow *w) const
|
|||
return false;
|
||||
}
|
||||
|
||||
// Don't animate the outline because it looks very sick.
|
||||
if (w->isOutline()) {
|
||||
// Don't animate the outline and the screenlocker as it looks bad.
|
||||
if (w->isLockScreen() || w->isOutline()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -64,8 +64,8 @@ class ScaleEffect {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Dont't animate the outline because it looks very sick.
|
||||
if (window.outline) {
|
||||
// Dont't animate the outline and the screenlocker as it looks bad.
|
||||
if (window.lockScreen || window.outline) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -2170,6 +2170,13 @@ class KWINEFFECTS_EXPORT EffectWindow : public QObject
|
|||
*/
|
||||
Q_PROPERTY(pid_t pid READ pid CONSTANT)
|
||||
|
||||
/**
|
||||
* Whether this EffectWindow represents the screenlocker greeter.
|
||||
*
|
||||
* @since 5.22
|
||||
*/
|
||||
Q_PROPERTY(bool lockScreen READ isLockScreen CONSTANT)
|
||||
|
||||
public:
|
||||
/** Flags explaining why painting should be disabled */
|
||||
enum {
|
||||
|
@ -2491,6 +2498,11 @@ public:
|
|||
*/
|
||||
virtual bool isOutline() const = 0;
|
||||
|
||||
/**
|
||||
* @since 5.22
|
||||
*/
|
||||
virtual bool isLockScreen() const = 0;
|
||||
|
||||
/**
|
||||
* @since 5.18
|
||||
*/
|
||||
|
|
|
@ -48,6 +48,8 @@ WaylandClient::WaylandClient(SurfaceInterface *surface)
|
|||
this, &WaylandClient::updateIcon);
|
||||
connect(screens(), &Screens::changed, this,
|
||||
&WaylandClient::updateClientOutputs);
|
||||
connect(surface->client(), &ClientConnection::aboutToBeDestroyed,
|
||||
this, &WaylandClient::destroyClient);
|
||||
|
||||
updateResourceName();
|
||||
updateIcon();
|
||||
|
|
Loading…
Reference in a new issue