summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/qwindowsmenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsmenu.cpp')
-rw-r--r--src/plugins/platforms/windows/qwindowsmenu.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/plugins/platforms/windows/qwindowsmenu.cpp b/src/plugins/platforms/windows/qwindowsmenu.cpp
index 4e1997c4f8..72f11d54b4 100644
--- a/src/plugins/platforms/windows/qwindowsmenu.cpp
+++ b/src/plugins/platforms/windows/qwindowsmenu.cpp
@@ -686,9 +686,16 @@ void QWindowsPopupMenu::showPopup(const QWindow *parentWindow, const QRect &targ
bool QWindowsPopupMenu::trackPopupMenu(HWND windowHandle, int x, int y)
{
lastShownPopupMenu = this;
- return TrackPopupMenu(menuHandle(),
+ // Emulate Show()/Hide() signals. Could be implemented by catching the
+ // WM_EXITMENULOOP, WM_ENTERMENULOOP messages; but they do not carry
+ // information telling which menu was opened.
+ emit aboutToShow();
+ const bool result =
+ TrackPopupMenu(menuHandle(),
QGuiApplication::layoutDirection() == Qt::RightToLeft ? UINT(TPM_RIGHTALIGN) : UINT(0),
x, y, 0, windowHandle, nullptr) == TRUE;
+ emit aboutToHide();
+ return result;
}
bool QWindowsPopupMenu::notifyTriggered(uint id)