diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 5f54e404190c4e76dcf95b01c444bd8b491bcdfd..f4056390208b663c9699aff4daacfb6cfabe252e 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());