Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-132765

Controls Overlay item bypasses window event delivery; Drawer bypasses ContextMenu

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 6.9.0 Beta1
    • Quick: Controls 2
    • None

    Description

      1   QQuickDeliveryAgentPrivate::handleMouseEvent           qquickdeliveryagent.cpp    1764
      2   QQuickOverlay::eventFilter                             qquickoverlay.cpp          569 
      3   QCoreApplicationPrivate::sendThroughObjectEventFilters qcoreapplication.cpp       1255
      4   QCoreApplicationPrivate::notify_helper                 qcoreapplication.cpp       1284
      5   doNotify                                               qcoreapplication.cpp       1219
      6   QCoreApplication::notify                               qcoreapplication.cpp       1202
      7   QGuiApplication::notify                                qguiapplication.cpp        2076
      8   QCoreApplication::notifyInternal2                      qcoreapplication.cpp       1118
      9   QCoreApplication::sendSpontaneousEvent                 qcoreapplication.cpp       1572
      10  QGuiApplicationPrivate::processMouseEvent              qguiapplication.cpp        2485
      11  QGuiApplicationPrivate::processWindowSystemEvent       qguiapplication.cpp        2212
      12  QWindowSystemInterface::sendWindowSystemEvents         qwindowsysteminterface.cpp 1113
      13  xcbSourceDispatch                                      qxcbeventdispatcher.cpp    57  
      

      Event filtering strikes again. We should really stop using it at all, ever, inside Qt.

      So when a Drawer is in place, we never get here:

      bool QWindow::event(QEvent *ev)
      {
          Q_D(QWindow);
          switch (ev->type()) {
          case QEvent::MouseMove:
              mouseMoveEvent(static_cast<QMouseEvent*>(ev));
              break;
      
          case QEvent::MouseButtonPress: {
              auto *me = static_cast<QMouseEvent*>(ev);
              mousePressEvent(me);
              if (!ev->isAccepted())
                  d->maybeSynthesizeContextMenuEvent(me);
      

      Attachments

        Issue Links

          For Gerrit Dashboard: QTBUG-132765
          # Subject Branch Project Status CR V

          Activity

            People

              mitch_curtis Mitch Curtis
              srutledg Shawn Rutledge
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There is 1 open Gerrit change