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>(
0, QEvent::KeyPress, Qt::Key_X, Qt::ControlModifier, "X");
}
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["clipboardData"].call<void>("setData", getClipboardFormat(), getClipboardData());
event.call<void>("preventDefault");
}
@ -90,19 +86,14 @@ static void qClipboardCopyTo(val event)
QWindowSystemInterface::handleKeyEvent<QWindowSystemInterface::SynchronousDelivery>(
0, QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier, "C");
}
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["clipboardData"].call<void>("setData", getClipboardFormat(), getClipboardData());
event.call<void>("preventDefault");
}
static void qClipboardPasteTo(val event)
{
bool hasClipboardApi = QWasmIntegration::get()->getWasmClipboard()->hasClipboardApi;
val clipdata = hasClipboardApi ?
val::global("Module").call<val>("qtGetClipboardData") :
val clipdata = hasClipboardApi ? getClipboardData() :
event["clipboardData"].call<val>("getData", val("text"));
const QString qstr = QWasmString::toQString(clipdata);
@ -114,9 +105,6 @@ static void qClipboardPasteTo(val event)
}
EMSCRIPTEN_BINDINGS(qtClipboardModule) {
function("qtGetClipboardData", &getClipboardData);
function("qtGetClipboardFormat", &getClipboardFormat);
function("qtPasteClipboardData", &pasteClipboardData);
function("qtClipboardPromiseResolve", &qClipboardPromiseResolve);
function("qtClipboardCutTo", &qClipboardCutTo);
function("qtClipboardCopyTo", &qClipboardCopyTo);
@ -212,7 +200,7 @@ void QWasmClipboard::readTextFromClipboard()
if (QWasmIntegration::get()->getWasmClipboard()->hasClipboardApi) {
val navigator = val::global("navigator");
val textPromise = navigator["clipboard"].call<val>("readText");
val readTextResolve = val::global("Module")["qtClipboardPromiseResolve"];
val readTextResolve = val::module_property("qtClipboardPromiseResolve");
textPromise.call<val>("then", readTextResolve);
}
}
@ -220,10 +208,7 @@ void QWasmClipboard::readTextFromClipboard()
void QWasmClipboard::writeTextToClipboard()
{
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");
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)
{
static const val UTF16ToString(
val::global("Module")["UTF16ToString"]);
val::module_property("UTF16ToString"));
auto ptr = quintptr(str.utf16());
return UTF16ToString(val(ptr));
@ -49,7 +49,7 @@ QString QWasmString::toQString(const val &v)
return result;
static const val stringToUTF16(
val::global("Module")["stringToUTF16"]);
val::module_property("stringToUTF16"));
static const val length("length");
int len = v[length].as<int>();