From 67910249952e4e77535d8ecde2fe589fe32f64da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sami=20V=C3=A4nttinen?= Date: Sun, 30 Jan 2022 17:59:29 +0200 Subject: [PATCH] Fix new password generator closed reply with Browser Integration (#7359) --- src/browser/BrowserService.cpp | 7 +++++-- src/gui/PasswordGeneratorWidget.cpp | 8 +++++++- src/gui/PasswordGeneratorWidget.h | 4 +++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/browser/BrowserService.cpp b/src/browser/BrowserService.cpp index b4b2f98f3..3ebf6d2b8 100644 --- a/src/browser/BrowserService.cpp +++ b/src/browser/BrowserService.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2013 Francois Ferrand * Copyright (C) 2017 Sami Vänttinen - * Copyright (C) 2021 KeePassXC Team + * Copyright (C) 2022 KeePassXC Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -317,8 +317,11 @@ void BrowserService::showPasswordGenerator(const QJsonObject& errorMessage, cons m_passwordGenerator.reset(PasswordGeneratorWidget::popupGenerator()); connect(m_passwordGenerator.data(), &PasswordGeneratorWidget::closed, m_passwordGenerator.data(), [=] { + if (!m_passwordGenerator->isPasswordGenerated()) { + m_browserHost->sendClientMessage(errorMessage); + } + m_passwordGenerator.reset(); - m_browserHost->sendClientMessage(errorMessage); hideWindow(); }); diff --git a/src/gui/PasswordGeneratorWidget.cpp b/src/gui/PasswordGeneratorWidget.cpp index 32e559418..1fd6cc972 100644 --- a/src/gui/PasswordGeneratorWidget.cpp +++ b/src/gui/PasswordGeneratorWidget.cpp @@ -1,6 +1,6 @@ /* * Copyright (C) 2013 Felix Geyer - * Copyright (C) 2021 KeePassXC Team + * Copyright (C) 2022 KeePassXC Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -294,6 +294,7 @@ void PasswordGeneratorWidget::updatePasswordStrength(const QString& password) void PasswordGeneratorWidget::applyPassword() { saveSettings(); + m_passwordGenerated = true; emit appliedPassword(m_ui->editNewPassword->text()); emit closed(); } @@ -341,6 +342,11 @@ bool PasswordGeneratorWidget::isPasswordVisible() const return m_ui->editNewPassword->isPasswordVisible(); } +bool PasswordGeneratorWidget::isPasswordGenerated() const +{ + return m_passwordGenerated; +} + void PasswordGeneratorWidget::deleteWordList() { if (m_ui->comboBoxWordList->currentIndex() < m_firstCustomWordlistIndex) { diff --git a/src/gui/PasswordGeneratorWidget.h b/src/gui/PasswordGeneratorWidget.h index 57b331bb8..80b3f26de 100644 --- a/src/gui/PasswordGeneratorWidget.h +++ b/src/gui/PasswordGeneratorWidget.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2013 Felix Geyer - * Copyright (C) 2021 KeePassXC Team + * Copyright (C) 2022 KeePassXC Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -53,6 +53,7 @@ public: void setStandaloneMode(bool standalone); QString getGeneratedPassword(); bool isPasswordVisible() const; + bool isPasswordGenerated() const; static PasswordGeneratorWidget* popupGenerator(QWidget* parent = nullptr); @@ -82,6 +83,7 @@ private slots: private: bool m_standalone = false; + bool m_passwordGenerated = false; int m_firstCustomWordlistIndex; void closeEvent(QCloseEvent* event);