Include the location of the item in the ITEM_MENU event generated by the menu key, and send the ITEM_MENU event after the RIGHT_CLICK event (consistent with MSW, but this behavior may change). The latter ITEM_MENU event had previously not been sent at all.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34204 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -2693,8 +2693,15 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event )
|
||||
|
||||
case WXK_MENU:
|
||||
{
|
||||
// Use the item's bounding rectangle to determine position for the event
|
||||
wxRect ItemRect;
|
||||
GetBoundingRect(m_current, ItemRect, true);
|
||||
|
||||
wxTreeEvent event( wxEVT_COMMAND_TREE_ITEM_MENU, GetId() );
|
||||
event.m_item = m_current;
|
||||
// Use the left edge, vertical middle
|
||||
event.m_pointDrag = wxPoint(ItemRect.GetX(),
|
||||
ItemRect.GetY() + ItemRect.GetHeight() / 2);
|
||||
event.SetEventObject( this );
|
||||
GetEventHandler()->ProcessEvent( event );
|
||||
break;
|
||||
@@ -3226,6 +3233,14 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event )
|
||||
nevent.m_pointDrag = CalcScrolledPosition(pt);
|
||||
nevent.SetEventObject(this);
|
||||
event.Skip(!GetEventHandler()->ProcessEvent(nevent));
|
||||
|
||||
// Consistent with MSW (for now), send the ITEM_MENU *after*
|
||||
// the RIGHT_CLICK event. TODO: This behavior may change.
|
||||
wxTreeEvent nevent2(wxEVT_COMMAND_TREE_ITEM_MENU, GetId());
|
||||
nevent2.m_item = item;
|
||||
nevent2.m_pointDrag = CalcScrolledPosition(pt);
|
||||
nevent2.SetEventObject(this);
|
||||
GetEventHandler()->ProcessEvent(nevent2);
|
||||
}
|
||||
else if ( event.LeftUp() )
|
||||
{
|
||||
|
Reference in New Issue
Block a user