From dca394096fff0f7b48768e047f2b180abf000d12 Mon Sep 17 00:00:00 2001 From: Lars Schmertmann Date: Fri, 27 Aug 2021 14:07:39 +0200 Subject: [PATCH] Adapt the implementation of QDesktopService on iOS to Android Change-Id: I8c2048155c5c065b5cdf7ad4cef9d8a446a0561d Reviewed-by: Edward Welbourne --- src/plugins/platforms/ios/qiosservices.mm | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/plugins/platforms/ios/qiosservices.mm b/src/plugins/platforms/ios/qiosservices.mm index 7222bf67937..41c75dcac8f 100644 --- a/src/plugins/platforms/ios/qiosservices.mm +++ b/src/plugins/platforms/ios/qiosservices.mm @@ -42,6 +42,7 @@ #include #include #include +#include #include @@ -56,6 +57,7 @@ bool QIOSServices::openUrl(const QUrl &url) return false; } + // avoid recursing back into self if (url == m_handlingUrl) return false; @@ -94,16 +96,12 @@ bool QIOSServices::openDocument(const QUrl &url) /* Callback from iOS that the application should handle a URL */ bool QIOSServices::handleUrl(const QUrl &url) { - QUrl previouslyHandling = m_handlingUrl; - m_handlingUrl = url; + QScopedValueRollback rollback(m_handlingUrl, url); // FIXME: Add platform services callback from QDesktopServices::setUrlHandler // so that we can warn the user if calling setUrlHandler without also setting // up the matching keys in the Info.plist file (CFBundleURLTypes and friends). - bool couldHandle = QDesktopServices::openUrl(url); - - m_handlingUrl = previouslyHandling; - return couldHandle; + return QDesktopServices::openUrl(url); } QT_END_NAMESPACE