]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/treectrl/treetest.cpp
fix the bug with renaming groups leaving wxFileConfig in inconsistent state (closes...
[wxWidgets.git] / samples / treectrl / treetest.cpp
index 1028d79f66d4f97b7e53642d3880a492d954e34c..31666e9df61df8fdf29409cd38e8ef524f7d4913 100644 (file)
@@ -76,6 +76,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     MENU_LINK(SetBgColour)
     MENU_LINK(ResetStyle)
 
+    MENU_LINK(Highlight)
     MENU_LINK(Dump)
 #ifndef NO_MULTIPLE_SELECTION
     MENU_LINK(DumpSelected)
@@ -456,6 +457,26 @@ void MyFrame::DoSort(bool reverse)
     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();
@@ -1185,13 +1206,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() )
         {
@@ -1208,6 +1230,7 @@ void MyTreeCtrl::OnContextMenu(wxContextMenuEvent& event)
     else // event was generated by mouse, use supplied coords
     {
         pt = ScreenToClient(pt);
+        item = HitTest(pt);
     }
 
     ShowMenu(item, pt);
@@ -1228,6 +1251,8 @@ void MyTreeCtrl::ShowMenu(wxTreeItemId id, const wxPoint& 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);