diff options
4 files changed, 12 insertions, 1 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java index 899436a6fc..83e576095b 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java @@ -847,6 +847,8 @@ public class QtNative private static void clearClipData() { + if (Build.VERSION.SDK_INT >= 28 && m_clipboardManager != null && m_usePrimaryClip) + m_clipboardManager.clearPrimaryClip(); m_usePrimaryClip = false; } private static void setClipboardText(String text) diff --git a/src/plugins/platforms/android/androidjniclipboard.cpp b/src/plugins/platforms/android/androidjniclipboard.cpp index 671d0b56d0..c20ac456b1 100644 --- a/src/plugins/platforms/android/androidjniclipboard.cpp +++ b/src/plugins/platforms/android/androidjniclipboard.cpp @@ -63,9 +63,13 @@ namespace QtAndroidClipboard return; } } - void setClipboardMimeData(QMimeData *data) + void clearClipboardData() { QJNIObjectPrivate::callStaticMethod<void>(applicationClass(), "clearClipData"); + } + void setClipboardMimeData(QMimeData *data) + { + clearClipboardData(); if (data->hasText()) { QJNIObjectPrivate::callStaticMethod<void>(applicationClass(), "setClipboardText", "(Ljava/lang/String;)V", diff --git a/src/plugins/platforms/android/androidjniclipboard.h b/src/plugins/platforms/android/androidjniclipboard.h index e83e6b555c..96992340a6 100644 --- a/src/plugins/platforms/android/androidjniclipboard.h +++ b/src/plugins/platforms/android/androidjniclipboard.h @@ -53,6 +53,7 @@ namespace QtAndroidClipboard void setClipboardManager(QAndroidPlatformClipboard *manager); void setClipboardMimeData(QMimeData *data); QMimeData *getClipboardMimeData(); + void clearClipboardData(); void onClipboardDataChanged(JNIEnv */*env*/, jobject /*thiz*/); // Clipboard support } diff --git a/src/plugins/platforms/android/qandroidplatformclipboard.cpp b/src/plugins/platforms/android/qandroidplatformclipboard.cpp index 2912c58e8c..cc32bbf771 100644 --- a/src/plugins/platforms/android/qandroidplatformclipboard.cpp +++ b/src/plugins/platforms/android/qandroidplatformclipboard.cpp @@ -66,6 +66,10 @@ QMimeData *QAndroidPlatformClipboard::mimeData(QClipboard::Mode mode) void QAndroidPlatformClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode) { + if (!data) { + QtAndroidClipboard::clearClipboardData(); + return; + } if (data && supportsMode(mode)) QtAndroidClipboard::setClipboardMimeData(data); if (data != 0) |