diff --git a/share/translations/keepassxc_es.ts b/share/translations/keepassxc_es.ts
index f4575d936d..f94a05f194 100644
--- a/share/translations/keepassxc_es.ts
+++ b/share/translations/keepassxc_es.ts
@@ -7369,6 +7369,10 @@ Do you want to overwrite it?
Toggle Password (%1)
Conmutar contraseña (%1)
+
+ Copy Password
+ Copiar contraseña
+
Generate Password (%1)
Generar contraseña (%1)
@@ -10668,4 +10672,4 @@ Ejemplo: JBSWY3DPEHPK3PXP
Desconocido
-
\ No newline at end of file
+
diff --git a/src/gui/PasswordWidget.cpp b/src/gui/PasswordWidget.cpp
index 2568ff67b6..18af9a3481 100644
--- a/src/gui/PasswordWidget.cpp
+++ b/src/gui/PasswordWidget.cpp
@@ -20,6 +20,7 @@
#include "ui_PasswordWidget.h"
#include "core/Config.h"
+#include "gui/Clipboard.h"
#include "core/PasswordHealth.h"
#include "gui/Font.h"
#include "gui/Icons.h"
@@ -83,6 +84,13 @@ PasswordWidget::PasswordWidget(QWidget* parent)
m_ui->passwordEdit->addAction(m_passwordGeneratorAction, QLineEdit::TrailingPosition);
m_passwordGeneratorAction->setVisible(false);
+ m_copyToClipboardAction = new QAction(
+ icons()->icon("edit-copy"),
+ tr("Copy Password"),
+ this);
+ m_ui->passwordEdit->addAction(m_copyToClipboardAction, QLineEdit::TrailingPosition);
+ connect(m_copyToClipboardAction, &QAction::triggered, this, &PasswordWidget::copyPasswordToClipboard);
+
m_capslockAction =
new QAction(icons()->icon("dialog-warning", true, StateColorPalette().color(StateColorPalette::Error)),
tr("Warning: Caps Lock enabled!"),
@@ -185,6 +193,11 @@ bool PasswordWidget::isPasswordVisible() const
return m_ui->passwordEdit->echoMode() == QLineEdit::Normal;
}
+void PasswordWidget::copyPasswordToClipboard()
+{
+ clipboard()->setText(m_ui->passwordEdit->text());
+}
+
void PasswordWidget::popupPasswordGenerator()
{
auto generator = PasswordGeneratorWidget::popupGenerator(this);
diff --git a/src/gui/PasswordWidget.h b/src/gui/PasswordWidget.h
index 6049d2908c..1c414e17dd 100644
--- a/src/gui/PasswordWidget.h
+++ b/src/gui/PasswordWidget.h
@@ -63,6 +63,7 @@ private slots:
void popupPasswordGenerator();
void updateRepeatStatus();
void updatePasswordStrength(const QString& password);
+ void copyPasswordToClipboard();
private:
void checkCapslockState();
@@ -74,6 +75,7 @@ private slots:
QPointer m_correctAction;
QPointer m_toggleVisibleAction;
QPointer m_passwordGeneratorAction;
+ QPointer m_copyToClipboardAction;
QPointer m_capslockAction;
QPointer m_repeatPasswordWidget;
QPointer m_parentPasswordWidget;