From 54afbe6a2ff141a2953e6a89f2fa6c9549016a18 Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Sat, 25 May 2024 09:13:43 -0400 Subject: [PATCH] Improve handling of clipboard actions * Fix #10804 --- src/gui/DatabaseWidget.cpp | 1 + src/gui/DatabaseWidget.h | 2 +- src/gui/EntryPreviewWidget.cpp | 7 +++---- src/gui/EntryPreviewWidget.h | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index d7600bc1f..822cfddc7 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -197,6 +197,7 @@ DatabaseWidget::DatabaseWidget(QSharedPointer db, QWidget* parent) connect(m_previewSplitter, SIGNAL(splitterMoved(int,int)), SIGNAL(splitterSizesChanged())); connect(this, SIGNAL(currentModeChanged(DatabaseWidget::Mode)), m_previewView, SLOT(setDatabaseMode(DatabaseWidget::Mode))); connect(m_previewView, SIGNAL(entryUrlActivated(Entry*)), SLOT(openUrlForEntry(Entry*))); + connect(m_previewView, SIGNAL(copyTextRequested(const QString&)), SLOT(setClipboardTextAndMinimize(const QString&))); connect(m_entryView, SIGNAL(viewStateChanged()), SIGNAL(entryViewStateChanged())); connect(m_groupView, SIGNAL(groupSelectionChanged()), SLOT(onGroupChanged())); connect(m_groupView, &GroupView::groupFocused, this, [this] { m_previewView->setGroup(currentGroup()); }); diff --git a/src/gui/DatabaseWidget.h b/src/gui/DatabaseWidget.h index 0b306d91d..1a562cb4c 100644 --- a/src/gui/DatabaseWidget.h +++ b/src/gui/DatabaseWidget.h @@ -193,6 +193,7 @@ public slots: void performAutoTypePassword(); void performAutoTypePasswordEnter(); void performAutoTypeTOTP(); + void setClipboardTextAndMinimize(const QString& text); void openUrl(); void downloadSelectedFavicons(); void downloadAllFavicons(); @@ -267,7 +268,6 @@ private slots: private: int addChildWidget(QWidget* w); - void setClipboardTextAndMinimize(const QString& text); void processAutoOpen(); void openDatabaseFromEntry(const Entry* entry, bool inBackground = true); void performIconDownloads(const QList& entries, bool force = false, bool downloadInBackground = false); diff --git a/src/gui/EntryPreviewWidget.cpp b/src/gui/EntryPreviewWidget.cpp index 3ae0dc08b..8d81e0163 100644 --- a/src/gui/EntryPreviewWidget.cpp +++ b/src/gui/EntryPreviewWidget.cpp @@ -22,7 +22,6 @@ #include "Application.h" #include "core/Config.h" #include "core/Totp.h" -#include "gui/Clipboard.h" #include "gui/Font.h" #include "gui/Icons.h" #if defined(WITH_XC_KEESHARE) @@ -85,10 +84,10 @@ EntryPreviewWidget::EntryPreviewWidget(QWidget* parent) }); connect(&m_totpTimer, SIGNAL(timeout()), SLOT(updateTotpLabel())); - connect(m_ui->entryAttributesTable, &QTableWidget::itemDoubleClicked, this, [](QTableWidgetItem* item) { + connect(m_ui->entryAttributesTable, &QTableWidget::itemDoubleClicked, this, [this](QTableWidgetItem* item) { auto userData = item->data(Qt::UserRole); if (userData.isValid()) { - clipboard()->setText(userData.toString()); + emit copyTextRequested(userData.toString()); } }); @@ -119,7 +118,7 @@ bool EntryPreviewWidget::eventFilter(QObject* object, QEvent* event) { if (object == m_ui->entryTotpLabel && event->type() == QEvent::MouseButtonDblClick) { if (m_currentEntry && m_currentEntry->hasTotp()) { - clipboard()->setText(m_currentEntry->totp()); + emit copyTextRequested(m_currentEntry->totp()); m_ui->entryTotpLabel->clearFocus(); return true; } diff --git a/src/gui/EntryPreviewWidget.h b/src/gui/EntryPreviewWidget.h index 83af07ee9..b5c497a76 100644 --- a/src/gui/EntryPreviewWidget.h +++ b/src/gui/EntryPreviewWidget.h @@ -46,6 +46,7 @@ public slots: signals: void entryUrlActivated(Entry* entry); + void copyTextRequested(const QString& text); protected: bool eventFilter(QObject* object, QEvent* event) override;