fix SelectItem() for single selection case which was broken by recent changes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45612 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-04-23 22:08:41 +00:00
parent 5becc84185
commit 7549148b56

View File

@@ -1671,15 +1671,26 @@ void wxTreeCtrl::SelectItem(const wxTreeItemId& item, bool select)
wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGING, this, item);
if ( !GetEventHandler()->ProcessEvent(event) || event.IsAllowed() )
{
if ( !::SelectItem(GetHwnd(), HITEM(item), select) )
if ( HasFlag(wxTR_MULTIPLE) )
{
wxLogLastError(wxT("TreeView_SelectItem"));
if ( !::SelectItem(GetHwnd(), HITEM(item), select) )
{
wxLogLastError(wxT("TreeView_SelectItem"));
return;
}
}
else // ok
else // single selection
{
event.SetEventType(wxEVT_COMMAND_TREE_SEL_CHANGED);
(void)GetEventHandler()->ProcessEvent(event);
// use TreeView_SelectItem() to deselect the previous selection
if ( !TreeView_SelectItem(GetHwnd(), HITEM(item)) )
{
wxLogLastError(wxT("TreeView_SelectItem"));
return;
}
}
event.SetEventType(wxEVT_COMMAND_TREE_SEL_CHANGED);
(void)GetEventHandler()->ProcessEvent(event);
}
//else: program vetoed the change
}