From a754a1323234be2feb9945128837875d87c3cc34 Mon Sep 17 00:00:00 2001 From: Sami Nurmenniemi Date: Tue, 7 Nov 2017 15:09:55 +0200 Subject: Fix cancel button on WiFi passphrase screen Task-number: QTBUG-64230 Change-Id: I3859293f2d9422be9a253143544470f39be937ea Reviewed-by: Kari Oikarinen Reviewed-by: Teemu Holappa --- .../connman/qnetworksettingsuseragent_p.cpp | 20 ++++++++++++++++---- .../connman/qnetworksettingsuseragent_p.h | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) (limited to 'src/networksettings') diff --git a/src/networksettings/connman/qnetworksettingsuseragent_p.cpp b/src/networksettings/connman/qnetworksettingsuseragent_p.cpp index 4d6e10b..ede5095 100644 --- a/src/networksettings/connman/qnetworksettingsuseragent_p.cpp +++ b/src/networksettings/connman/qnetworksettingsuseragent_p.cpp @@ -44,8 +44,14 @@ QNetworkSettingsUserAgentPrivate::QNetworkSettingsUserAgentPrivate(QNetworkSetti void QNetworkSettingsUserAgentPrivate::cancel() { // handle method call net.connman.Agent.Cancel + if (!m_pendingReply) + return; + m_pendingReply = false; - QMetaObject::invokeMethod(parent(), "Cancel"); + QDBusMessage errorMessage = m_pendingMessage.createErrorReply( + QStringLiteral("net.connman.Agent.Error.Canceled"), + QStringLiteral("")); + QDBusConnection::systemBus().send(errorMessage); } void QNetworkSettingsUserAgentPrivate::release() @@ -74,8 +80,9 @@ QVariantMap QNetworkSettingsUserAgentPrivate::RequestInput(const QDBusObjectPath Q_UNUSED(path); Q_UNUSED(params); msg.setDelayedReply(true); - m_reply = msg.createReply(); + m_pendingReply = true; + m_pendingMessage = msg; emit q->showUserCredentialsInput(); return QVariantMap(); } @@ -83,9 +90,14 @@ QVariantMap QNetworkSettingsUserAgentPrivate::RequestInput(const QDBusObjectPath void QNetworkSettingsUserAgentPrivate::setPassphrase(const QString& passphrase) { m_passphrase = passphrase; + if (!m_pendingReply) + return; + QVariantMap response; response[PropertyPassphrase] = m_passphrase; - m_reply << response; + + QDBusMessage reply = m_pendingMessage.createReply(); + reply << response; m_pendingReply = false; - QDBusConnection::systemBus().send(m_reply); + QDBusConnection::systemBus().send(reply); } diff --git a/src/networksettings/connman/qnetworksettingsuseragent_p.h b/src/networksettings/connman/qnetworksettingsuseragent_p.h index fb96645..248b9ad 100644 --- a/src/networksettings/connman/qnetworksettingsuseragent_p.h +++ b/src/networksettings/connman/qnetworksettingsuseragent_p.h @@ -72,7 +72,7 @@ public Q_SLOTS: // Dbus methods void registerAgent(); private: QNetworkSettingsUserAgent *q_ptr; - QDBusMessage m_reply; + QDBusMessage m_pendingMessage; bool m_pendingReply; QString m_passphrase; }; -- cgit v1.2.3