大規模な GTKmm/C++ アプリケーションで WebKitGTK+ を使用しています。JavaScriptCore を使用して、WebKitWebFrame および JSContext とやり取りしています。
JavaScript関数が呼び出されたときにGTK GUIコンポーネントと対話する必要があるため、私は立ち往生しています。この目的のために、私はJSObjectMakeFunctionWithCallback関数を見つけました。
JSStringRef str = JSStringCreateWithUTF8CString("ClickCallback");
JSObjectRef func = JSObjectMakeFunctionWithCallback(m_jsRef, str, ClickCallback);
JSObjectSetProperty(m_jsRef, JSContextGetGlobalObject(m_jsRef), str, func, kJSPropertyAttributeNone, NULL);
JSStringRelease(str);
コールバックは、def を使用して静的関数として定義する必要があります。
static JSValueRef ClickCallback(JSContextRef ctx, JSObjectRef func, JSObjectRef self, size_t argc, const JSValueRef argv[], JSValueRef* exception)
したがって、操作する必要がある GUI コンポーネントに戻るためにコールバックでオブジェクト インスタンスが必要になることを除いて、すべてが機能しています。
SO には同様の質問がたくさんありますが、ほとんどはオブジェクト インスタンスをコールバックに渡すことに焦点を当てています。この API でそれを行う方法がわかりません。
何か案は?