X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ac103441d12fb8128685ecd72963e1838841b9c9..f014d4bf3e18198c273b3c119ad1a08d46d12c82:/samples/treectrl/treetest.cpp?ds=sidebyside diff --git a/samples/treectrl/treetest.cpp b/samples/treectrl/treetest.cpp index dfa0ad4229..3a3f8d43e1 100644 --- a/samples/treectrl/treetest.cpp +++ b/samples/treectrl/treetest.cpp @@ -138,6 +138,8 @@ BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl) EVT_TREE_ITEM_COLLAPSING(TreeTest_Ctrl, MyTreeCtrl::OnItemCollapsing) EVT_CONTEXT_MENU(MyTreeCtrl::OnContextMenu) + EVT_TREE_ITEM_MENU(TreeTest_Ctrl, MyTreeCtrl::OnItemMenu) + EVT_TREE_SEL_CHANGED(TreeTest_Ctrl, MyTreeCtrl::OnSelChanged) EVT_TREE_SEL_CHANGING(TreeTest_Ctrl, MyTreeCtrl::OnSelChanging) EVT_TREE_KEY_DOWN(TreeTest_Ctrl, MyTreeCtrl::OnTreeKeyDown) @@ -1012,7 +1014,7 @@ void LogKeyEvent(const wxChar *name, const wxKeyEvent& event) default: { - if ( wxIsprint((int)keycode) ) + if ( keycode < 128 && wxIsprint((int)keycode) ) key.Printf(wxT("'%c'"), (char)keycode); else if ( keycode > 0 && keycode < 27 ) key.Printf(_("Ctrl-%c"), wxT('A') + keycode - 1); @@ -1146,21 +1148,33 @@ void MyTreeCtrl::OnItemActivated(wxTreeEvent& event) wxLogMessage(wxT("OnItemActivated")); } +void MyTreeCtrl::OnItemMenu(wxTreeEvent& event) +{ + wxTreeItemId itemId = event.GetItem(); + MyTreeItemData *item = itemId.IsOk() ? (MyTreeItemData *)GetItemData(itemId) + : NULL; + + wxLogMessage(wxT("OnItemMenu for item \"%s\""), item ? item->GetDesc() + : _T("")); + + event.Skip(); +} + void MyTreeCtrl::OnContextMenu(wxContextMenuEvent& event) { wxPoint pt = event.GetPosition(); wxTreeItemId item = GetSelection(); wxLogMessage(wxT("OnContextMenu at screen coords (%i, %i)"), pt.x, pt.y); - //check if event was generated by keyboard (MSW-specific?) - if (pt.x==-1 && pt.y==-1) //(this is how MSW indicates it) + // check if event was generated by keyboard (MSW-specific?) + if ( pt.x == -1 && pt.y == -1 ) //(this is how MSW indicates it) { - //attempt to guess where to show the menu - if (item.IsOk()) + // attempt to guess where to show the menu + if ( item.IsOk() ) { - //if an item was clicked, show menu to the right of it + // if an item was clicked, show menu to the right of it wxRect rect; - GetBoundingRect(item, rect, true); //true = only the label + GetBoundingRect(item, rect, true /* only the label */); pt = wxPoint(rect.GetRight(), rect.GetTop()); } else @@ -1168,9 +1182,8 @@ void MyTreeCtrl::OnContextMenu(wxContextMenuEvent& event) pt = wxPoint(0, 0); } } - else + else // event was generated by mouse, use supplied coords { - //event was generated by mouse, use supplied coords pt = ScreenToClient(pt); }