diff --git a/src/gui/CloneDialog.cpp b/src/gui/CloneDialog.cpp index f424b96a76..9b2afde750 100644 --- a/src/gui/CloneDialog.cpp +++ b/src/gui/CloneDialog.cpp @@ -58,8 +58,7 @@ void CloneDialog::cloneEntry() Entry* entry = m_entry->clone(flags); entry->setGroup(m_entry->group()); - m_parent->entryView()->setCurrentEntry(entry); - m_parent->refreshSearch(); + emit entryCloned(entry); close(); } diff --git a/src/gui/CloneDialog.h b/src/gui/CloneDialog.h index fe2787e3da..febf9d480d 100644 --- a/src/gui/CloneDialog.h +++ b/src/gui/CloneDialog.h @@ -34,6 +34,9 @@ class CloneDialog : public QDialog explicit CloneDialog(DatabaseWidget* parent = nullptr, Database* db = nullptr, Entry* entry = nullptr); ~CloneDialog() override; +signals: + void entryCloned(Entry* clone); + private: QScopedPointer m_ui; diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 882a87f491..72001722e2 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -447,9 +447,16 @@ void DatabaseWidget::cloneEntry() } auto cloneDialog = new CloneDialog(this, m_db.data(), currentEntry); + connect(cloneDialog, &CloneDialog::entryCloned, this, &DatabaseWidget::entryCloned); cloneDialog->show(); } +void DatabaseWidget::entryCloned(Entry* clone) +{ + m_entryView->setCurrentEntry(clone); + refreshSearch(); +} + void DatabaseWidget::showTotp() { auto currentEntry = currentSelectedEntry(); diff --git a/src/gui/DatabaseWidget.h b/src/gui/DatabaseWidget.h index daca949e1b..094b10f2be 100644 --- a/src/gui/DatabaseWidget.h +++ b/src/gui/DatabaseWidget.h @@ -241,6 +241,7 @@ public slots: private slots: void entryActivationSignalReceived(Entry* entry, EntryModel::ModelColumn column); + void entryCloned(Entry* clone); void switchBackToEntryEdit(); void switchToHistoryView(Entry* entry); void switchToEntryEdit(Entry*);