Fix bug with using incorrect negative ids in wxEVT_MENU_HIGHLIGHT events.
wxMSW code implicitly cast ids carried by wxEVT_MENU_HIGHLIGHT events to unsigned short so that they didn't compare equal to the (signed, negative) ids of the real menu items. Because of this menu help strings were not shown for any items with negative ids, i.e. those created using wxID_ANY. Closes #11977. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64102 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
fa5f485828
commit
f6a86afff4
@ -896,11 +896,15 @@ bool wxFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control)
|
||||
bool
|
||||
wxFrame::HandleMenuSelect(WXWORD nItem, WXWORD flags, WXHMENU WXUNUSED(hMenu))
|
||||
{
|
||||
// sign extend to int from unsigned short we get from Windows
|
||||
int item = (signed short)nItem;
|
||||
|
||||
// WM_MENUSELECT is generated for both normal items and menus, including
|
||||
// the top level menus of the menu bar, which can't be represented using
|
||||
// any valid identifier in wxMenuEvent so use -1 for them
|
||||
// the menu highlight events for n
|
||||
const int item = flags & (MF_POPUP | MF_SEPARATOR) ? -1 : nItem;
|
||||
// any valid identifier in wxMenuEvent so use an otherwise unused value for
|
||||
// them
|
||||
if ( flags & (MF_POPUP | MF_SEPARATOR) )
|
||||
item = -1;
|
||||
|
||||
wxMenuEvent event(wxEVT_MENU_HIGHLIGHT, item);
|
||||
event.SetEventObject(this);
|
||||
|
Loading…
Reference in New Issue
Block a user