If a selected item is about to be deleted, try to select the next one first, otherwise the parent, like the wxMSW does

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59035 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling 2009-02-19 20:18:53 +00:00
parent b2231d4d0b
commit 668674c1e2

View File

@ -1775,6 +1775,16 @@ void wxGenericTreeCtrl::Delete(const wxTreeItemId& itemId)
}
wxGenericTreeItem *parent = item->GetParent();
// if the selected item will be deleted, select the parent ...
wxGenericTreeItem *to_be_selected = parent;
if (parent)
{
// .. unless there is a next sibling like wxMSW does it
int pos = parent->GetChildren().Index( item );
if ((int)(parent->GetChildren().GetCount()) > pos+1)
to_be_selected = parent->GetChildren().Item( pos+1 );
}
// don't keep stale pointers around!
if ( IsDescendantOf(item, m_key_current) )
@ -1791,7 +1801,7 @@ void wxGenericTreeCtrl::Delete(const wxTreeItemId& itemId)
// a different item, in idle time.
if ( m_select_me && IsDescendantOf(item, m_select_me) )
{
m_select_me = parent;
m_select_me = to_be_selected;
}
if ( IsDescendantOf(item, m_current) )
@ -1802,7 +1812,7 @@ void wxGenericTreeCtrl::Delete(const wxTreeItemId& itemId)
// m_current = parent;
m_current = NULL;
m_select_me = parent;
m_select_me = to_be_selected;
}
// remove the item from the tree