diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 0681bf9d..bf511574 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -179,6 +179,7 @@ MainWindow::MainWindow(QWidget *parent) m_palette->showPalette(); }); connect(ui->actionCloseDocument, &QAction::triggered, this, &MainWindow::closeDocument); + connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, &MainWindow::closeDocument); // Script ui->apiExecutorWidget->hide(); @@ -513,12 +514,25 @@ void MainWindow::saveDocument() document->save(); } -void MainWindow::closeDocument() +void MainWindow::closeDocument(int closeIndex) { + const int currentIndex = ui->tabWidget->currentIndex(); + bool differentIndex = false; + if (closeIndex == 0) + closeIndex = currentIndex; + else + differentIndex = currentIndex != closeIndex; + if (differentIndex) + ui->tabWidget->setCurrentIndex(closeIndex); + auto document = Core::Project::instance()->currentDocument(); - if (document) + if (document) { document->close(); - ui->tabWidget->removeTab(ui->tabWidget->currentIndex()); + ui->tabWidget->removeTab(closeIndex); + } + + if (differentIndex) + ui->tabWidget->setCurrentIndex(currentIndex - (closeIndex < currentIndex ? 1 : 0)); } void MainWindow::createQrc() diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index dce61804..7dfc50f0 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -59,7 +59,7 @@ class MainWindow : public QMainWindow void openProject(); void saveDocument(); void saveAllDocuments(); - void closeDocument(); + void closeDocument(int); void openOptions(); void returnToEditor(); diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index 450bb799..06315bc7 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -35,6 +35,9 @@ true + + true +