From 78f12104637b06818d6bf7288b3fda6c93b257ab Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 10 Feb 2004 19:14:41 +0000 Subject: [PATCH] implemented SelectItem(item, bool); UnselectItem() and ToggleItemSelection() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25716 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/treectlg.h | 15 ++++++++++++- src/generic/treectlg.cpp | 40 ++++++++++++++++++++++++----------- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/include/wx/generic/treectlg.h b/include/wx/generic/treectlg.h index 6e39c0113e..17ccfc6d4f 100644 --- a/include/wx/generic/treectlg.h +++ b/include/wx/generic/treectlg.h @@ -301,9 +301,18 @@ public: // remove the selection from currently selected item (if any) void Unselect(); + // or from the given one (multiselect mode only) + void UnselectItem(const wxTreeItemId& item) { SelectItem(item, false); } + // or from all void UnselectAll(); // select this item - void SelectItem(const wxTreeItemId& item, bool unselect_others=TRUE, bool extended_select=FALSE); + void SelectItem(const wxTreeItemId& item, bool select = true); + // toggle the item selection + void ToggleItemSelection(const wxTreeItemId& item) + { + SelectItem(item, !IsSelected(item)); + } + // make sure this item is visible (expanding the parent item and/or // scrolling to this item if necessary) void EnsureVisible(const wxTreeItemId& item); @@ -432,6 +441,10 @@ protected: void DrawLine(const wxTreeItemId& item, bool below); void DrawDropEffect(wxGenericTreeItem *item); + void DoSelectItem(const wxTreeItemId& id, + bool unselect_others = TRUE, + bool extended_select = FALSE); + wxTreeItemId DoInsertItem(const wxTreeItemId& parent, size_t previous, const wxString& text, diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index 99d64a87f3..25b750e3e2 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -1726,9 +1726,9 @@ void wxGenericTreeCtrl::SelectItemRange(wxGenericTreeItem *item1, wxGenericTreeI TagNextChildren(first,last,select); } -void wxGenericTreeCtrl::SelectItem(const wxTreeItemId& itemId, - bool unselect_others, - bool extended_select) +void wxGenericTreeCtrl::DoSelectItem(const wxTreeItemId& itemId, + bool unselect_others, + bool extended_select) { wxCHECK_RET( itemId.IsOk(), wxT("invalid tree item") ); @@ -1811,6 +1811,22 @@ void wxGenericTreeCtrl::SelectItem(const wxTreeItemId& itemId, GetEventHandler()->ProcessEvent( event ); } +void wxGenericTreeCtrl::SelectItem(const wxTreeItemId& itemId, bool select) +{ + if ( select ) + { + DoSelectItem(itemId); + } + else // deselect + { + wxGenericTreeItem *item = (wxGenericTreeItem*) itemId.m_pItem; + wxCHECK_RET( item, wxT("SelectItem(): invalid tree item") ); + + item->SetHilight(FALSE); + RefreshLine(item); + } +} + void wxGenericTreeCtrl::FillArray(wxGenericTreeItem *item, wxArrayTreeItemIds &array) const { @@ -2579,7 +2595,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) if (current == GetFirstChild( prev, cookie )) { // otherwise we return to where we came from - SelectItem( prev, unselect_others, extended_select ); + DoSelectItem( prev, unselect_others, extended_select ); m_key_current= (wxGenericTreeItem*) prev.m_pItem; break; } @@ -2596,7 +2612,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) } } - SelectItem( prev, unselect_others, extended_select ); + DoSelectItem( prev, unselect_others, extended_select ); m_key_current=(wxGenericTreeItem*) prev.m_pItem; } } @@ -2613,7 +2629,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) } if (prev) { - SelectItem( prev, unselect_others, extended_select ); + DoSelectItem( prev, unselect_others, extended_select ); } } break; @@ -2630,7 +2646,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) { wxTreeItemIdValue cookie; wxTreeItemId child = GetFirstChild( m_key_current, cookie ); - SelectItem( child, unselect_others, extended_select ); + DoSelectItem( child, unselect_others, extended_select ); m_key_current=(wxGenericTreeItem*) child.m_pItem; } else @@ -2647,7 +2663,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) } if (next) { - SelectItem( next, unselect_others, extended_select ); + DoSelectItem( next, unselect_others, extended_select ); m_key_current=(wxGenericTreeItem*) next.m_pItem; } } @@ -2674,7 +2690,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) if ( last.IsOk() ) { - SelectItem( last, unselect_others, extended_select ); + DoSelectItem( last, unselect_others, extended_select ); } } break; @@ -2694,7 +2710,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) break; } - SelectItem( prev, unselect_others, extended_select ); + DoSelectItem( prev, unselect_others, extended_select ); } break; @@ -3019,7 +3035,7 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event ) !event.ControlDown() && !event.ShiftDown()) { - SelectItem(item, true, false); + DoSelectItem(item, true, false); } } @@ -3080,7 +3096,7 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event ) event.ControlDown(), is_multiple, extended_select, unselect_others); - SelectItem(item, unselect_others, extended_select); + DoSelectItem(item, unselect_others, extended_select); } -- 2.45.2