diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index 73eda71171..a91c06c041 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -2052,15 +2052,16 @@ void wxGenericTreeCtrl::DoSelectItem(const wxTreeItemId& itemId, void wxGenericTreeCtrl::SelectItem(const wxTreeItemId& itemId, bool select) { + wxGenericTreeItem * const item = (wxGenericTreeItem*) itemId.m_pItem; + wxCHECK_RET( item, wxT("SelectItem(): invalid tree item") ); + if ( select ) { - DoSelectItem(itemId, !HasFlag(wxTR_MULTIPLE)); + if (!item->IsSelected()) + DoSelectItem(itemId, !HasFlag(wxTR_MULTIPLE)); } else // deselect { - wxGenericTreeItem *item = (wxGenericTreeItem*) itemId.m_pItem; - wxCHECK_RET( item, wxT("SelectItem(): invalid tree item") ); - wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGING, this, item); if ( GetEventHandler()->ProcessEvent( event ) && !event.IsAllowed() ) return;