diff options
-rw-r--r-- | mappingtreewidget.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp index 0951312..305bb41 100644 --- a/mappingtreewidget.cpp +++ b/mappingtreewidget.cpp @@ -42,6 +42,7 @@ MappingTreeWidget::MappingTreeWidget(QWidget *parent) : QWidget(parent){ mTree->setColumnHidden(1, true); mTree->setColumnHidden(2, true); mTree->setColumnHidden(3, true); + mTree->setColumnHidden(4, true); mTree->setAlternatingRowColors(true); mTree->expandAll(); connect(mModel, SIGNAL(needExpansion()), mTree, SLOT(expandAll())); @@ -119,15 +120,23 @@ void MappingTreeWidget::addChild(){ QMessageBox::critical(this, tr("Error"), msg); return; } - QModelIndex sel = selected(); QModelIndex parent = mModel->rootIndex(); if(!dlg.createRoot()){ QModelIndex sel = selected(); parent = mProxy->mapToSource(sel); } if(!mModel->addChild(value, parent)){ - QString err = QString(tr("Error: Database said: %1")).arg(mModel->lastError().text()); + QString err = QString(tr("<p>Failed to create child! Database said:</p><p>%1</p>")).arg(mModel->lastError().text()); QMessageBox::critical(this, tr("Error"), err); + }else{ + // we repopulated the model, so all indexes are invalid! + // this will fail if we have 2 children with the same name... :( + QModelIndex newSIdx = mModel->findRecursive(value, 0, mModel->rootIndex()); + if(newSIdx.isValid()){ + QModelIndex newPIdx = mProxy->mapFromSource(newSIdx); + mTree->scrollTo(newPIdx, QAbstractItemView::EnsureVisible); + mTree->selectionModel()->setCurrentIndex(newPIdx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Current | QItemSelectionModel::Rows); + } } } |