From e862ef873aded026f551f820f6049c35c5b3a5f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacob=20St=C3=B8ren?= Date: Thu, 16 Aug 2018 11:32:53 +0200 Subject: [PATCH] #3221 caf: Avoid selectionChanged and updateConnectedEditors when TableView is built (configureAndUpdateUi) --- .../cafUserInterface/cafPdmUiTableViewEditor.cpp | 3 +-- .../cafUserInterface/cafPdmUiTableViewQModel.cpp | 16 +++++++--------- .../cafUserInterface/cafPdmUiTableViewQModel.h | 4 ++-- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewEditor.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewEditor.cpp index 457fafb0d6..9a8c4a341d 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewEditor.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewEditor.cpp @@ -146,7 +146,7 @@ void PdmUiTableViewEditor::configureAndUpdateUi(const QString& uiConfigName) this->enableHeaderText(editorAttrib.enableHeaderText); } - m_tableModelPdm->setPdmData(childArrayFH, uiConfigName); + m_tableModelPdm->setArrayFieldAndBuildEditors(childArrayFH, uiConfigName); if (m_tableModelPdm->rowCount() > 0) { @@ -191,7 +191,6 @@ void PdmUiTableViewEditor::configureAndUpdateUi(const QString& uiConfigName) m_previousFieldHandle = childArrayFH; } - updateSelectionManagerFromTableSelection(); } //-------------------------------------------------------------------------------------------------- diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.cpp index 0446bd6d05..66f460fab3 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.cpp @@ -325,7 +325,7 @@ QVariant PdmUiTableViewQModel::data(const QModelIndex &index, int role /*= Qt::D //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void PdmUiTableViewQModel::setPdmData(PdmChildArrayFieldHandle* listField, const QString& configName) +void PdmUiTableViewQModel::setArrayFieldAndBuildEditors(PdmChildArrayFieldHandle* listField, const QString& configName) { beginResetModel(); @@ -445,13 +445,11 @@ void PdmUiTableViewQModel::setPdmData(PdmChildArrayFieldHandle* listField, const // Update UI for all cells, as the content potentially has changed // This will probably cause performance issues for large tables - std::vector objects; - m_pdmList->childObjects(&objects); - - for (auto obj : objects) + for (auto tableItemEditor : m_tableRowEditors) { - obj->uiCapability()->updateConnectedEditors(); + tableItemEditor->updateUi(configName); } + } } @@ -551,11 +549,11 @@ void PdmUiTableViewQModel::notifyDataChanged(const QModelIndex& topLeft, const Q //-------------------------------------------------------------------------------------------------- void PdmUiTableViewQModel::recreateTableItemEditors() { - for (auto tableItemEditor : m_tableItemEditors) + for (auto tableItemEditor : m_tableRowEditors) { delete tableItemEditor; } - m_tableItemEditors.clear(); + m_tableRowEditors.clear(); auto childArrayField = childArrayFieldHandle(); if (childArrayField) @@ -563,7 +561,7 @@ void PdmUiTableViewQModel::recreateTableItemEditors() for (size_t i = 0; i < childArrayField->size(); i++) { PdmObjectHandle* pdmObject = childArrayField->at(i); - m_tableItemEditors.push_back(new PdmUiTableItemEditor(this, pdmObject, static_cast(i))); + m_tableRowEditors.push_back(new PdmUiTableItemEditor(this, pdmObject, static_cast(i))); } } } diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.h b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.h index 1d3209e08b..e18e68d8d7 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.h +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTableViewQModel.h @@ -86,7 +86,7 @@ public: QItemSelection modelIndexFromPdmObject(PdmObjectHandle* pdmObject); PdmFieldHandle* getField(const QModelIndex &index) const; - void setPdmData(PdmChildArrayFieldHandle* pdmObject, const QString& configName); + void setArrayFieldAndBuildEditors(PdmChildArrayFieldHandle* pdmObject, const QString& configName); PdmObjectHandle* pdmObjectForRow(int row) const; // Qt overrides @@ -124,7 +124,7 @@ private: std::map m_fieldEditors; std::vector m_modelColumnIndexToFieldIndex; - std::vector m_tableItemEditors; + std::vector m_tableRowEditors; PdmUiTableViewPushButtonEditorAttribute m_pushButtonEditorAttributes; };