#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);
}
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();
}
//--------------------------------------------------------------------------------------------------

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();
@ -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<PdmObjectHandle*> 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<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);
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<QString, PdmUiFieldEditorHandle*> m_fieldEditors;
std::vector<int> m_modelColumnIndexToFieldIndex;
std::vector<PdmUiTableItemEditor*> m_tableItemEditors;
std::vector<PdmUiTableItemEditor*> m_tableRowEditors;
PdmUiTableViewPushButtonEditorAttribute m_pushButtonEditorAttributes;
};