title: Catching drag cancel event in Qt
body: <p>I'm experiencing some difficulties with catching application-scope events in Qt.</p>
  
  <p>My purpose is to catch every user action in some GUI application. Of course I've overrided <code>QApplication::notify</code> handler and processing different types of application-scope events there. Something like that:</p>
  
  <pre><code>bool CoolApplication::notify(QObject *obj, QEvent *e)
  {
      switch (e-&gt;type()) {
      case QEvent::MouseButtonPress:
      case QEvent::MouseButtonRelease:
          // Handle mouse
          break;
  
      case QEvent::Wheel:
          // Handle wheel
          break;
  
      case QEvent::KeyPress:
      case QEvent::KeyRelease:
          // Handle keyboard and so on
          break;
      default:
          break;
      }
  
      return QApplication::notify(obj, e);
  }
  </code></pre>
  
  <p>That works pretty well until user starts drag-and-drop operation. Mouse press event is handled well, it is catched in my handler, life is beautiful there. The problems start when I try to catch mouse release event on Windows.</p>
  
  <p>When entering drag operation mouse and keyboard events are no longer handled by QApplication::notify. It is possible to catch drop event when it was successfull (I can add <code>case QEvent::Drop</code> branch into my handler), but how to catch ignored drop or canceling drop with Esc? It seems impossible to be done directly, maybe I can catch drag event loop termination event or something like that? Or even maybe someone knows a direct way to do it?</p>
  
  <p>Edit:
  Once more turning the attention that I need to catch application-scope event, not the widget one</p>