From 80df8845a557efcb70a8aa843be80b4b8c289127 Mon Sep 17 00:00:00 2001 From: April & May & June Date: Thu, 15 Jan 2026 07:42:05 +0800 Subject: [PATCH 1/2] fix: show lockscreen only if the logind session is removed This will work as intended. Since updateLocketState will do its things, no additional changes needed. Only remove redundant code is enough. --- src/greeter/greeterproxy.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/greeter/greeterproxy.cpp b/src/greeter/greeterproxy.cpp index 171aac598..c25d92ed3 100644 --- a/src/greeter/greeterproxy.cpp +++ b/src/greeter/greeterproxy.cpp @@ -262,8 +262,6 @@ void GreeterProxy::unlock(const QString &user, const QString &password) void GreeterProxy::logout() { qCDebug(treelandGreeter) << "Logout."; - d->isLoggedIn = false; - Q_EMIT isLoggedInChanged(); auto session = Helper::instance()->activeSession().lock(); SocketWriter(d->socket) << quint32(GreeterMessages::Logout) << session->id; } From 4965ad727d06233a1259cb6b6030bbb2ec67abaf Mon Sep 17 00:00:00 2001 From: April & May & June Date: Thu, 15 Jan 2026 13:59:11 +0800 Subject: [PATCH 2/2] fix: second user cannot login There's a bunch of shit in this obsolete code, but this quickfix can temporarily make it behave well... --- src/greeter/greeterproxy.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/greeter/greeterproxy.cpp b/src/greeter/greeterproxy.cpp index c25d92ed3..4ef4e1ceb 100644 --- a/src/greeter/greeterproxy.cpp +++ b/src/greeter/greeterproxy.cpp @@ -299,6 +299,7 @@ void GreeterProxy::onSessionNew(const QString &id, const QDBusObjectPath &path) userModel()->updateUserLoginState(username, true); // userLoggedIn signal is connected with Helper::updateActiveUserSession Q_EMIT d->userModel->userLoggedIn(username, id.toInt()); + Q_EMIT loginSucceeded(username); updateLocketState(); }); } @@ -471,9 +472,9 @@ void GreeterProxy::updateLocketState() if (!d->userModel) return; qCInfo(treelandGreeter) << "Update lock state"; - bool locked = false; + bool locked = d->isLocked; if (auto user = d->userModel->currentUser()) { - locked = user->logined(); + locked = !user->logined(); } if (d->isLocked != locked) {