OSDN Git Service

Debugger: Hide/Show pinneable tooltips on de/iconifying main window.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Tue, 29 Mar 2011 13:12:42 +0000 (15:12 +0200)
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>
Tue, 29 Mar 2011 13:12:42 +0000 (15:12 +0200)
Reviewed-by: hjk
Task-number: QTCREATORBUG-4207

src/plugins/debugger/debuggertooltipmanager.cpp

index 6631926..7f81195 100644 (file)
@@ -1210,13 +1210,28 @@ void DebuggerToolTipManager::moveToolTipsBy(const QPoint &distance)
             tw->move (tw->pos() + distance);
 }
 
-bool DebuggerToolTipManager::eventFilter(QObject *, QEvent *e)
+bool DebuggerToolTipManager::eventFilter(QObject *o, QEvent *e)
 {
-    // Move along with parent (toplevel)
-    if (e->type() == QEvent::Move && hasToolTips()) {
+    if (!hasToolTips())
+        return false;
+    switch (e->type()) {
+    case QEvent::Move: { // Move along with parent (toplevel)
         const QMoveEvent *me = static_cast<const QMoveEvent *>(e);
         moveToolTipsBy(me->pos() - me->oldPos());
     }
+        break;
+    case QEvent::WindowStateChange: { // Hide/Show along with parent (toplevel)
+        const QWindowStateChangeEvent *se = static_cast<const QWindowStateChangeEvent *>(e);
+        const bool wasMinimized = se->oldState() & Qt::WindowMinimized;
+        const bool isMinimized  = static_cast<const QWidget *>(o)->windowState() & Qt::WindowMinimized;
+        if (wasMinimized ^ isMinimized)
+            foreach (const QPointer<AbstractDebuggerToolTipWidget> &tw, purgeClosedToolTips())
+                tw->setVisible(!isMinimized);
+    }
+        break;
+    default:
+        break;
+    }
     return false;
 }