#3221 caf: Avoid selectionChanged and updateConnectedEditors when TableView is built (configureAndUpdateUi)

This commit is contained in:
Jacob Støren 2018-08-16 11:32:53 +02:00
parent 7254a58887
commit e862ef873a
3 changed files with 10 additions and 13 deletions

View File

@ -146,7 +146,7 @@ void PdmUiTableViewEditor::configureAndUpdateUi(const QString& uiConfigName)
this->enableHeaderText(editorAttrib.enableHeaderText); this->enableHeaderText(editorAttrib.enableHeaderText);
} }
m_tableModelPdm->setPdmData(childArrayFH, uiConfigName); m_tableModelPdm->setArrayFieldAndBuildEditors(childArrayFH, uiConfigName);
if (m_tableModelPdm->rowCount() > 0) if (m_tableModelPdm->rowCount() > 0)
{ {
@ -191,7 +191,6 @@ void PdmUiTableViewEditor::configureAndUpdateUi(const QString& uiConfigName)
m_previousFieldHandle = childArrayFH; m_previousFieldHandle = childArrayFH;
} }
updateSelectionManagerFromTableSelection();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -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(); beginResetModel();
@ -445,13 +445,11 @@ void PdmUiTableViewQModel::setPdmData(PdmChildArrayFieldHandle* listField, const
// Update UI for all cells, as the content potentially has changed // Update UI for all cells, as the content potentially has changed
// This will probably cause performance issues for large tables // This will probably cause performance issues for large tables
std::vector<PdmObjectHandle*> objects; for (auto tableItemEditor : m_tableRowEditors)
m_pdmList->childObjects(&objects);
for (auto obj : objects)
{ {
obj->uiCapability()->updateConnectedEditors(); tableItemEditor->updateUi(configName);
} }
} }
} }
@ -551,11 +549,11 @@ void PdmUiTableViewQModel::notifyDataChanged(const QModelIndex& topLeft, const Q
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUiTableViewQModel::recreateTableItemEditors() void PdmUiTableViewQModel::recreateTableItemEditors()
{ {
for (auto tableItemEditor : m_tableItemEditors) for (auto tableItemEditor : m_tableRowEditors)
{ {
delete tableItemEditor; delete tableItemEditor;
} }
m_tableItemEditors.clear(); m_tableRowEditors.clear();
auto childArrayField = childArrayFieldHandle(); auto childArrayField = childArrayFieldHandle();
if (childArrayField) if (childArrayField)
@ -563,7 +561,7 @@ void PdmUiTableViewQModel::recreateTableItemEditors()
for (size_t i = 0; i < childArrayField->size(); i++) for (size_t i = 0; i < childArrayField->size(); i++)
{ {
PdmObjectHandle* pdmObject = childArrayField->at(i); PdmObjectHandle* pdmObject = childArrayField->at(i);
m_tableItemEditors.push_back(new PdmUiTableItemEditor(this, pdmObject, static_cast<int>(i))); m_tableRowEditors.push_back(new PdmUiTableItemEditor(this, pdmObject, static_cast<int>(i)));
} }
} }
} }

View File

@ -86,7 +86,7 @@ public:
QItemSelection modelIndexFromPdmObject(PdmObjectHandle* pdmObject); QItemSelection modelIndexFromPdmObject(PdmObjectHandle* pdmObject);
PdmFieldHandle* getField(const QModelIndex &index) const; 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; PdmObjectHandle* pdmObjectForRow(int row) const;
// Qt overrides // Qt overrides
@ -124,7 +124,7 @@ private:
std::map<QString, PdmUiFieldEditorHandle*> m_fieldEditors; std::map<QString, PdmUiFieldEditorHandle*> m_fieldEditors;
std::vector<int> m_modelColumnIndexToFieldIndex; std::vector<int> m_modelColumnIndexToFieldIndex;
std::vector<PdmUiTableItemEditor*> m_tableItemEditors; std::vector<PdmUiTableItemEditor*> m_tableRowEditors;
PdmUiTableViewPushButtonEditorAttribute m_pushButtonEditorAttributes; PdmUiTableViewPushButtonEditorAttribute m_pushButtonEditorAttributes;
}; };