MENU_LINK(SetBgColour)
MENU_LINK(ResetStyle)
+ MENU_LINK(Highlight)
MENU_LINK(Dump)
#ifndef NO_MULTIPLE_SELECTION
MENU_LINK(DumpSelected)
m_treeCtrl->DoSortChildren(item, reverse);
}
+void MyFrame::OnHighlight(wxCommandEvent& WXUNUSED(event))
+{
+ wxTreeItemId id = m_treeCtrl->GetSelection();
+
+ CHECK_ITEM( id );
+
+ wxRect r;
+ if ( !m_treeCtrl->GetBoundingRect(id, r, true /* text, not full row */) )
+ {
+ wxLogMessage(_T("Failed to get bounding item rect"));
+ return;
+ }
+
+ wxClientDC dc(m_treeCtrl);
+ dc.SetBrush(*wxRED);
+ dc.SetPen(*wxTRANSPARENT_PEN);
+ dc.DrawRectangle(r);
+ m_treeCtrl->Update();
+}
+
void MyFrame::OnDump(wxCommandEvent& WXUNUSED(event))
{
wxTreeItemId root = m_treeCtrl->GetSelection();
{
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() )
{
else // event was generated by mouse, use supplied coords
{
pt = ScreenToClient(pt);
+ item = HitTest(pt);
}
ShowMenu(item, pt);
#if wxUSE_MENUS
wxMenu menu(title);
menu.Append(TreeTest_About, wxT("&About..."));
+ menu.AppendSeparator();
+ menu.Append(TreeTest_Highlight, wxT("&Highlight item"));
menu.Append(TreeTest_Dump, wxT("&Dump"));
PopupMenu(&menu, pt);