diff --git a/autotests/knewpasswordwidgettest.h b/autotests/knewpasswordwidgettest.h --- a/autotests/knewpasswordwidgettest.h +++ b/autotests/knewpasswordwidgettest.h @@ -43,6 +43,7 @@ void disablingWidgetShouldUseDisabledPalette(); void disablingParentShouldUseDisabledPalette(); void disablingRevealPasswordShouldHideVisibilityAction(); + void shouldNotHideVisibilityActionInPlaintextMode(); }; #endif diff --git a/autotests/knewpasswordwidgettest.cpp b/autotests/knewpasswordwidgettest.cpp --- a/autotests/knewpasswordwidgettest.cpp +++ b/autotests/knewpasswordwidgettest.cpp @@ -285,3 +285,21 @@ QVERIFY(!visibilityAction->isVisible()); QCOMPARE(pwdWidget.isRevealPasswordAvailable(), visibilityAction->isVisible()); } + +void KNewPasswordWidgetTest::shouldNotHideVisibilityActionInPlaintextMode() +{ + KNewPasswordWidget pwdWidget; + + auto linePassword = pwdWidget.findChild(QStringLiteral("linePassword")); + QVERIFY(linePassword); + + auto visibilityAction = linePassword->findChild(QStringLiteral("visibilityAction")); + QVERIFY(visibilityAction && !visibilityAction->isVisible()); + + linePassword->setText(QStringLiteral("1234")); + QVERIFY(visibilityAction->isVisible()); + + visibilityAction->trigger(); + linePassword->clear(); + QVERIFY(visibilityAction->isVisible()); +} diff --git a/src/knewpasswordwidget.cpp b/src/knewpasswordwidget.cpp --- a/src/knewpasswordwidget.cpp +++ b/src/knewpasswordwidget.cpp @@ -141,7 +141,7 @@ void KNewPasswordWidget::KNewPasswordWidgetPrivate::_k_showToggleEchoModeAction(const QString &text) { - toggleEchoModeAction->setVisible(revealPasswordAvailable && !text.isEmpty()); + toggleEchoModeAction->setVisible(revealPasswordAvailable && (ui.linePassword->echoMode() == QLineEdit::Normal || !text.isEmpty())); } int KNewPasswordWidget::KNewPasswordWidgetPrivate::effectivePasswordLength(const QString &password)