From 577fe8a49fdbe10f506cf5885d4647f959c3b31a Mon Sep 17 00:00:00 2001 From: Ryan May <ryan.may@eecradar.com> Date: Sun, 30 Dec 2012 22:35:25 -0600 Subject: [PATCH] Debugger: Make tabs in separate view closable. Refactor the separate view from directly using a QTabWidget to a subclass so that the necessary signal can be hooked up. Change-Id: Ibc2653d554882a36a85162708021422843057bc1 Reviewed-by: hjk <qthjk@ovi.com> --- src/plugins/debugger/watchhandler.cpp | 28 ++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 5f54e404190..f4056390208 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -145,6 +145,26 @@ private: // /////////////////////////////////////////////////////////////////////// +class SeparateViewWidget : public QTabWidget +{ + Q_OBJECT + +public: + SeparateViewWidget(QWidget *parent) : QTabWidget(parent) + { + setTabsClosable(true); + connect(this, SIGNAL(tabCloseRequested(int)), SLOT(closeTab(int))); + setWindowFlags(windowFlags() | Qt::Window); + setWindowTitle(WatchHandler::tr("Debugger - Qt Creator")); + } + +public slots: + void closeTab(int index) + { + removeTab(index); + } +}; + class WatchModel : public QAbstractItemModel { Q_OBJECT @@ -1633,11 +1653,9 @@ void WatchHandler::removeSeparateWidget(QObject *o) void WatchHandler::showSeparateWidget(QWidget *w) { - if (m_separateWindow.isNull()) { - m_separateWindow = new QTabWidget(debuggerCore()->mainWindow()); - m_separateWindow->setWindowFlags(m_separateWindow->windowFlags() | Qt::Window); - m_separateWindow->setWindowTitle(WatchHandler::tr("Debugger - Qt Creator")); - } + if (m_separateWindow.isNull()) + m_separateWindow = new SeparateViewWidget(debuggerCore()->mainWindow()); + int index = indexOf(m_separateWindow, w); if (index != -1) { m_separateWindow->setTabText(index, w->windowTitle()); -- GitLab