]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/treebase.cpp
allow changing the page from keyboard in property sheet like controls even when the...
[wxWidgets.git] / src / common / treebase.cpp
index e38866e7d14bd7714221b68416950ee11e7e2889..bf992729d44a2538fef190dc122a63b8fbfd3770 100644 (file)
@@ -59,9 +59,23 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_TREE_ITEM_MENU)
 // Tree event
 // ----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxNotifyEvent)
+IMPLEMENT_ABSTRACT_CLASS(wxTreeEvent, wxNotifyEvent)
 
 
+wxTreeEvent::wxTreeEvent(wxEventType commandType,
+                         wxTreeCtrlBase *tree,
+                         const wxTreeItemId& item)
+           : wxNotifyEvent(commandType, tree->GetId()),
+             m_item(item)
+{
+    m_editCancelled = false;
+
+    SetEventObject(tree);
+
+    if ( item.IsOk() )
+        SetClientObject(tree->GetItemData(item));
+}
+
 wxTreeEvent::wxTreeEvent(wxEventType commandType, int id)
            : wxNotifyEvent(commandType, id)
 {
@@ -95,7 +109,7 @@ wxTreeCtrlBase::~wxTreeCtrlBase()
 static void wxGetBestTreeSize(const wxTreeCtrlBase* treeCtrl, const wxTreeItemId& id, wxSize& size)
 {
     wxRect rect;
-    
+
     if ( treeCtrl->GetBoundingRect(id, rect, true) )
     {
         if ( size.x < rect.x + rect.width )
@@ -107,7 +121,7 @@ static void wxGetBestTreeSize(const wxTreeCtrlBase* treeCtrl, const wxTreeItemId
     wxTreeItemIdValue cookie;
     for ( wxTreeItemId item = treeCtrl->GetFirstChild(id, cookie);
           item.IsOk();
-          item = treeCtrl->GetNextChild(item, cookie) )
+          item = treeCtrl->GetNextChild(id, cookie) )
     {
         wxGetBestTreeSize(treeCtrl, item, size);
     }
@@ -120,7 +134,7 @@ wxSize wxTreeCtrlBase::DoGetBestSize() const
     // this doesn't really compute the total bounding rectangle of all items
     // but a not too bad guess of it which has the advantage of not having to
     // examine all (potentially hundreds or thousands) items in the control
-    
+
     if (GetQuickBestSize())
     {
         for ( wxTreeItemId item = GetRootItem();
@@ -153,5 +167,26 @@ wxSize wxTreeCtrlBase::DoGetBestSize() const
     return size;
 }
 
+void wxTreeCtrlBase::ExpandAll()
+{
+    ExpandAllChildren(GetRootItem());
+}
+
+void wxTreeCtrlBase::ExpandAllChildren(const wxTreeItemId& item)
+{
+    // expand this item first, this might result in its children being added on
+    // the fly
+    Expand(item);
+
+    // then (recursively) expand all the children
+    wxTreeItemIdValue cookie;
+    for ( wxTreeItemId idCurr = GetFirstChild(item, cookie);
+          idCurr.IsOk();
+          idCurr = GetNextChild(item, cookie) )
+    {
+        ExpandAllChildren(idCurr);
+    }
+}
+
 #endif // wxUSE_TREECTRL