summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--platform/javascript/os_javascript.cpp17
-rw-r--r--platform/javascript/os_javascript.h1
2 files changed, 18 insertions, 0 deletions
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp
index 6c4764bf7b..502463a6f1 100644
--- a/platform/javascript/os_javascript.cpp
+++ b/platform/javascript/os_javascript.cpp
@@ -819,6 +819,23 @@ void OS_JavaScript::set_clipboard(const String &p_text) {
ERR_FAIL_COND(err);
}
+String OS_JavaScript::get_clipboard() const {
+ /* clang-format off */
+ EM_ASM({
+ try {
+ navigator.clipboard.readText().then(function (result) {
+ ccall('update_clipboard', 'void', ['string'], [result]);
+ }).catch(function (e) {
+ // Fail graciously.
+ });
+ } catch (e) {
+ // Fail graciously.
+ }
+ });
+ /* clang-format on */
+ return this->OS::get_clipboard();
+}
+
// Lifecycle
int OS_JavaScript::get_current_video_driver() const {
return video_driver_index;
diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h
index 7f9706b711..27b23a4673 100644
--- a/platform/javascript/os_javascript.h
+++ b/platform/javascript/os_javascript.h
@@ -134,6 +134,7 @@ public:
virtual const char *get_audio_driver_name(int p_driver) const;
virtual void set_clipboard(const String &p_text);
+ virtual String get_clipboard() const;
virtual MainLoop *get_main_loop() const;
void run_async();