diff --git a/CMakeLists.txt b/CMakeLists.txt index 24242a2..8e09be3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,8 +25,8 @@ find_package (KF5 ${KF5_MIN_VERSION} Notifications Auth KCMUtils + GuiAddons ) - include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) @@ -73,7 +73,8 @@ target_link_libraries(krunner_pass KF5::Runner Qt5::Widgets KF5::Service KF5::Plasma KF5::ConfigWidgets - KF5::Notifications) + KF5::Notifications + KF5::GuiAddons) add_dependencies(krunner_pass kcm_krunner_pass) diff --git a/pass.cpp b/pass.cpp index da6adb9..3151d7f 100644 --- a/pass.cpp +++ b/pass.cpp @@ -26,6 +26,8 @@ #include #include #include +#include +#include #include #include @@ -185,10 +187,14 @@ void Pass::match(Plasma::RunnerContext &context) void Pass::clip(const QString &msg) { - QClipboard *cb = QApplication::clipboard(); - cb->setText(msg); - QTimer::singleShot(timeout * 1000, cb, [cb]() { - cb->setText(QString()); + auto md = new QMimeData; + auto kc = KSystemClipboard::instance(); + // https://phabricator.kde.org/D12539 + md->setText(msg); + md->setData(QStringLiteral("x-kde-passwordManagerHint"), "secret"); + kc->setMimeData(md,QClipboard::Clipboard); + QTimer::singleShot(timeout * 1000, kc, [kc]() { + kc->clear(QClipboard::Clipboard); }); }