src/script/bridge/qscriptclassobject.cpp
changeset 19 fcece45ef507
parent 18 2f34d5167611
child 30 5dc02b23752f
equal deleted inserted replaced
18:2f34d5167611 19:fcece45ef507
   224     QScriptObject *obj = static_cast<QScriptObject*>(callee);
   224     QScriptObject *obj = static_cast<QScriptObject*>(callee);
   225     QScriptObjectDelegate *delegate = obj->delegate();
   225     QScriptObjectDelegate *delegate = obj->delegate();
   226     QScriptClass *scriptClass = static_cast<ClassObjectDelegate*>(delegate)->scriptClass();
   226     QScriptClass *scriptClass = static_cast<ClassObjectDelegate*>(delegate)->scriptClass();
   227 
   227 
   228     QScriptEnginePrivate *eng_p = scriptEngineFromExec(exec);
   228     QScriptEnginePrivate *eng_p = scriptEngineFromExec(exec);
   229     //JSC::ExecState *oldFrame = eng_p->currentFrame;
   229     JSC::ExecState *oldFrame = eng_p->currentFrame;
   230     eng_p->pushContext(exec, JSC::JSValue(), args, callee, true);
   230     eng_p->pushContext(exec, JSC::JSValue(), args, callee, true);
   231     QScriptContext *ctx = eng_p->contextForFrame(eng_p->currentFrame);
   231     QScriptContext *ctx = eng_p->contextForFrame(eng_p->currentFrame);
   232 
   232 
   233     QScriptValue defaultObject = ctx->thisObject();
   233     QScriptValue defaultObject = ctx->thisObject();
   234     QScriptValue result = qvariant_cast<QScriptValue>(scriptClass->extension(QScriptClass::Callable, qVariantFromValue(ctx)));
   234     QScriptValue result = qvariant_cast<QScriptValue>(scriptClass->extension(QScriptClass::Callable, qVariantFromValue(ctx)));
   235     if (!result.isObject())
   235     if (!result.isObject())
   236         result = defaultObject;
   236         result = defaultObject;
       
   237     eng_p->popContext();
       
   238     eng_p->currentFrame = oldFrame;
   237     return JSC::asObject(eng_p->scriptValueToJSCValue(result));
   239     return JSC::asObject(eng_p->scriptValueToJSCValue(result));
   238 }
   240 }
   239 
   241 
   240 bool ClassObjectDelegate::hasInstance(QScriptObject* object, JSC::ExecState *exec,
   242 bool ClassObjectDelegate::hasInstance(QScriptObject* object, JSC::ExecState *exec,
   241                                       JSC::JSValue value, JSC::JSValue proto)
   243                                       JSC::JSValue value, JSC::JSValue proto)