summaryrefslogtreecommitdiffstats
path: root/tools/designer/src/sharedcomponents.pri
diff options
context:
space:
mode:
authorKent Hansen <khansen@trolltech.com>2009-07-10 12:27:16 (GMT)
committerKent Hansen <khansen@trolltech.com>2009-07-10 12:27:16 (GMT)
commit75bc0215080fcafea9ba1bafedd980d9ac71bf9d (patch)
tree61156a5b2eaf3377b304beb6df59343750d21804 /tools/designer/src/sharedcomponents.pri
parent0579f4be2e79bb95c963a7e2368b6ee797c25e90 (diff)
downloadQt-75bc0215080fcafea9ba1bafedd980d9ac71bf9d.zip
Qt-75bc0215080fcafea9ba1bafedd980d9ac71bf9d.tar.gz
Qt-75bc0215080fcafea9ba1bafedd980d9ac71bf9d.tar.bz2
implement ability to dynamically change class of script objects
With an object created by QScriptEngine::newObject(), it should be possible to call QScriptValue::setClass() to dynamically change the behavior of that object. Similarly, it should be possible to promote plain script objects to QObject (QVariant) wrappers by calling the overload of QScriptEngine::newQObject() (newVariant()) that takes a script object as the first argument. This commit implements this capability. The premise is the (internal) QScriptObject class, which inherits JSC::JSObject. It reimplements all the methods for getting/setting properties etc. Then there's a level of indirection to facilitate dynamic change of the class: Each QScriptObject can have a delegate associated with it that will handle operations on the object. By default there is no delegate, so the object behaves as a normal JS object, as you expect. However, once a delegate is set (e.g., when QScriptValue::setScriptClass() is called), QScriptObject will give the delegate the chance to handle the object operation. In addition to a delegate implementation for QScriptClass-based objects, there are also delegates for QObject and QVariant wrappers. These replace the QObjectWrapperObject and QVariantWrapperObject classes.
Diffstat (limited to 'tools/designer/src/sharedcomponents.pri')
0 files changed, 0 insertions, 0 deletions