#2266 AppFwk : Add editor attribute setCurrentIndexWhenItemIsChecked

Fix bug when a selection is active
This commit is contained in:
Magne Sjaastad 2017-12-14 16:03:14 +01:00
parent 3b9e7d0106
commit 81129302f3
2 changed files with 12 additions and 6 deletions

View File

@ -573,14 +573,18 @@ void PdmUiTreeSelectionEditor::slotCurrentChanged(const QModelIndex& current, co
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUiTreeSelectionEditor::slotClicked(const QModelIndex& current) void PdmUiTreeSelectionEditor::slotClicked(const QModelIndex& index)
{ {
if (current.isValid()) if (m_attributes.setCurrentIndexWhenItemIsChecked && index.isValid())
{ {
QVariant v = m_proxyModel->data(current, Qt::CheckStateRole); QModelIndexList selectedIndexes = m_treeView->selectionModel()->selectedIndexes();
if (v == Qt::Checked) if (selectedIndexes.size() < 2)
{ {
m_treeView->setCurrentIndex(current); QVariant v = m_proxyModel->data(index, Qt::CheckStateRole);
if (v == Qt::Checked)
{
m_treeView->setCurrentIndex(index);
}
} }
} }
} }

View File

@ -62,6 +62,7 @@ public:
bool showTextFilter; bool showTextFilter;
bool showToggleAllCheckbox; bool showToggleAllCheckbox;
bool singleSelectionMode; bool singleSelectionMode;
bool setCurrentIndexWhenItemIsChecked;
/// fieldToReceiveCurrentFieldValue is used to communicate the value of current item in the tree view /// fieldToReceiveCurrentFieldValue is used to communicate the value of current item in the tree view
/// This is useful when displaying a list of appEnums, and a dependent view is displaying content based on /// This is useful when displaying a list of appEnums, and a dependent view is displaying content based on
@ -75,6 +76,7 @@ public:
showTextFilter = true; showTextFilter = true;
showToggleAllCheckbox = true; showToggleAllCheckbox = true;
singleSelectionMode = false; singleSelectionMode = false;
setCurrentIndexWhenItemIsChecked = false;
fieldToReceiveCurrentItemValue = nullptr; fieldToReceiveCurrentItemValue = nullptr;
} }
@ -110,7 +112,7 @@ private slots:
void slotTextFilterChanged(); void slotTextFilterChanged();
void slotCurrentChanged(const QModelIndex& current, const QModelIndex& previous); void slotCurrentChanged(const QModelIndex& current, const QModelIndex& previous);
void slotClicked(const QModelIndex& current); void slotClicked(const QModelIndex& index);
private: private:
void setCheckedStateOfSelected(bool checked); void setCheckedStateOfSelected(bool checked);