<table><tr><td style="">siddharthasahu added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D21192">View Revision</a></tr></table><br /><div><div><p>I took another look. As I already mentioned, there seems to be a difference between how <tt style="background: #ebebeb; font-size: 13px;">onLoginFailed</tt> signals work in both.<br />
In the lock screen:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">the <a href="https://cgit.kde.org/plasma-workspace.git/tree/lookandfeel/contents/lockscreen/LockScreenUi.qml#n41" class="remarkup-link" target="_blank" rel="noreferrer"><tt style="background: #ebebeb; font-size: 13px;">onLoginFailed</tt></a> signal is delivered as soon as the password is detected to be incorrec. I use this signal to selectAll() the password text so the user can start editing.</li>
<li class="remarkup-list-item">The grace timeout is a separate signal <a href="https://cgit.kde.org/plasma-workspace.git/tree/lookandfeel/contents/lockscreen/LockScreenUi.qml#n44" class="remarkup-link" target="_blank" rel="noreferrer"><tt style="background: #ebebeb; font-size: 13px;">onGraceLockedChanged</tt></a>, which is used to clear the "Login failed" message.</li>
</ul>

<p>To summarize, the flow is: (enter password) --> (loginFailed) --[authenticator timeout expires]--> (graceLockedChanged).</p>

<p>On the other hand, in sddm:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">the <a href="https://cgit.kde.org/plasma-workspace.git/tree/sddm-theme/Main.qml#n452" class="remarkup-link" target="_blank" rel="noreferrer"><tt style="background: #ebebeb; font-size: 13px;">onLoginFailed</tt></a> signal is delivered only after grace timeout has expired.</li>
<li class="remarkup-list-item">the "Login failed" message is cleared with a qml timer.</li>
</ul>

<p>the flow is: (enter password) --[authenticator timeout expires]--> (loginFailed) --> (notificationResetTimer).<br />
The behaviour of sddm can only be made the same as the lock screen if the <tt style="background: #ebebeb; font-size: 13px;">loginFailed</tt> signal is delivered independent of the authenticator timeout.</p>

<p>If someone can tell me how the <tt style="background: #ebebeb; font-size: 13px;">onLoginFailed</tt> signals are generated, I can take a look to see if there is a difference in the backend timers. I'm guessing there is some C++ code handling this?</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R120 Plasma Workspace</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D21192">https://phabricator.kde.org/D21192</a></div></div><br /><div><strong>To: </strong>siddharthasahu, ngraham, Plasma, VDG<br /><strong>Cc: </strong>filipf, davidedmundson, plasma-devel, jraleigh, GB_2, ragreen, Pitel, ZrenBot, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart<br /></div>