MENU_LINK(SetImageSize)
MENU_LINK(CollapseAndReset)
MENU_LINK(EnsureVisible)
+ MENU_LINK(SetFocus)
MENU_LINK(AddItem)
MENU_LINK(InsertItem)
MENU_LINK(IncIndent)
tree_menu->Append(TreeTest_SortRev, wxT("Sort in reversed order"));
tree_menu->AppendSeparator();
tree_menu->Append(TreeTest_EnsureVisible, wxT("Make the last item &visible"));
+ tree_menu->Append(TreeTest_SetFocus, wxT("Set &focus to the tree"));
tree_menu->AppendSeparator();
tree_menu->Append(TreeTest_IncIndent, wxT("Add 5 points to indentation\tAlt-I"));
tree_menu->Append(TreeTest_DecIndent, wxT("Reduce indentation by 5 points\tAlt-R"));
m_treeCtrl->SetAlternateStates(!alternateStates);
m_treeCtrl->CreateStateImageList();
+
+ // normal states < alternate states
+ // so we must reset broken states
+ if ( alternateStates )
+ m_treeCtrl->ResetBrokenStateImages();
}
void MyFrame::OnToggleButtons(wxCommandEvent& WXUNUSED(event))
m_treeCtrl->DoEnsureVisible();
}
+void MyFrame::OnSetFocus(wxCommandEvent& WXUNUSED(event))
+{
+ m_treeCtrl->SetFocus();
+}
+
void MyFrame::OnInsertItem(wxCommandEvent& WXUNUSED(event))
{
int image = wxGetApp().ShowImages() ? MyTreeCtrl::TreeCtrlIcon_File : -1;
}
}
+void MyTreeCtrl::DoResetBrokenStateImages(const wxTreeItemId& idParent,
+ wxTreeItemIdValue cookie, int state)
+{
+ wxTreeItemId id;
+
+ if ( !cookie )
+ id = GetFirstChild(idParent, cookie);
+ else
+ id = GetNextChild(idParent, cookie);
+
+ if ( !id.IsOk() )
+ return;
+
+ int curState = GetItemState(id);
+ if ( curState != wxTREE_ITEMSTATE_NONE && curState > state )
+ SetItemState(id, state);
+
+ if (ItemHasChildren(id))
+ DoResetBrokenStateImages(id, 0, state);
+
+ DoResetBrokenStateImages(idParent, cookie, state);
+}
+
void MyTreeCtrl::LogEvent(const wxChar *name, const wxTreeEvent& event)
{
wxTreeItemId item = event.GetItem();
wxPoint pt = event.GetPosition();
wxLogMessage(wxT("OnContextMenu at screen coords (%i, %i)"), pt.x, pt.y);
+
+ event.Skip();
}
void MyTreeCtrl::ShowMenu(wxTreeItemId id, const wxPoint& pt)