Changes QSA 1.2.0
Product:
QSA
Version:
1.2.0
QSA 1.2.0 is a minor release which is a port of QSA 1.1.3 from Qt 3 to
Qt 4. It provides no new features but a significant part of the engine
is rewritten to match the meta object model of Qt 4. There have also
been made some changes to the public API to better fit QSA 1.2.0 into
the Qt 4 programming world.
Some minor changes have been made to the public API to accomodate for
changes in Qt 4:
QSArgument is redundant as QVariant in Qt 4 supports QObject*,
QWidget* and void*, and any other user defined type. The same is thus
true for QSArgumentList which is replaced by QVariantList. The
following replacements can be used to access the old constructions.
QSArgument::variant() -> the variant itself
QSArgument::qobject() -> qvariant_cast<QObject *>(variant);
QSArgument::ptr() -> qvariant_cast<PointerType or void *>(variant);
QSArgument::type() -> QVariant::type()
QSArgument::typeName() -> QVariant::typeName();
Please note that qvariant_cast for arbitrary pointer types requires
the type to be registered with QMetaType.
QSArgument::Invalid -> QVariant::Invalid
QSArgument::Variant -> not relevant anymore
QSArgument::QObjectPtr -> QMetaType::QObjectStar
QSArgument::VoidPointer -> QMetaType::VoidStar or type for registered metatype
********************************************************************************
In Qt 3 all meta objects were registered in a global map so that one
could always query for a QMetaObject through its name. This map was in
QSA used to validate cast for QObject based subclasses objects passed
as return values of slots.
In Qt 4 this map does not exist anymore so QSA does not have this ability
off hand. This error will manifest itself if you have a slot returning
a QObject or QWidget subclass.
To compensate for the global map, we provide the possibility to
register meta objects with the QSA runtime so that these checks can
still be made using the function:
QSInterpterer::registerMetaobject();
Most relevant QObject subclasses from the Qt library are already
preregistered with the QSA runtime.
This also introduces a minor API change to compensate for the new
model:
Replaced functions:
QSObjectFactory::registerClass(const QString &className,
QObject *staticInstance);
QSObjectFactory::registerClass(const QString &className,
const QString &cppClassName,
QObject *staticInstance);
with
QSObjectFactory::registerClass(const QString &className,
const QMetaObject *metaObject
QObject *staticInstance);
********************************************************************************
QSStackTrace::toString() -> QSinterpreter::stackTraceString();
********************************************************************************
The function:
Q3TextEdit *QSEditor::editor() has been removed.
********************************************************************************
The Tulip tool classes are used in the public API rather than the Qt 3
container classes, QValueList, QPtrList etc.
********************************************************************************
********************************************************************************
QSA 1.2.0 also inherits several changes from 1.1.3
********************************************************************************
Interpreter/Language:
* using var statements inside a with statement would crash. This
could not be made to work due to architecual limitations so this
will now produce a parse error.
* Bugfix: internal debug() and print() functions would sometimes
produce faulty output
* Bugfix: millisecond presicion of Date objects was sometimes not
maintained properly
* Bugfix: slots taking QStringLists and QValueList<QVariant> where
not resolved correctly.
********************************************************************************
QSWorkbench:
* Bugfix: Two workbench instances could not be active simultaneously.
********************************************************************************
QSInterpreter:
* Bugfix: interpreter would sometimes crash when returning a QObject
that was deleted.
********************************************************************************
QSUtilFactory:
* Process.stdout and Process.stderr would sometimes contain junk at
the end.
********************************************************************************
QSEditor:
* Bugfix: it was not possible to undo commenting of code.

