don't use TPM_RECURSE under NT4, it results in TrackPopupMenu() not showing the menu at all (bug 1663216)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45038 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-03-23 16:20:30 +00:00
parent c961c0cfca
commit b40bf35c76
2 changed files with 26 additions and 4 deletions

View File

@@ -107,6 +107,16 @@ wxMSW:
- Return the restored window size from GetSize() when window is minimized.
2.8.4
-----
wxMSW:
- Corrected wxStaticBox label appearance when its foreground colour was set:
it didn't respect font size nor background colour then (Juan Antonio Ortega)
- Fixed popup menus under Windows NT 4
2.8.3
-----

View File

@@ -2043,10 +2043,22 @@ bool wxWindowMSW::DoPopupMenu(wxMenu *menu, int x, int y)
::ClientToScreen(hWnd, &point);
wxCurrentPopupMenu = menu;
#if defined(__WXWINCE__)
UINT flags = 0;
#else
UINT flags = TPM_RIGHTBUTTON | TPM_RECURSE;
#endif
static const UINT flags = 0;
#else // !__WXWINCE__
UINT flags = TPM_RIGHTBUTTON;
// NT4 doesn't support TPM_RECURSE and simply doesn't show the menu at all
// when it's use, I'm not sure about Win95/98 but prefer to err on the safe
// side and not to use it there neither -- modify the test if it does work
// on these systems
if ( wxGetWinVersion() >= wxWinVersion_5 )
{
// using TPM_RECURSE allows us to show a popup menu while another menu
// is opened which can be useful and is supported by the other
// platforms, so allow it under Windows too
flags |= TPM_RECURSE;
}
#endif // __WXWINCE__/!__WXWINCE__
::TrackPopupMenu(hMenu, flags, point.x, point.y, 0, hWnd, NULL);
// we need to do it right now as otherwise the events are never going to be