forked from qt-creator/qt-creator
QmlDesigner.propertyEditor: enables caching for WidgetLoader
This commit is contained in:
@@ -839,7 +839,7 @@ private:
|
||||
QWidget *m_widget;
|
||||
QmlComponent *m_component;
|
||||
QVBoxLayout *m_layout;
|
||||
|
||||
QHash<QString, QWidget*> m_cachedWidgets;
|
||||
};
|
||||
|
||||
QUrl WidgetLoader::source() const
|
||||
@@ -872,6 +872,10 @@ void WidgetLoader::setSource(const QUrl &source)
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_cachedWidgets.contains(source.toString())) {
|
||||
m_widget = m_cachedWidgets.value(source.toString());
|
||||
m_widget->show();
|
||||
} else {
|
||||
m_component = new QmlComponent(qmlEngine(this), m_source, this);
|
||||
|
||||
if (m_component) {
|
||||
@@ -895,13 +899,14 @@ void WidgetLoader::setSource(const QUrl &source)
|
||||
if (obj) {
|
||||
QWidget *widget = qobject_cast<QWidget *>(obj);
|
||||
if (widget) {
|
||||
m_cachedWidgets.insert(source.toString(), widget);
|
||||
m_widget = widget;
|
||||
m_layout->addWidget(m_widget);
|
||||
m_widget->show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
QWidget *WidgetLoader::widget() const
|
||||
|
||||
Reference in New Issue
Block a user