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
+
-