The generic wxTreeCtrl version only sends this event when the mouse is right
clicked on a valid item so do the same in wxMSW version too for consistency.
This is also consistent with wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK event and
avoids strange problems with unexpected wxEVT_COMMAND_TREE_ITEM_MENU events
generated on right double click.
Finally, replace the checks for item validity in the event handler in the
sample with asserts which should loudly complain if it happens to be invalid.
Closes #11226.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65903
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
void MyTreeCtrl::OnItemMenu(wxTreeEvent& event)
{
wxTreeItemId itemId = event.GetItem();
void MyTreeCtrl::OnItemMenu(wxTreeEvent& event)
{
wxTreeItemId itemId = event.GetItem();
- MyTreeItemData *item = itemId.IsOk() ? (MyTreeItemData *)GetItemData(itemId)
- : NULL;
+ wxCHECK_RET( itemId.IsOk(), "should have a valid item" );
+
+ MyTreeItemData *item = (MyTreeItemData *)GetItemData(itemId);
wxPoint clientpt = event.GetPoint();
wxPoint screenpt = ClientToScreen(clientpt);
wxLogMessage(wxT("OnItemMenu for item \"%s\" at screen coords (%i, %i)"),
wxPoint clientpt = event.GetPoint();
wxPoint screenpt = ClientToScreen(clientpt);
wxLogMessage(wxT("OnItemMenu for item \"%s\" at screen coords (%i, %i)"),
- item ? item->GetDesc() : wxT(""), screenpt.x, screenpt.y);
+ item->GetDesc(), screenpt.x, screenpt.y);
ShowMenu(itemId, clientpt);
event.Skip();
ShowMenu(itemId, clientpt);
event.Skip();
void MyTreeCtrl::OnItemRClick(wxTreeEvent& event)
{
wxTreeItemId itemId = event.GetItem();
void MyTreeCtrl::OnItemRClick(wxTreeEvent& event)
{
wxTreeItemId itemId = event.GetItem();
- MyTreeItemData *item = itemId.IsOk() ? (MyTreeItemData *)GetItemData(itemId)
- : NULL;
+ wxCHECK_RET( itemId.IsOk(), "should have a valid item" );
+
+ MyTreeItemData *item = (MyTreeItemData *)GetItemData(itemId);
- wxLogMessage(wxT("Item \"%s\" right clicked"), item ? item->GetDesc()
- : wxT(""));
+ wxLogMessage(wxT("Item \"%s\" right clicked"), item->GetDesc());
- wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_MENU, this, item);
+ if ( item.IsOk() )
+ {
+ wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_MENU, this, item);
- event.m_pointDrag = pt;
+ event.m_pointDrag = pt;
- if ( HandleTreeEvent(event) )
- processed = true;
- //else: continue with generating wxEVT_CONTEXT_MENU in base class code
+ if ( HandleTreeEvent(event) )
+ processed = true;
+ //else: continue with generating wxEVT_CONTEXT_MENU in base class code
+ }
}
else if ( (nMsg >= WM_MOUSEFIRST) && (nMsg <= WM_MOUSELAST) )
{
}
else if ( (nMsg >= WM_MOUSEFIRST) && (nMsg <= WM_MOUSELAST) )
{