mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Call display update once after setting toggle state for a selection of wells
p4#: 21417
This commit is contained in:
parent
6cd54f0caf
commit
c0bfc9bbe1
@ -965,3 +965,40 @@ RimCase* RimUiTreeModelPdm::caseFromItemIndex(const QModelIndex& itemIndex)
|
||||
return rimCase;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Set toggle state for list of model indices.
|
||||
///
|
||||
/// NOTE: Set toggle state directly on object, does not use setValueFromUi()
|
||||
/// The caller must make sure the relevant dependencies are updated
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimUiTreeModelPdm::setObjectToggleStateForSelection(QModelIndexList selectedIndexes, int state)
|
||||
{
|
||||
bool toggleOn = (state == Qt::Checked);
|
||||
|
||||
foreach (QModelIndex index, selectedIndexes)
|
||||
{
|
||||
if (!index.isValid())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
caf::PdmUiTreeItem* treeItem = UiTreeModelPdm::getTreeItemFromIndex(index);
|
||||
assert(treeItem);
|
||||
|
||||
caf::PdmObject* obj = treeItem->dataObject();
|
||||
assert(obj);
|
||||
|
||||
if (obj && obj->objectToggleField())
|
||||
{
|
||||
caf::PdmField<bool>* field = dynamic_cast<caf::PdmField<bool>* >(obj->objectToggleField());
|
||||
if (field)
|
||||
{
|
||||
// Does not use setValueFromUi(), so the caller must make sure dependencies are updated
|
||||
field->v() = toggleOn;
|
||||
|
||||
emitDataChanged(index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -80,6 +80,7 @@ public:
|
||||
virtual QStringList mimeTypes() const;
|
||||
|
||||
RimIdenticalGridCaseGroup* gridCaseGroupFromItemIndex(const QModelIndex& itemIndex);
|
||||
void setObjectToggleStateForSelection(QModelIndexList selectedIndexes, int state);
|
||||
|
||||
private slots:
|
||||
void slotRefreshScriptTree(QString path);
|
||||
@ -87,7 +88,6 @@ private slots:
|
||||
private:
|
||||
void clearClipboard();
|
||||
RimCase* caseFromItemIndex(const QModelIndex& itemIndex);
|
||||
|
||||
private:
|
||||
QFileSystemWatcher* m_scriptChangeDetector;
|
||||
};
|
||||
|
@ -1177,9 +1177,20 @@ bool RimUiTreeView::checkAndHandleToggleOfMultipleSelection()
|
||||
state = Qt::Checked;
|
||||
}
|
||||
|
||||
foreach (QModelIndex mi, selectedIndexes)
|
||||
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
|
||||
myModel->setObjectToggleStateForSelection(selectedIndexes, state);
|
||||
|
||||
caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(curr);
|
||||
|
||||
RimWell* well = dynamic_cast<RimWell*>(uiItem->dataObject().p());
|
||||
if (well)
|
||||
{
|
||||
model()->setData(mi, state, Qt::CheckStateRole);
|
||||
RimReservoirView* reservoirView = NULL;
|
||||
well->firstAncestorOfType(reservoirView);
|
||||
if (reservoirView)
|
||||
{
|
||||
reservoirView->createDisplayModelAndRedraw();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user