From fd940309d6be38de3131b5fdb33b31d04f3d2976 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Fri, 1 Apr 2022 02:50:29 +0300 Subject: [PATCH] kgreeter: working state save/restore Signed-off-by: Ivailo Monev --- kgreeter/kgreeter.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/kgreeter/kgreeter.cpp b/kgreeter/kgreeter.cpp index dfe094ad..05bdd4ab 100644 --- a/kgreeter/kgreeter.cpp +++ b/kgreeter/kgreeter.cpp @@ -143,6 +143,22 @@ KGreeter::KGreeter(QWidget *parent) } } + QSettings kgreeterstate("lightdm-kgreeter-state"); + const QString lastuser = kgreeterstate.value("state/lastuser").toString(); + for (int i = 0; i < m_ui.usersbox->count(); i++) { + if (m_ui.usersbox->itemText(i) == lastuser) { + m_ui.usersbox->setCurrentIndex(i); + break; + } + } + const QString lastsession = kgreeterstate.value("state/lastsession").toString(); + for (int i = 0; i < m_ui.sessionsbox->count(); i++) { + if (m_ui.sessionsbox->itemData(i).toString() == lastsession) { + m_ui.sessionsbox->setCurrentIndex(i); + break; + } + } + m_ui.groupbox->setTitle(QString::fromUtf8(lightdm_get_hostname())); m_ui.actionSuspend->setVisible(lightdm_get_can_suspend()); @@ -322,9 +338,18 @@ void KGreeter::slotLayout() void KGreeter::slotLogin() { const QByteArray kgreeterusername = getUser(); + const QByteArray kgreetersession = getSession(); + + // the trick is to save before lightdm_greeter_authenticate() + { + QSettings kgreeterstate("lightdm-kgreeter-state"); + kgreeterstate.setValue("state/lastsession", kgreetersession); + kgreeterstate.setValue("state/lastuser", kgreeterusername); + } g_autoptr(GError) gliberror = NULL; lightdm_greeter_authenticate(m_ldmgreeter, kgreeterusername.constData(), &gliberror); + g_main_loop_run(glibloop); }