forked from qt-creator/qt-creator
QmlDesigner.PropertyEditor: Remove workarounds and unnecessary code
The workaround and optimizations do not seem to be required anymore. The property editor is now fast enough and no delay using a timer is required anymore. We also do not have to setup the Item pane upfront. Change-Id: Ieb64fcf5e37b74f1e755bc06674deede66a6f666 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
committed by
Thomas Hartmann
parent
4bdb0fb968
commit
0eab8c88b6
@@ -82,8 +82,7 @@ PropertyEditorView::PropertyEditorView(AsynchronousImageCache &imageCache,
|
|||||||
, m_propertyComponentGenerator{QmlDesigner::PropertyEditorQmlBackend::propertyEditorResourcesPath(),
|
, m_propertyComponentGenerator{QmlDesigner::PropertyEditorQmlBackend::propertyEditorResourcesPath(),
|
||||||
model()}
|
model()}
|
||||||
, m_locked(false)
|
, m_locked(false)
|
||||||
, m_setupCompleted(false)
|
|
||||||
, m_singleShotTimer(new QTimer(this))
|
|
||||||
{
|
{
|
||||||
m_qmlDir = PropertyEditorQmlBackend::propertyEditorResourcesPath();
|
m_qmlDir = PropertyEditorQmlBackend::propertyEditorResourcesPath();
|
||||||
|
|
||||||
@@ -109,32 +108,6 @@ PropertyEditorView::~PropertyEditorView()
|
|||||||
qDeleteAll(m_qmlBackendHash);
|
qDeleteAll(m_qmlBackendHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertyEditorView::setupPane([[maybe_unused]] const TypeName &typeName)
|
|
||||||
{
|
|
||||||
#ifndef QDS_USE_PROJECTSTORAGE
|
|
||||||
NodeMetaInfo metaInfo = model()->metaInfo(typeName);
|
|
||||||
|
|
||||||
QUrl qmlFile = PropertyEditorQmlBackend::getQmlFileUrl("Qt/ItemPane", metaInfo);
|
|
||||||
QUrl qmlSpecificsFile;
|
|
||||||
|
|
||||||
qmlSpecificsFile = PropertyEditorQmlBackend::getQmlFileUrl(typeName + "Specifics", metaInfo);
|
|
||||||
|
|
||||||
PropertyEditorQmlBackend *qmlBackend = m_qmlBackendHash.value(qmlFile.toString());
|
|
||||||
|
|
||||||
if (!qmlBackend) {
|
|
||||||
qmlBackend = new PropertyEditorQmlBackend(this, m_imageCache);
|
|
||||||
|
|
||||||
qmlBackend->initialSetup(typeName, qmlSpecificsFile, this);
|
|
||||||
qmlBackend->setSource(qmlFile);
|
|
||||||
|
|
||||||
m_stackedWidget->addWidget(qmlBackend->widget());
|
|
||||||
m_qmlBackendHash.insert(qmlFile.toString(), qmlBackend);
|
|
||||||
} else {
|
|
||||||
qmlBackend->initialSetup(typeName, qmlSpecificsFile, this);
|
|
||||||
}
|
|
||||||
#endif // QDS_USE_PROJECTSTORAGE
|
|
||||||
}
|
|
||||||
|
|
||||||
void PropertyEditorView::changeValue(const QString &name)
|
void PropertyEditorView::changeValue(const QString &name)
|
||||||
{
|
{
|
||||||
PropertyName propertyName = name.toUtf8();
|
PropertyName propertyName = name.toUtf8();
|
||||||
@@ -441,30 +414,6 @@ void PropertyEditorView::updateSize()
|
|||||||
frame->resize(m_stackedWidget->size());
|
frame->resize(m_stackedWidget->size());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertyEditorView::setupPanes()
|
|
||||||
{
|
|
||||||
if (isAttached()) {
|
|
||||||
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
|
||||||
setupPane("QtQuick.Item");
|
|
||||||
resetView();
|
|
||||||
m_setupCompleted = true;
|
|
||||||
QApplication::restoreOverrideCursor();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PropertyEditorView::delayedResetView()
|
|
||||||
{
|
|
||||||
if (m_timerId)
|
|
||||||
killTimer(m_timerId);
|
|
||||||
m_timerId = startTimer(50);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PropertyEditorView::timerEvent(QTimerEvent *timerEvent)
|
|
||||||
{
|
|
||||||
if (m_timerId == timerEvent->timerId())
|
|
||||||
resetView();
|
|
||||||
}
|
|
||||||
|
|
||||||
void PropertyEditorView::resetView()
|
void PropertyEditorView::resetView()
|
||||||
{
|
{
|
||||||
if (model() == nullptr)
|
if (model() == nullptr)
|
||||||
@@ -780,20 +729,6 @@ void PropertyEditorView::modelAttached(Model *model)
|
|||||||
if (debug)
|
if (debug)
|
||||||
qDebug() << Q_FUNC_INFO;
|
qDebug() << Q_FUNC_INFO;
|
||||||
|
|
||||||
m_locked = true;
|
|
||||||
|
|
||||||
if (!m_setupCompleted) {
|
|
||||||
QTimer::singleShot(50, this, [this] {
|
|
||||||
if (isAttached()) {
|
|
||||||
PropertyEditorView::setupPanes();
|
|
||||||
/* workaround for QTBUG-75847 */
|
|
||||||
reloadQml();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
m_locked = false;
|
|
||||||
|
|
||||||
resetView();
|
resetView();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -982,7 +917,7 @@ void PropertyEditorView::select()
|
|||||||
if (m_qmlBackEndForCurrentType)
|
if (m_qmlBackEndForCurrentType)
|
||||||
m_qmlBackEndForCurrentType->emitSelectionToBeChanged();
|
m_qmlBackEndForCurrentType->emitSelectionToBeChanged();
|
||||||
|
|
||||||
delayedResetView();
|
resetView();
|
||||||
|
|
||||||
auto nodes = selectedModelNodes();
|
auto nodes = selectedModelNodes();
|
||||||
|
|
||||||
@@ -1026,7 +961,7 @@ void PropertyEditorView::currentStateChanged(const ModelNode &node)
|
|||||||
Q_ASSERT(newQmlModelState.isValid());
|
Q_ASSERT(newQmlModelState.isValid());
|
||||||
if (debug)
|
if (debug)
|
||||||
qDebug() << Q_FUNC_INFO << newQmlModelState.name();
|
qDebug() << Q_FUNC_INFO << newQmlModelState.name();
|
||||||
delayedResetView();
|
resetView();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertyEditorView::instancePropertyChanged(const QList<QPair<ModelNode, PropertyName> > &propertyList)
|
void PropertyEditorView::instancePropertyChanged(const QList<QPair<ModelNode, PropertyName> > &propertyList)
|
||||||
@@ -1065,13 +1000,13 @@ void PropertyEditorView::instancePropertyChanged(const QList<QPair<ModelNode, Pr
|
|||||||
|
|
||||||
void PropertyEditorView::rootNodeTypeChanged(const QString &/*type*/, int /*majorVersion*/, int /*minorVersion*/)
|
void PropertyEditorView::rootNodeTypeChanged(const QString &/*type*/, int /*majorVersion*/, int /*minorVersion*/)
|
||||||
{
|
{
|
||||||
delayedResetView();
|
resetView();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertyEditorView::nodeTypeChanged(const ModelNode &node, const TypeName &, int, int)
|
void PropertyEditorView::nodeTypeChanged(const ModelNode &node, const TypeName &, int, int)
|
||||||
{
|
{
|
||||||
if (node == m_selectedNode)
|
if (node == m_selectedNode)
|
||||||
delayedResetView();
|
resetView();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertyEditorView::nodeReparented(const ModelNode &node,
|
void PropertyEditorView::nodeReparented(const ModelNode &node,
|
||||||
|
@@ -98,15 +98,12 @@ public:
|
|||||||
const QString &propertyName);
|
const QString &propertyName);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void timerEvent(QTimerEvent *event) override;
|
|
||||||
void setupPane(const TypeName &typeName);
|
|
||||||
void setValue(const QmlObjectNode &fxObjectNode, PropertyNameView name, const QVariant &value);
|
void setValue(const QmlObjectNode &fxObjectNode, PropertyNameView name, const QVariant &value);
|
||||||
bool eventFilter(QObject *obj, QEvent *event) override;
|
bool eventFilter(QObject *obj, QEvent *event) override;
|
||||||
|
|
||||||
private: //functions
|
private: //functions
|
||||||
void reloadQml();
|
void reloadQml();
|
||||||
void updateSize();
|
void updateSize();
|
||||||
void setupPanes();
|
|
||||||
|
|
||||||
void select();
|
void select();
|
||||||
void setSelelectedModelNode();
|
void setSelelectedModelNode();
|
||||||
@@ -133,8 +130,6 @@ private: //variables
|
|||||||
PropertyComponentGenerator m_propertyComponentGenerator;
|
PropertyComponentGenerator m_propertyComponentGenerator;
|
||||||
PropertyEditorComponentGenerator m_propertyEditorComponentGenerator{m_propertyComponentGenerator};
|
PropertyEditorComponentGenerator m_propertyEditorComponentGenerator{m_propertyComponentGenerator};
|
||||||
bool m_locked;
|
bool m_locked;
|
||||||
bool m_setupCompleted;
|
|
||||||
QTimer *m_singleShotTimer;
|
|
||||||
bool m_textureAboutToBeRemoved = false;
|
bool m_textureAboutToBeRemoved = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user