diff --git a/greeter/CMakeLists.txt b/greeter/CMakeLists.txt
--- a/greeter/CMakeLists.txt
+++ b/greeter/CMakeLists.txt
@@ -29,6 +29,12 @@
BASENAME ksld
)
+set(login1_manager_xml dbus/org.freedesktop.login1.Manager.xml)
+qt5_add_dbus_interface(kscreenlocker_greet_SRCS
+ ${login1_manager_xml}
+ login1_interface
+)
+
add_executable(kscreenlocker_greet ${kscreenlocker_greet_SRCS})
target_link_libraries(kscreenlocker_greet
@@ -40,6 +46,7 @@
KF5::QuickAddons
KF5::WindowSystem
Qt5::Quick
+ Qt5::DBus
Qt5::Qml
Qt5::X11Extras
${X11_LIBRARIES}
diff --git a/greeter/authenticator.h b/greeter/authenticator.h
--- a/greeter/authenticator.h
+++ b/greeter/authenticator.h
@@ -48,6 +48,7 @@
void failed();
void succeeded();
void graceLockedChanged();
+ void suspend() const;
void message(const QString & msg); // don't remove the "msg" param, used in QML!!!
void error(const QString & err); // don't remove the "err" param, used in QML!!!
diff --git a/greeter/dbus/org.freedesktop.login1.Manager.xml b/greeter/dbus/org.freedesktop.login1.Manager.xml
new file mode 100644
--- /dev/null
+++ b/greeter/dbus/org.freedesktop.login1.Manager.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
diff --git a/greeter/fallbacktheme/Greeter.qml b/greeter/fallbacktheme/Greeter.qml
--- a/greeter/fallbacktheme/Greeter.qml
+++ b/greeter/fallbacktheme/Greeter.qml
@@ -162,5 +162,8 @@
onError: function(text) {
root.notification = text;
}
+ onSuspend: {
+ password.clear();
+ }
}
}
diff --git a/greeter/greeterapp.h b/greeter/greeterapp.h
--- a/greeter/greeterapp.h
+++ b/greeter/greeterapp.h
@@ -72,6 +72,7 @@
public Q_SLOTS:
void desktopResized();
+ void onPrepareForSleep(bool start);
protected:
bool eventFilter(QObject *obj, QEvent *event) override;
diff --git a/greeter/greeterapp.cpp b/greeter/greeterapp.cpp
--- a/greeter/greeterapp.cpp
+++ b/greeter/greeterapp.cpp
@@ -24,6 +24,7 @@
#include "noaccessnetworkaccessmanagerfactory.h"
#include "wallpaper_integration.h"
#include "lnf_integration.h"
+#include "login1_interface.h"
#include
@@ -54,6 +55,7 @@
#include
#include
#include
+#include
#include
#include
@@ -133,6 +135,20 @@
if (QX11Info::isPlatformX11()) {
installNativeEventFilter(new FocusOutEventFilter);
}
+
+ QDBusConnection::systemBus().connect(QStringLiteral("org.freedesktop.login1"),
+ QStringLiteral("/org/freedesktop/login1"),
+ QStringLiteral("org.freedesktop.login1.Manager"),
+ QStringLiteral("PrepareForSleep"),
+ this,
+ SLOT(onPrepareForSleep(bool)));
+}
+
+void UnlockApp::onPrepareForSleep(bool start) {
+ if (start) {
+ // start of sleep, aka suspend
+ emit m_authenticator->suspend();
+ }
}
UnlockApp::~UnlockApp()