diff --git a/src/ui/codeeditorwidget.h b/src/ui/codeeditorwidget.h --- a/src/ui/codeeditorwidget.h +++ b/src/ui/codeeditorwidget.h @@ -47,6 +47,7 @@ void onCodeDocumentAboutToBeAdded(KTextEditor::Document *document, int index); void onCodeDocumentAboutToBeRemoved(int start, int end); void showDocumentNameDialog(int index); + void closeTab(int index); private: QTabWidget *m_viewWidgets; diff --git a/src/ui/codeeditorwidget.cpp b/src/ui/codeeditorwidget.cpp --- a/src/ui/codeeditorwidget.cpp +++ b/src/ui/codeeditorwidget.cpp @@ -40,12 +40,13 @@ qCritical() << "KTextEditor could not be found, please check your installation"; } m_viewWidgets = new QTabWidget(this); - m_viewWidgets->setTabsClosable(false); + m_viewWidgets->setTabsClosable(true); + m_viewWidgets->setMovable(true); layout->addWidget(m_viewWidgets); layout->setSpacing(0); setLayout(layout); - connect(m_viewWidgets, &QTabWidget::tabBarDoubleClicked, this, &CodeEditorWidget::showDocumentNameDialog); + connect(m_viewWidgets, &QTabWidget::tabCloseRequested, this, &CodeEditorWidget::closeTab); } void CodeEditorWidget::setProject(Project *project) @@ -104,3 +105,8 @@ m_viewWidgets->setTabText(index, name); } } + +void CodeEditorWidget::closeTab(int index) +{ + m_project->removeCodeDocument(m_project->codeDocuments().at(index)); +}