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

QWidget::underMouse() returns false after clicking outside of a context menu.

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Do
    • P3: Somewhat important
    • None
    • 4.6.2, 4.7.0
    • None

    Description

      Here's a temporary patch for this:

      diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
      index 42b7406..8da90bc 100644
      --- a/src/gui/widgets/qmenu.cpp
      +++ b/src/gui/widgets/qmenu.cpp
      @@ -66,6 +66,7 @@
       #include "qwidgetaction.h"
       #include "qtoolbutton.h"
       #include "qpushbutton.h"
      +#include "private/qapplication_p.h"
       #include <private/qpushbutton_p.h>
       #include <private/qaction_p.h>
       #include <private/qsoftkeymanager_p.h>
      @@ -2281,6 +2282,10 @@ void QMenu::mousePressEvent(QMouseEvent *e)
                    setAttribute(Qt::WA_NoMouseReplay);
                if (d->eventLoop) // synchronous operation
                    d->syncAction = 0;
      +         QWidget* widgetUnderMouse = QApplication::widgetAt( mapToGlobal(e->pos()) );
      +         if ( widgetUnderMouse ) {
      +             QApplicationPrivate::dispatchEnterLeave(widgetUnderMouse, this)
      +         }
               d->hideUpToMenuBar();
               return;
           }
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            laknoll Lars Knoll
            ntg Pierre Rossi
            Votes:
            3 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes