4#include <emscripten/bind.h>
10#include <qpa/qplatforminputcontext.h>
14#include <QKeySequence>
15#include <qpa/qwindowsysteminterface.h>
23 int length =
event[
"target"][
"value"][
"length"].as<
int>();
27 emscripten::val _incomingCharVal =
event[
"data"];
28 if (_incomingCharVal != emscripten::val::undefined() && _incomingCharVal != emscripten::val::null()) {
37 event[
"target"].set(
"value",
"");
46 emscripten::val document = emscripten::val::global(
"document");
47 m_inputElement = document.call<emscripten::val>(
"createElement", std::string(
"input"));
49 m_inputElement.set(
"style",
"position:absolute;left:-1000px;top:-1000px");
53 auto callback = [=](emscripten::val) {
55 inputPanelIsOpen =
false;
63 document.call<
void>(
"addEventListener", inputType,
64 emscripten::val::module_property(
"qtInputContextCallback"),
65 emscripten::val(
false));
67 emscripten::val(
quintptr(
reinterpret_cast<void *
>(
this))));
68 emscripten::val body = document[
"body"];
79 emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, 0, NULL);
84 m_focusWindow = focusWindow;
87emscripten::val QWasmInputContext::inputHandlerElementForFocusedWindow()
90 return emscripten::val::undefined();
91 return static_cast<QWasmWindow *
>(m_focusWindow->handle())->inputHandlerElement();
102 && !inputPanelIsOpen) {
118 emscripten::val inputWrapper = inputHandlerElementForFocusedWindow();
119 if (inputWrapper.isUndefined())
125 inputPanelIsOpen =
true;
133 inputPanelIsOpen =
false;
143 if (inputString.size() > 2 && (thisKey <
Qt::Key_F35
150 }
else if (thisKey ==
Qt::Key(0)) {
156 thisKey,
keys[0].keyboardModifiers(),
157 eventType == EMSCRIPTEN_EVENT_KEYDOWN ? inputString :
QStringLiteral(
""));
void focusWindowChanged(QWindow *focusWindow)
This signal is emitted when the focused window changes.
The QKeySequence class encapsulates a key sequence as used by shortcuts.
static QKeySequence fromString(const QString &str, SequenceFormat format=PortableText)
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
virtual void update(Qt::InputMethodQueries)
Notification on editor updates.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromStdString(const std::string &s)
void showInputPanel() override
Request to show input panel.
~QWasmInputContext() override
emscripten::val m_inputElement
void hideInputPanel() override
Request to hide input panel.
void update(Qt::InputMethodQueries) override
Notification on editor updates.
void focusWindowChanged(QWindow *focusWindow)
void inputStringChanged(QString &, int eventType, QWasmInputContext *context)
static QWasmIntegration * get()
static bool handleKeyEvent(QWindow *window, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString &text=QString(), bool autorep=false, ushort count=1)
Combined button and popup list for selecting options.
EMSCRIPTEN_BINDINGS(qtStdwebCalback)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction function
GLenum GLuint GLenum GLsizei length
#define QStringLiteral(str)
static void inputCallback(emscripten::val event)