diff --git a/src/wayland/session_lock.cpp b/src/wayland/session_lock.cpp index be8136f..a466e4d 100644 --- a/src/wayland/session_lock.cpp +++ b/src/wayland/session_lock.cpp @@ -89,7 +89,10 @@ void SessionLock::updateSurfaces(SessionLock* old) { instance->onReload(oldInstance); this->surfaces[screen] = instance; - instance->show(); + } + + for (auto* surface: this->surfaces.values()) { + surface->show(); } } } @@ -117,7 +120,7 @@ bool SessionLock::isLocked() const { } bool SessionLock::isSecure() const { - return this->manager != nullptr && SessionLockManager::sessionLocked(); + return this->manager != nullptr && SessionLockManager::isSecure(); } void SessionLock::setLocked(bool locked) { diff --git a/src/wayland/session_lock/manager.cpp b/src/wayland/session_lock/manager.cpp index db6852b..dc18660 100644 --- a/src/wayland/session_lock/manager.cpp +++ b/src/wayland/session_lock/manager.cpp @@ -18,3 +18,6 @@ QSWaylandSessionLock* QSWaylandSessionLockManager::acquireLock() { } bool QSWaylandSessionLockManager::isLocked() const { return this->active != nullptr; } +bool QSWaylandSessionLockManager::isSecure() const { + return this->isLocked() && this->active->hasCompositorLock(); +} diff --git a/src/wayland/session_lock/manager.hpp b/src/wayland/session_lock/manager.hpp index 8c36aa5..6a21a3c 100644 --- a/src/wayland/session_lock/manager.hpp +++ b/src/wayland/session_lock/manager.hpp @@ -17,6 +17,7 @@ public: // Create a new session lock if there is no currently active lock, otherwise null. QSWaylandSessionLock* acquireLock(); [[nodiscard]] bool isLocked() const; + [[nodiscard]] bool isSecure() const; static bool sessionLocked(); diff --git a/src/wayland/session_lock/session_lock.cpp b/src/wayland/session_lock/session_lock.cpp index 65ceef6..dc08d7d 100644 --- a/src/wayland/session_lock/session_lock.cpp +++ b/src/wayland/session_lock/session_lock.cpp @@ -44,6 +44,7 @@ bool SessionLockManager::unlock() { bool SessionLockManager::isLocked() const { return this->mLock != nullptr; } bool SessionLockManager::sessionLocked() { return manager()->isLocked(); } +bool SessionLockManager::isSecure() { return manager()->isSecure(); } LockWindowExtension::~LockWindowExtension() { if (this->surface != nullptr) { diff --git a/src/wayland/session_lock/session_lock.hpp b/src/wayland/session_lock/session_lock.hpp index 45e86d6..7e3968b 100644 --- a/src/wayland/session_lock/session_lock.hpp +++ b/src/wayland/session_lock/session_lock.hpp @@ -26,6 +26,7 @@ public: [[nodiscard]] bool isLocked() const; static bool sessionLocked(); + static bool isSecure(); signals: // This signal is sent once the compositor considers the session to be fully locked.