diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index 6c4764bf7b2..502463a6f1f 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 7f9706b7116..27b23a46733 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();