summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mappingtreewidget.cpp13
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);
+ }
}
}