summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java2
-rw-r--r--src/plugins/platforms/android/androidjniclipboard.cpp6
-rw-r--r--src/plugins/platforms/android/androidjniclipboard.h1
-rw-r--r--src/plugins/platforms/android/qandroidplatformclipboard.cpp4
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)