From a7110ea0fc417523ba232370e0f9e15d7a8185be Mon Sep 17 00:00:00 2001 From: Martin Kleusberg Date: Tue, 22 Apr 2014 22:08:27 +0200 Subject: [PATCH] Clear the tree widget in the Structure tab when after closing a DB Clear the tree widget in the 'Database Structure' tab of the main window after closing a database. See issue #44. --- src/DbStructureModel.cpp | 7 +++++++ src/MainWindow.cpp | 11 ++++++----- src/sqlitedb.cpp | 6 +++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/DbStructureModel.cpp b/src/DbStructureModel.cpp index d24b27f7..3be5dffd 100644 --- a/src/DbStructureModel.cpp +++ b/src/DbStructureModel.cpp @@ -125,6 +125,13 @@ void DbStructureModel::reloadData(DBBrowserDB* db) rootItem->removeChild(rootItem->child(0)); } + // Return here if no DB is opened + if(!db->isOpen()) + { + endResetModel(); + return; + } + // Create the nodes for tables, indices, views and triggers QMap typeToParentItem; QTreeWidgetItem* itemTables = new QTreeWidgetItem(rootItem); diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index dde86c8b..54901c91 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -220,10 +220,15 @@ void MainWindow::populateStructure() { completerModelTables.clear(); clearCompleterModelsFields(); + + // Refresh the structure tab + db.updateSchema(); + dbStructureModel->reloadData(&db); + ui->dbTreeWidget->expandToDepth(0); + if(!db.isOpen()) return; - db.updateSchema(); QStringList tblnames = db.getBrowsableObjectNames(); sqliteHighlighterLogUser->setTableNames(tblnames); sqliteHighlighterLogApp->setTableNames(tblnames); @@ -267,10 +272,6 @@ void MainWindow::populateStructure() sqlarea->getEditor()->setDefaultCompleterModel(&completerModelTables); sqlarea->getEditor()->insertFieldCompleterModels(completerModelsFields); } - - // Refresh the structure tab - dbStructureModel->reloadData(&db); - ui->dbTreeWidget->expandToDepth(0); } void MainWindow::populateTable( const QString & tablename) diff --git a/src/sqlitedb.cpp b/src/sqlitedb.cpp index 5c9c264c..0a1ab5e1 100644 --- a/src/sqlitedb.cpp +++ b/src/sqlitedb.cpp @@ -757,10 +757,14 @@ void DBBrowserDB::updateSchema( ) sqlite3_stmt *vm; const char *tail; int err=0; + lastErrorMessage = QObject::tr("no error"); objMap.clear(); - lastErrorMessage = QObject::tr("no error"); + // Exit here is no DB is opened + if(!isOpen()) + return; + QString statement = "SELECT type, name, sql, tbl_name FROM sqlite_master;"; QByteArray utf8Statement = statement.toUtf8();