+/////////////////////////////////////////////////////////////////////////////////////////////////
+void ParametersPlugin_TreeWidget::closeEditor(QWidget* theEditor,
+ QAbstractItemDelegate::EndEditHint theHint)
+{
+ if (theHint == QAbstractItemDelegate::EditNextItem) {
+ QModelIndex aCurrent = currentIndex();
+ QModelIndex aParent = model()->index(0, 0);
+ int aNbRows = model()->rowCount(aParent);
+ QModelIndex aIdx;
+ switch (aCurrent.column()) {
+ case 0:
+ aIdx = model()->index(aCurrent.row(), 1, aParent);
+ break;
+ case 1:
+ if (aCurrent.row() < (aNbRows - 1))
+ aIdx = model()->index(aCurrent.row() + 1, 0, aParent);
+ else {
+ QTreeWidget::closeEditor(theEditor, QAbstractItemDelegate::NoHint);
+ return;
+ }
+ break;
+ case 3:
+ QTreeWidget::closeEditor(theEditor, theHint);
+ return;
+ }
+ if (aIdx.isValid()) {
+ QTreeWidget::closeEditor(theEditor, QAbstractItemDelegate::NoHint);
+ setCurrentIndex(aIdx);
+ edit(aIdx);
+ return;
+ }
+ }
+ QTreeWidget::closeEditor(theEditor, theHint);
+}