From 4eea99788b11ab8b5e3e68764671757d010425c6 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 25 Nov 2015 11:39:02 +0100 Subject: Fix closing a QMenu by pressing Alt. In QMenuPrivate::hideMenu(), delay clearing of 'causedPopup.widget' to after the QMenu::close() call, so that it is still accessible in QMenu::hideEvent() which calls QMenuBarPrivate::setCurrentAction(0) if the caused widget is a QMenuBar. Task-number: QTBUG-47377 Task-number: QTBUG-49592 Change-Id: Idbda48e918dae799afea84068a60d7383d7b4971 Reviewed-by: Marc Mutz --- src/widgets/widgets/qmenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/widgets/widgets/qmenu.cpp') diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 27e977f027..4239e7f3d4 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -502,8 +502,8 @@ void QMenuPrivate::hideMenu(QMenu *menu) if (activeMenu == menu) activeMenu = 0; menu->d_func()->causedPopup.action = 0; - menu->d_func()->causedPopup.widget = 0; menu->close(); + menu->d_func()->causedPopup.widget = 0; if (previousMouseMenu.data() == menu) handleEnterLeaveEvents(&previousMouseMenu, Q_NULLPTR); } -- cgit v1.2.3