From 8c13bdc2efa75ed7360d206f013dd7a73f68f327 Mon Sep 17 00:00:00 2001 From: eelke Date: Fri, 16 Aug 2019 10:49:59 +0200 Subject: [PATCH] Make closing of tabs work again. --- pglab/DatabaseWindow.cpp | 28 ++++++++++++++++++++++------ pglab/DatabaseWindow.h | 3 +++ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/pglab/DatabaseWindow.cpp b/pglab/DatabaseWindow.cpp index 0ffe171..6e17070 100644 --- a/pglab/DatabaseWindow.cpp +++ b/pglab/DatabaseWindow.cpp @@ -30,6 +30,7 @@ DatabaseWindow::DatabaseWindow(MasterController *master, QWidget *parent) this, &DatabaseWindow::catalogLoaded); m_tabWidget = new QTabWidget(this); + m_tabWidget->setObjectName("m_tabWidget"); setCentralWidget(m_tabWidget); createActions(); @@ -306,6 +307,18 @@ void DatabaseWindow::createCatalogInspector(QString caption, NamespaceFilter fil } +void DatabaseWindow::closeTab(int index) +{ + QWidget *widget = m_tabWidget->widget(index); + + auto qt = dynamic_cast(widget); + if (qt && qt->canClose()) { + m_tabWidget->removeTab(index); + } + else if (index >= 0) { + m_tabWidget->removeTab(index); + } +} void DatabaseWindow::catalogLoaded() { @@ -356,6 +369,11 @@ void DatabaseWindow::on_actionCancelQuery_triggered() } } +void DatabaseWindow::on_actionClose_triggered() +{ + m_tabWidget->tabCloseRequested(m_tabWidget->currentIndex()); +} + void DatabaseWindow::on_actionCopy_triggered() { QWidget *w = QApplication::focusWidget(); @@ -429,11 +447,6 @@ void DatabaseWindow::on_actionGenerateCode_triggered() } } -void DatabaseWindow::on_actionClose_triggered() -{ - m_tabWidget->tabCloseRequested(m_tabWidget->currentIndex()); -} - void DatabaseWindow::on_actionInspectInformationSchema_triggered() { createCatalogInspector("information_schema", NamespaceFilter::InformationSchema); @@ -501,7 +514,10 @@ void DatabaseWindow::on_actionShowConnectionManager_triggered() m_masterController->showConnectionManager(); } - +void DatabaseWindow::on_m_tabWidget_tabCloseRequested(int index) +{ + closeTab(index); +} void DatabaseWindow::setTitleForWidget(QWidget *widget, QString title, QString hint) { diff --git a/pglab/DatabaseWindow.h b/pglab/DatabaseWindow.h index 0d1e215..a3bbb14 100644 --- a/pglab/DatabaseWindow.h +++ b/pglab/DatabaseWindow.h @@ -113,7 +113,9 @@ private: void initMenus(); QAction* seperator(); + void createCatalogInspector(QString caption, NamespaceFilter filter); + void closeTab(int index); private slots: void catalogLoaded(); void tableSelected(Oid tableoid); @@ -140,6 +142,7 @@ private slots: void on_actionSaveSqlAs_triggered(); void on_actionSaveCopyOfSqlAs_triggered(); void on_actionShowConnectionManager_triggered(); + void on_m_tabWidget_tabCloseRequested(int index); // IDatabaseWindow interface public: