X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b2c82287f667c24909de369b35b5145090d9821c..58211774c81794d1408967203294af1206b29394:/samples/treectrl/treetest.cpp diff --git a/samples/treectrl/treetest.cpp b/samples/treectrl/treetest.cpp index b090afb31b..3af468f441 100644 --- a/samples/treectrl/treetest.cpp +++ b/samples/treectrl/treetest.cpp @@ -260,9 +260,11 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) SetMenuBar(menu_bar); #endif // wxUSE_MENUS + m_panel = new wxPanel(this); + #if wxUSE_LOG // create the controls - m_textCtrl = new wxTextCtrl(this, wxID_ANY, wxT(""), + m_textCtrl = new wxTextCtrl(m_panel, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxSUNKEN_BORDER); #endif // wxUSE_LOG @@ -321,7 +323,7 @@ void MyFrame::CreateTreeWithDefStyle() void MyFrame::CreateTree(long style) { - m_treeCtrl = new MyTreeCtrl(this, TreeTest_Ctrl, + m_treeCtrl = new MyTreeCtrl(m_panel, TreeTest_Ctrl, wxDefaultPosition, wxDefaultSize, style); Resize(); @@ -475,7 +477,7 @@ void MyFrame::OnDumpSelected(wxCommandEvent& WXUNUSED(event)) wxArrayTreeItemIds array; size_t count = m_treeCtrl->GetSelections(array); - wxLogMessage(wxT("%u items selected"), count); + wxLogMessage(wxT("%u items selected"), unsigned(count)); for ( size_t n = 0; n < count; n++ ) { @@ -788,9 +790,9 @@ void MyTreeCtrl::AddItemsRecursively(const wxTreeItemId& idParent, { // at depth 1 elements won't have any more children if ( hasChildren ) - str.Printf(wxT("%s child %d"), wxT("Folder"), n + 1); + str.Printf(wxT("%s child %u"), wxT("Folder"), unsigned(n + 1)); else - str.Printf(wxT("%s child %d.%d"), wxT("File"), folder, n + 1); + str.Printf(wxT("%s child %u.%u"), wxT("File"), unsigned(folder), unsigned(n + 1)); // here we pass to AppendItem() normal and selected item images (we // suppose that selected image follows the normal one in the enum) @@ -888,12 +890,22 @@ void MyTreeCtrl::DoToggleIcon(const wxTreeItemId& item) SetItemImage(item, image, wxTreeItemIcon_Selected); } +void MyTreeCtrl::LogEvent(const wxChar *name, const wxTreeEvent& event) +{ + wxTreeItemId item = event.GetItem(); + wxString text; + if ( item.IsOk() ) + text << _T('"') << GetItemText(item).c_str() << _T('"'); + else + text = _T("invalid item"); + wxLogMessage(wxT("%s(%s)"), name, text.c_str()); +} // avoid repetition #define TREE_EVENT_HANDLER(name) \ void MyTreeCtrl::name(wxTreeEvent& event) \ { \ - wxLogMessage(wxT(#name)); \ + LogEvent(_T(#name), event); \ SetLastItem(wxTreeItemId()); \ event.Skip(); \ } @@ -1173,13 +1185,14 @@ void MyTreeCtrl::OnContextMenu(wxContextMenuEvent& event) { wxPoint pt = event.GetPosition(); wxTreeItemId item; - if ( !HasFlag(wxTR_MULTIPLE) ) - 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) { + if ( !HasFlag(wxTR_MULTIPLE) ) + item = GetSelection(); + // attempt to guess where to show the menu if ( item.IsOk() ) { @@ -1196,6 +1209,7 @@ void MyTreeCtrl::OnContextMenu(wxContextMenuEvent& event) else // event was generated by mouse, use supplied coords { pt = ScreenToClient(pt); + item = HitTest(pt); } ShowMenu(item, pt); @@ -1276,6 +1290,6 @@ void MyTreeItemData::ShowInfo(wxTreeCtrl *tree) Bool2String(tree->IsSelected(GetId())), Bool2String(tree->IsExpanded(GetId())), Bool2String(tree->IsBold(GetId())), - tree->GetChildrenCount(GetId()), - tree->GetChildrenCount(GetId(), false)); + unsigned(tree->GetChildrenCount(GetId())), + unsigned(tree->GetChildrenCount(GetId(), false))); }