diff --git a/src/dde-lock/lockworker.cpp b/src/dde-lock/lockworker.cpp index 1c034509..52bae204 100644 --- a/src/dde-lock/lockworker.cpp +++ b/src/dde-lock/lockworker.cpp @@ -585,7 +585,7 @@ void LockWorker::doPowerAction(const SessionBaseModel::PowerAction action) m_model->setShutdownMode(true); auto gsCheckPwd = m_model->gsCheckpwd(); if (!isLocked() || m_model->currentModeState() == SessionBaseModel::ModeStatus::ShutDownMode || !gsCheckPwd) { - m_sessionManagerInter->RequestReboot(); + QTimer::singleShot(100, this, [this] { m_sessionManagerInter->RequestReboot(); }); } else { createAuthentication(m_account); m_model->setCurrentModeState(SessionBaseModel::ModeStatus::ConfirmPasswordMode); @@ -604,7 +604,7 @@ void LockWorker::doPowerAction(const SessionBaseModel::PowerAction action) m_model->setShutdownMode(true); auto gsCheckPwd = m_model->gsCheckpwd(); if (!isLocked() || m_model->currentModeState() == SessionBaseModel::ModeStatus::ShutDownMode || !gsCheckPwd) { - m_sessionManagerInter->RequestShutdown(); + QTimer::singleShot(100, this, [this] { m_sessionManagerInter->RequestShutdown(); }); } else { createAuthentication(m_account); m_model->setCurrentModeState(SessionBaseModel::ModeStatus::ConfirmPasswordMode); @@ -624,6 +624,7 @@ void LockWorker::doPowerAction(const SessionBaseModel::PowerAction action) createAuthentication(m_model->currentUser()->name()); break; case SessionBaseModel::PowerAction::RequireLogout: + m_model->setShutdownMode(true); m_sessionManagerInter->RequestLogout(); return; case SessionBaseModel::PowerAction::RequireSwitchSystem: diff --git a/src/session-widgets/sessionbasemodel.cpp b/src/session-widgets/sessionbasemodel.cpp index b7f09194..762bd04a 100644 --- a/src/session-widgets/sessionbasemodel.cpp +++ b/src/session-widgets/sessionbasemodel.cpp @@ -123,7 +123,7 @@ void SessionBaseModel::setPowerAction(const PowerAction &powerAction) m_powerAction = powerAction; - if (m_enableShutdownBlackWidget && !gsCheckpwd() && (powerAction == SessionBaseModel::PowerAction::RequireRestart || powerAction == SessionBaseModel::PowerAction::RequireShutdown)) + if (m_enableShutdownBlackWidget && !gsCheckpwd() && (powerAction == SessionBaseModel::PowerAction::RequireRestart || powerAction == SessionBaseModel::PowerAction::RequireShutdown || powerAction == SessionBaseModel::PowerAction::RequireLogout)) Q_EMIT shutdownkModeChanged(true); emit onPowerActionChanged(powerAction);