diff --git a/src/controls/UrlButton.qml b/src/controls/UrlButton.qml --- a/src/controls/UrlButton.qml +++ b/src/controls/UrlButton.qml @@ -18,16 +18,16 @@ */ import QtQuick 2.2 -import org.kde.kirigami 2.0 as Kirigami +import org.kde.kirigami.private 2.6 as KirigamiPrivate import QtQuick.Controls 2.1 as QQC2 /** * A link button that contains a URL * * It will open the url by default, allow to copy it if triggered with the * secondary mouse button. * - * @since 5.52 + * @since 5.63 * @since org.kde.kirigami 2.6 */ LinkButton @@ -49,7 +49,7 @@ id: menu QQC2.MenuItem { text: qsTr("Copy link address") - onClicked: app.copyTextToClipboard(button.url) + onClicked: KirigamiPrivate.CopyHelperPrivate.copyTextToClipboard(button.url) } } } diff --git a/src/kirigamiplugin.cpp b/src/kirigamiplugin.cpp --- a/src/kirigamiplugin.cpp +++ b/src/kirigamiplugin.cpp @@ -35,6 +35,8 @@ #include #include #include +#include +#include #include "libkirigami/platformtheme.h" @@ -45,6 +47,16 @@ #include #endif +class CopyHelperPrivate : public QObject +{ + Q_OBJECT + public: + Q_INVOKABLE static void copyTextToClipboard(const QString& text) + { + qGuiApp->clipboard()->setText(text); + } +}; + QUrl KirigamiPlugin::componentUrl(const QString &fileName) const { for (const QString &style : qAsConst(m_stylesFallbackChain)) { @@ -181,6 +193,7 @@ qmlRegisterType(componentUrl(QStringLiteral("AboutPage.qml")), uri, 2, 6, "AboutPage"); qmlRegisterType(componentUrl(QStringLiteral("LinkButton.qml")), uri, 2, 6, "LinkButton"); qmlRegisterType(componentUrl(QStringLiteral("UrlButton.qml")), uri, 2, 6, "UrlButton"); + qmlRegisterSingletonType("org.kde.kirigami.private", 2, 6, "CopyHelperPrivate", [] (QQmlEngine*, QJSEngine*) -> QObject* { return new CopyHelperPrivate; }); //2.7 qmlRegisterType(uri, 2, 7, "ColumnView"); @@ -203,5 +216,4 @@ qmlProtectModule(uri, 2); } -#include "moc_kirigamiplugin.cpp" - +#include "kirigamiplugin.moc"