wasm: use module_property instead of global(“Module”)

Depending on build options, the module can have a different
name, or be a non-global object. We were already using
module_property in many places, but some were missing.

In the case of the clipboard code, there is actually
no need to export all of the C++ functions to JavaScript
and then resolve them from the module; instead call them
directly.

Change-Id: I83aa3ad01ad961d48e21f0994e0c205d833cbe8a
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
This commit is contained in:
Morten Sørvig 2021-05-21 12:03:58 +02:00
parent 586027f7fd
commit a97445274a
2 changed files with 7 additions and 22 deletions

View File

@ -75,11 +75,7 @@ static void qClipboardCutTo(val event)
QWindowSystemInterface::handleKeyEvent<QWindowSystemInterface::SynchronousDelivery>( QWindowSystemInterface::handleKeyEvent<QWindowSystemInterface::SynchronousDelivery>(
0, QEvent::KeyPress, Qt::Key_X, Qt::ControlModifier, "X"); 0, QEvent::KeyPress, Qt::Key_X, Qt::ControlModifier, "X");
} }
event["clipboardData"].call<void>("setData", getClipboardFormat(), getClipboardData());
val module = val::global("Module");
val clipdata = module.call<val>("qtGetClipboardData");
val clipFormat = module.call<val>("qtGetClipboardFormat");
event["clipboardData"].call<void>("setData", clipFormat, clipdata);
event.call<void>("preventDefault"); event.call<void>("preventDefault");
} }
@ -90,19 +86,14 @@ static void qClipboardCopyTo(val event)
QWindowSystemInterface::handleKeyEvent<QWindowSystemInterface::SynchronousDelivery>( QWindowSystemInterface::handleKeyEvent<QWindowSystemInterface::SynchronousDelivery>(
0, QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier, "C"); 0, QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier, "C");
} }
event["clipboardData"].call<void>("setData", getClipboardFormat(), getClipboardData());
val module = val::global("Module");
val clipdata = module.call<val>("qtGetClipboardData");
val clipFormat = module.call<val>("qtGetClipboardFormat");
event["clipboardData"].call<void>("setData", clipFormat, clipdata);
event.call<void>("preventDefault"); event.call<void>("preventDefault");
} }
static void qClipboardPasteTo(val event) static void qClipboardPasteTo(val event)
{ {
bool hasClipboardApi = QWasmIntegration::get()->getWasmClipboard()->hasClipboardApi; bool hasClipboardApi = QWasmIntegration::get()->getWasmClipboard()->hasClipboardApi;
val clipdata = hasClipboardApi ? val clipdata = hasClipboardApi ? getClipboardData() :
val::global("Module").call<val>("qtGetClipboardData") :
event["clipboardData"].call<val>("getData", val("text")); event["clipboardData"].call<val>("getData", val("text"));
const QString qstr = QWasmString::toQString(clipdata); const QString qstr = QWasmString::toQString(clipdata);
@ -114,9 +105,6 @@ static void qClipboardPasteTo(val event)
} }
EMSCRIPTEN_BINDINGS(qtClipboardModule) { EMSCRIPTEN_BINDINGS(qtClipboardModule) {
function("qtGetClipboardData", &getClipboardData);
function("qtGetClipboardFormat", &getClipboardFormat);
function("qtPasteClipboardData", &pasteClipboardData);
function("qtClipboardPromiseResolve", &qClipboardPromiseResolve); function("qtClipboardPromiseResolve", &qClipboardPromiseResolve);
function("qtClipboardCutTo", &qClipboardCutTo); function("qtClipboardCutTo", &qClipboardCutTo);
function("qtClipboardCopyTo", &qClipboardCopyTo); function("qtClipboardCopyTo", &qClipboardCopyTo);
@ -212,7 +200,7 @@ void QWasmClipboard::readTextFromClipboard()
if (QWasmIntegration::get()->getWasmClipboard()->hasClipboardApi) { if (QWasmIntegration::get()->getWasmClipboard()->hasClipboardApi) {
val navigator = val::global("navigator"); val navigator = val::global("navigator");
val textPromise = navigator["clipboard"].call<val>("readText"); val textPromise = navigator["clipboard"].call<val>("readText");
val readTextResolve = val::global("Module")["qtClipboardPromiseResolve"]; val readTextResolve = val::module_property("qtClipboardPromiseResolve");
textPromise.call<val>("then", readTextResolve); textPromise.call<val>("then", readTextResolve);
} }
} }
@ -220,10 +208,7 @@ void QWasmClipboard::readTextFromClipboard()
void QWasmClipboard::writeTextToClipboard() void QWasmClipboard::writeTextToClipboard()
{ {
if (QWasmIntegration::get()->getWasmClipboard()->hasClipboardApi) { if (QWasmIntegration::get()->getWasmClipboard()->hasClipboardApi) {
val module = val::global("Module");
val txt = module.call<val>("qtGetClipboardData");
val format = module.call<val>("qtGetClipboardFormat");
val navigator = val::global("navigator"); val navigator = val::global("navigator");
navigator["clipboard"].call<void>("writeText", txt); navigator["clipboard"].call<void>("writeText", getClipboardData());
} }
} }

View File

@ -36,7 +36,7 @@ using namespace emscripten;
val QWasmString::fromQString(const QString &str) val QWasmString::fromQString(const QString &str)
{ {
static const val UTF16ToString( static const val UTF16ToString(
val::global("Module")["UTF16ToString"]); val::module_property("UTF16ToString"));
auto ptr = quintptr(str.utf16()); auto ptr = quintptr(str.utf16());
return UTF16ToString(val(ptr)); return UTF16ToString(val(ptr));
@ -49,7 +49,7 @@ QString QWasmString::toQString(const val &v)
return result; return result;
static const val stringToUTF16( static const val stringToUTF16(
val::global("Module")["stringToUTF16"]); val::module_property("stringToUTF16"));
static const val length("length"); static const val length("length");
int len = v[length].as<int>(); int len = v[length].as<int>();