fix: switch user login password input unresponsive#1020
Conversation
|
Skipping CI for Draft Pull Request. |
There was a problem hiding this comment.
Sorry @deepin-wm, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: deepin-wm The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
1. Add setLock(true) in lock() for real user branch to immediately set isLocked state 2. The root cause is lock() did not immediately set isLocked, causing keyboard focus not transferred to lock screen QML 3. Downgrade onSessionLock() log from qCWarning to qCDebug for non-active session id branch 4. Add ordering dependency comment in setLock() to prevent re-entry 5. Use Qt.callLater in updateUser() to delay forceActiveFocus until event loop iteration ends Log: Fixed switch user login screen password input unresponsive issue Influence: 1. Test user switching from power management interface 2. Verify password input field gets focus after user selection 3. Test lock/unlock cycle with real user sessions fix: 切换用户登录输入密码无响应 1. 在 lock() 真实用户分支中添加 setLock(true) 立即设置 isLocked 状态 2. 根因是 lock() 未立即设置 isLocked, 导致键盘焦点未转移到锁屏 QML 3. 将 onSessionLock() 中非活跃 session 的日志 从 qCWarning 降级为 qCDebug 4. 在 setLock() 中添加顺序依赖注释防止重入 5. 在 updateUser() 中使用 Qt.callLater 延迟 forceActiveFocus 到事件循环末尾 Log: 修复切换用户登录界面输入密码无响应问题 Influence: 1. 测试从电源管理界面切换用户功能 2. 验证用户选择后密码输入框获得焦点 3. 测试真实用户会话的锁定/解锁循环
3d6aa43 to
92b78d1
Compare
|
TAG Bot New tag: 0.8.12 |
|
TAG Bot New tag: 0.8.13 |
Summary
Fix the issue where switching users results in an unresponsive password input field on the login screen.
Root Cause
GreeterProxy::lock()did not immediately setisLockedwhen the active session is a real user (non-"dde"), causing keyboard focus to not transfer to the lock screen QML.Changes
setLock(true)inlock()for real user branch to immediately setisLockedstateonSessionLock()log fromqCWarningtoqCDebugfor non-active session ID branch, since this is expected whenlock()already setisLockedsetLock()to prevent re-entry (m_isLockedmust be set beforem_lockScreen->lock())Qt.callLaterinupdateUser()to delayforceActiveFocusuntil event loop iteration ends, ensuring UserList Popup close has taken effectTesting