X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=a04396234c72efda44d4592c641500275f4b82da;hb=68ad932d712f9a59be529d5283b95617e6da1e28;hp=775f9dec90a53d628271f5580a829b60b2027035;hpb=cbf7b5db5c3c04b95daf77bc0e6dc112c15e0195;p=pulseview.git diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 775f9de..a043962 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -239,6 +239,8 @@ shared_ptr MainWindow::add_session() session_windows_[session] = window; session_selector_.addTab(window, name); + window->setDockNestingEnabled(true); + shared_ptr main_view = add_view(name, views::ViewTypeTrace, *session); @@ -307,7 +309,10 @@ void MainWindow::setup_ui() action_about_->setObjectName(QString::fromUtf8("actionAbout")); action_about_->setText(tr("&About...")); - setDockNestingEnabled(true); + session_selector_.setTabsClosable(true); + + connect(&session_selector_, SIGNAL(tabCloseRequested(int)), + this, SLOT(on_tab_close_requested(int))); connect(static_cast(QCoreApplication::instance()), SIGNAL(focusChanged(QWidget*, QWidget*)), @@ -486,6 +491,18 @@ void MainWindow::on_view_close_clicked() } } +void MainWindow::on_tab_close_requested(int index) +{ + // TODO Ask user if this is intended in case data is unsaved + + // Find the session that belongs to this main window and remove it + for (auto entry : session_windows_) + if (entry.second == session_selector_.widget(index)) { + remove_session(entry.first); + break; + } +} + void MainWindow::on_actionViewStickyScrolling_triggered() { shared_ptr viewbase = get_active_view();