From: Vadim Zeitlin Date: Mon, 23 Apr 2007 22:08:41 +0000 (+0000) Subject: fix SelectItem() for single selection case which was broken by recent changes X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/7549148b56fd7138bb1573bd0174943b33f3bb0c 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 --- diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index 416f0c5c42..d7df087c94 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -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 }