From 0b7ddc4f1ddddb0873ba035c47675f0366bfb5ed Mon Sep 17 00:00:00 2001 From: Rashad Kanavath <rashad.kanavath@c-s.fr> Date: Thu, 7 May 2015 19:17:22 +0200 Subject: [PATCH] BUG: removing items and adding again clears previous selection. mantis #1025 --- .../otbWrapperQtWidgetListViewParameter.cxx | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetListViewParameter.cxx b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetListViewParameter.cxx index 93a7b04f21..bdc9eba455 100644 --- a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetListViewParameter.cxx +++ b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetListViewParameter.cxx @@ -37,22 +37,33 @@ QtWidgetListViewParameter::~QtWidgetListViewParameter() void QtWidgetListViewParameter::DoUpdateGUI() { - // remove all the items set before - while(m_ListView->takeItem(0)) + size_t numSelected = m_ListViewParam->GetSelectedItems().size(); + + //Clear m_ListView add re-add choices only if no items selected. + //Otherwise results in mantis #1025 + + if(numSelected < 1) { - m_ListView->removeItemWidget( m_ListView->takeItem(0) ); + while(m_ListView->takeItem(0)) + { + m_ListView->removeItemWidget( m_ListView->takeItem(0) ); + } + + for (unsigned int i = 0; i < m_ListViewParam->GetNbChoices(); ++i) + { + // Add listBox items + QString key = m_ListViewParam->GetChoiceKey(i).c_str(); + m_ListView->addItem( key); + } } - for (unsigned int i = 0; i < m_ListViewParam->GetNbChoices(); ++i) + //I can't find any reason for calling m_ListView->setCurrentRow(value) in this + //case because QListWidget is a MultiSelection widget. + if (m_ListView->selectionMode() == QAbstractItemView::SingleSelection) { - // Add listBox items - QString key = m_ListViewParam->GetChoiceKey(i).c_str(); - m_ListView->addItem( key); + unsigned int value = m_ListViewParam->GetValue( ); + m_ListView->setCurrentRow(value); } - - // Update the combobox value - unsigned int value = m_ListViewParam->GetValue( ); - m_ListView->setCurrentRow(value); } void QtWidgetListViewParameter::DoCreateWidget() -- GitLab