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());