diff options
-rw-r--r-- | src/declarative/fx/qfxtextinput.cpp | 54 | ||||
-rw-r--r-- | src/declarative/qml/qmlcompositetypemanager.cpp | 8 | ||||
-rw-r--r-- | src/declarative/qml/qmlcompositetypemanager_p.h | 1 | ||||
-rw-r--r-- | src/declarative/qml/qmlmetaproperty.cpp | 2 | ||||
-rw-r--r-- | src/declarative/qml/qmlmetatype.cpp | 7 | ||||
-rw-r--r-- | src/declarative/qml/qmlmetatype.h | 1 | ||||
-rw-r--r-- | src/declarative/qml/qmlparser.cpp | 2 |
7 files changed, 48 insertions, 27 deletions
diff --git a/src/declarative/fx/qfxtextinput.cpp b/src/declarative/fx/qfxtextinput.cpp index 9718321..4dd29cd 100644 --- a/src/declarative/fx/qfxtextinput.cpp +++ b/src/declarative/fx/qfxtextinput.cpp @@ -555,33 +555,33 @@ void QFxTextInput::selectAll() void QFxTextInputPrivate::init() { - Q_Q(QFxTextInput); - control->setCursorWidth(1); - control->setPasswordCharacter(QLatin1Char('*')); - control->setLayoutDirection(Qt::LeftToRight); - q->setSmoothTransform(smooth); - q->setAcceptedMouseButtons(Qt::LeftButton); - q->setFlag(QGraphicsItem::ItemHasNoContents, false); - q->setFlag(QGraphicsItem::ItemAcceptsInputMethod); - q->connect(control, SIGNAL(cursorPositionChanged(int,int)), - q, SLOT(cursorPosChanged())); - q->connect(control, SIGNAL(selectionChanged()), - q, SLOT(selectionChanged())); - q->connect(control, SIGNAL(textChanged(const QString &)), - q, SLOT(q_textChanged())); - q->connect(control, SIGNAL(accepted()), - q, SIGNAL(accepted())); - q->connect(control, SIGNAL(updateNeeded(const QRect &)), - // q, SLOT(dirtyCache(const QRect &))); - q, SLOT(updateAll())); - q->connect(control, SIGNAL(cursorPositionChanged(int,int)), - q, SLOT(updateAll())); - q->connect(control, SIGNAL(selectionChanged()), - q, SLOT(updateAll())); - q->updateSize(); - oldValidity = control->hasAcceptableInput(); - lastSelectionStart = 0; - lastSelectionEnd = 0; + Q_Q(QFxTextInput); + control->setCursorWidth(1); + control->setPasswordCharacter(QLatin1Char('*')); + control->setLayoutDirection(Qt::LeftToRight); + q->setSmoothTransform(smooth); + q->setAcceptedMouseButtons(Qt::LeftButton); + q->setFlag(QGraphicsItem::ItemHasNoContents, false); + q->setFlag(QGraphicsItem::ItemAcceptsInputMethod); + q->connect(control, SIGNAL(cursorPositionChanged(int,int)), + q, SLOT(cursorPosChanged())); + q->connect(control, SIGNAL(selectionChanged()), + q, SLOT(selectionChanged())); + q->connect(control, SIGNAL(textChanged(const QString &)), + q, SLOT(q_textChanged())); + q->connect(control, SIGNAL(accepted()), + q, SIGNAL(accepted())); + q->connect(control, SIGNAL(updateNeeded(const QRect &)), + // q, SLOT(dirtyCache(const QRect &))); + q, SLOT(updateAll())); + q->connect(control, SIGNAL(cursorPositionChanged(int,int)), + q, SLOT(updateAll())); + q->connect(control, SIGNAL(selectionChanged()), + q, SLOT(updateAll())); + q->updateSize(); + oldValidity = control->hasAcceptableInput(); + lastSelectionStart = 0; + lastSelectionEnd = 0; } void QFxTextInput::cursorPosChanged() diff --git a/src/declarative/qml/qmlcompositetypemanager.cpp b/src/declarative/qml/qmlcompositetypemanager.cpp index 45d5488..bcfbcc8 100644 --- a/src/declarative/qml/qmlcompositetypemanager.cpp +++ b/src/declarative/qml/qmlcompositetypemanager.cpp @@ -135,6 +135,14 @@ QmlCompositeTypeManager::QmlCompositeTypeManager(QmlEngine *e) { } +QmlCompositeTypeManager::~QmlCompositeTypeManager() +{ + for (Components::Iterator iter = components.begin(); iter != components.end();) { + (*iter)->release(); + iter = components.erase(iter); + } +} + QmlCompositeTypeData *QmlCompositeTypeManager::get(const QUrl &url) { QmlCompositeTypeData *unit = components.value(url.toString()); diff --git a/src/declarative/qml/qmlcompositetypemanager_p.h b/src/declarative/qml/qmlcompositetypemanager_p.h index b401b44..41cbe80 100644 --- a/src/declarative/qml/qmlcompositetypemanager_p.h +++ b/src/declarative/qml/qmlcompositetypemanager_p.h @@ -73,6 +73,7 @@ class QmlCompositeTypeManager : public QObject Q_OBJECT public: QmlCompositeTypeManager(QmlEngine *); + ~QmlCompositeTypeManager(); // Return a QmlCompositeTypeData for url. The QmlCompositeTypeData may be // cached. diff --git a/src/declarative/qml/qmlmetaproperty.cpp b/src/declarative/qml/qmlmetaproperty.cpp index f9b222f..fdba79e 100644 --- a/src/declarative/qml/qmlmetaproperty.cpp +++ b/src/declarative/qml/qmlmetaproperty.cpp @@ -219,6 +219,7 @@ void QmlMetaPropertyPrivate::initProperty(QObject *obj, const QString &name) if (enginePrivate && name.at(0).isUpper()) { // Attached property + //### needs to be done in a better way QmlCompositeTypeData *typeData = enginePrivate->typeManager.get(context->baseUrl()); @@ -230,6 +231,7 @@ void QmlMetaPropertyPrivate::initProperty(QObject *obj, const QString &name) if (attachedFunc != -1) type = QmlMetaProperty::Property | QmlMetaProperty::Attached; } + typeData->release(); } return; diff --git a/src/declarative/qml/qmlmetatype.cpp b/src/declarative/qml/qmlmetatype.cpp index c488c13..ac89d28 100644 --- a/src/declarative/qml/qmlmetatype.cpp +++ b/src/declarative/qml/qmlmetatype.cpp @@ -83,6 +83,7 @@ QT_BEGIN_NAMESPACE struct QmlMetaTypeData { + ~QmlMetaTypeData(); QList<QmlType *> types; typedef QHash<int, QmlType *> Ids; Ids idToType; @@ -101,6 +102,12 @@ struct QmlMetaTypeData Q_GLOBAL_STATIC(QmlMetaTypeData, metaTypeData) Q_GLOBAL_STATIC(QReadWriteLock, metaTypeDataLock) +QmlMetaTypeData::~QmlMetaTypeData() +{ + for (int i = 0; i < types.count(); ++i) + delete types.at(i); +} + class QmlTypePrivate { public: diff --git a/src/declarative/qml/qmlmetatype.h b/src/declarative/qml/qmlmetatype.h index 5ed9a5a..02c817d 100644 --- a/src/declarative/qml/qmlmetatype.h +++ b/src/declarative/qml/qmlmetatype.h @@ -151,6 +151,7 @@ public: private: friend class QmlMetaType; friend class QmlTypePrivate; + friend class QmlMetaTypeData; QmlType(int, int, int, QmlPrivate::Func, const char *, int); QmlType(int, int, int, QmlPrivate::Func, const char *, int, int, int, const QMetaObject *, QmlAttachedPropertiesFunc, const QMetaObject *, int, int, QmlPrivate::CreateFunc, const QMetaObject *, int, QmlCustomParser *); ~QmlType(); diff --git a/src/declarative/qml/qmlparser.cpp b/src/declarative/qml/qmlparser.cpp index 0f2a282..e102f05 100644 --- a/src/declarative/qml/qmlparser.cpp +++ b/src/declarative/qml/qmlparser.cpp @@ -80,6 +80,8 @@ QmlParser::Object::~Object() prop->release(); foreach(Property *prop, valueTypeProperties) prop->release(); + foreach(const DynamicProperty &prop, dynamicProperties) + if (prop.defaultValue) prop.defaultValue->release(); } const QMetaObject *Object::metaObject() const |