From a7f11c423eb0364f4e93feef46e62722fcf3f4d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Mon, 7 Jul 2014 09:15:43 +0200 Subject: [PATCH] [klipper] Better track editing from the ClipboardJob The ClipboardJob does no longer set the result directly when editing is invoked, but instead connects to a new signal emitted from Klipper. As soon as editing finished the result gets emitted. This is useful to block the UI for further editing while an entry gets edited. --- klipper/clipboardjob.cpp | 12 +++++++++++- klipper/klipper.cpp | 7 ++++++- klipper/klipper.h | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/klipper/clipboardjob.cpp b/klipper/clipboardjob.cpp index 87e5f3c1c..d84d01471 100644 --- a/klipper/clipboardjob.cpp +++ b/klipper/clipboardjob.cpp @@ -57,8 +57,18 @@ void ClipboardJob::start() m_klipper->history()->remove(item); setResult(true); } else if (operation == QLatin1String("edit")) { + connect(m_klipper, &Klipper::editFinished, this, + [this, item](HistoryItemConstPtr editedItem, int result) { + if (item != editedItem) { + // not our item + return; + } + setResult(result); + emitResult(); + } + ); m_klipper->editData(item); - setResult(true); + return; } else if (operation == QLatin1String("barcode")) { #ifdef HAVE_PRISON m_klipper->showBarcode(item); diff --git a/klipper/klipper.cpp b/klipper/klipper.cpp index 4276d69d6..2825a33c8 100644 --- a/klipper/klipper.cpp +++ b/klipper/klipper.cpp @@ -856,7 +856,12 @@ void Klipper::editData(const QSharedPointer< const HistoryItem > &item) buttons->button(QDialogButtonBox::Ok)->setShortcut(Qt::CTRL | Qt::Key_Return); connect(buttons, &QDialogButtonBox::accepted, dlg.data(), &QDialog::accept); connect(buttons, &QDialogButtonBox::rejected, dlg.data(), &QDialog::reject); - connect(dlg, &QDialog::finished, dlg.data(), &QDialog::deleteLater); + connect(dlg.data(), &QDialog::finished, dlg.data(), + [this, dlg, item](int result) { + emit editFinished(item, result); + dlg->deleteLater(); + } + ); KTextEdit *edit = new KTextEdit( dlg ); if (item) { diff --git a/klipper/klipper.h b/klipper/klipper.h index f2321622b..8bb4286f3 100644 --- a/klipper/klipper.h +++ b/klipper/klipper.h @@ -128,6 +128,7 @@ protected: Q_SIGNALS: void passivePopup(const QString& caption, const QString& text); + void editFinished(QSharedPointer< const HistoryItem > item, int result); public Q_SLOTS: void slotPopupMenu();