added wxTreeCtrl::UnselectItem() and ToggleItemSelection() (includes patch 832281)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25714 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2004-02-10 18:58:27 +00:00
parent 6bba111cc6
commit 3e9af289ed
3 changed files with 121 additions and 14 deletions

View File

@ -110,6 +110,7 @@ to a newer version: see
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxTreeCtrl::wxTreeCtrl}\label{wxtreectrlconstr}
\func{}{wxTreeCtrl}{\void}
@ -143,12 +144,14 @@ appropriately.}
\helpref{wxTreeCtrl::Create}{wxtreectrlcreate}, \helpref{wxValidator}{wxvalidator}
\membersection{wxTreeCtrl::\destruct{wxTreeCtrl}}
\func{void}{\destruct{wxTreeCtrl}}{\void}
Destructor, destroying the list control.
\membersection{wxTreeCtrl::AddRoot}\label{wxtreectrladdroot}
\func{wxTreeItemId}{AddRoot}{\param{const wxString\&}{ text},
@ -162,6 +165,7 @@ selected items, respectively.
If {\it image} > -1 and {\it selImage} is -1, the same image is used for
both selected and unselected items.
\membersection{wxTreeCtrl::AppendItem}\label{wxtreectrlappenditem}
\func{wxTreeItemId}{AppendItem}{\param{const wxTreeItemId\& }{parent}, \param{const wxString\&}{ text},
@ -175,6 +179,7 @@ selected items, respectively.
If {\it image} > -1 and {\it selImage} is -1, the same image is used for
both selected and unselected items.
\membersection{wxTreeCtrl::AssignButtonsImageList}\label{wxtreectrlassignbuttonsimagelist}
\func{void}{AssignButtonsImageList}{\param{wxImageList*}{ imageList}}
@ -191,6 +196,7 @@ This function is only available in the generic version.
See also \helpref{SetButtonsImageList}{wxtreectrlsetbuttonsimagelist}.
\membersection{wxTreeCtrl::AssignImageList}\label{wxtreectrlassignimagelist}
\func{void}{AssignImageList}{\param{wxImageList*}{ imageList}}
@ -201,6 +207,7 @@ be automatically deleted by wxTreeCtrl as appropriate
See also \helpref{SetImageList}{wxtreectrlsetimagelist}.
\membersection{wxTreeCtrl::AssignStateImageList}\label{wxtreectrlassignstateimagelist}
\func{void}{AssignStateImageList}{\param{wxImageList*}{ imageList}}
@ -212,18 +219,21 @@ be automatically deleted by wxTreeCtrl as appropriate
See also \helpref{SetStateImageList}{wxtreectrlsetstateimagelist}.
\membersection{wxTreeCtrl::Collapse}\label{wxtreectrlcollapse}
\func{void}{Collapse}{\param{const wxTreeItemId\&}{ item}}
Collapses the given item.
\membersection{wxTreeCtrl::CollapseAndReset}\label{wxtreectrlcollapseandreset}
\func{void}{CollapseAndReset}{\param{const wxTreeItemId\&}{ item}}
Collapses the given item and removes all children.
\membersection{wxTreeCtrl::Create}\label{wxtreectrlcreate}
\func{bool}{wxTreeCtrl}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id},\rtfsp
@ -232,6 +242,7 @@ Collapses the given item and removes all children.
Creates the tree control. See \helpref{wxTreeCtrl::wxTreeCtrl}{wxtreectrlconstr} for further details.
\membersection{wxTreeCtrl::Delete}\label{wxtreectrldelete}
\func{void}{Delete}{\param{const wxTreeItemId\&}{ item}}
@ -241,6 +252,7 @@ generated.
This function may cause a subsequent call to GetNextChild to fail.
\membersection{wxTreeCtrl::DeleteAllItems}\label{wxtreectrldeleteallitems}
\func{void}{DeleteAllItems}{\void}
@ -249,6 +261,7 @@ Deletes all the items in the control. Note that this may not generate
{\tt EVT\_TREE\_DELETE\_ITEM} events under some Windows versions although
normally such event is generated for each removed item.
\membersection{wxTreeCtrl::DeleteChildren}\label{wxtreectrldeletechildren}
\func{void}{DeleteChildren}{\param{const wxTreeItemId\& }{item}}
@ -261,6 +274,7 @@ If you have called \helpref{wxTreeCtrl::SetItemHasChildren}{wxtreectrlsetitemhas
may need to call it again since {\it DeleteChildren} does not automatically
clear the setting.
\membersection{wxTreeCtrl::EditLabel}\label{wxtreectrleditlabel}
\func{void}{EditLabel}{\param{const wxTreeItemId\&}{ item}}
@ -278,6 +292,7 @@ will be sent which can be vetoed as well.
\helpref{wxTreeCtrl::EndEditLabel}{wxtreectrlendeditlabel},
\helpref{wxTreeEvent}{wxtreeevent}
\membersection{wxTreeCtrl::EndEditLabel}\label{wxtreectrlendeditlabel}
\func{void}{EndEditLabel}{\param{bool }{cancelEdit}}
@ -290,18 +305,21 @@ This function is currently supported under Windows only.
\helpref{wxTreeCtrl::EditLabel}{wxtreectrleditlabel}
\membersection{wxTreeCtrl::EnsureVisible}\label{wxtreectrlensurevisible}
\func{void}{EnsureVisible}{\param{const wxTreeItemId\&}{ item}}
Scrolls and/or expands items to ensure that the given item is visible.
\membersection{wxTreeCtrl::Expand}\label{wxtreectrlexpand}
\func{void}{Expand}{\param{const wxTreeItemId\&}{ item}}
Expands the given item.
\membersection{wxTreeCtrl::GetBoundingRect}\label{wxtreectrlgetitemrect}
\constfunc{bool}{GetBoundingRect}{\param{const wxTreeItemId\&}{ item}, \param{wxRect\& }{rect}, \param{bool }{textOnly = {\tt false}}}
@ -321,6 +339,7 @@ item is currently invisible.
\perlnote{In wxPerl this method only takes the parameters {\tt item} and
{\tt textOnly}, and returns a Wx::Rect ( or undef ).}
\membersection{wxTreeCtrl::GetButtonsImageList}\label{wxtreectrlgetbuttonsimagelist}
\constfunc{wxImageList*}{GetButtonsImageList}{\void}
@ -329,6 +348,7 @@ Returns the buttons image list (from which application-defined button images are
This function is only available in the generic version.
\membersection{wxTreeCtrl::GetChildrenCount}\label{wxtreectrlgetchildrencount}
\constfunc{size\_t}{GetChildrenCount}{\param{const wxTreeItemId\&}{ item}, \param{bool}{ recursively = {\tt true}}}
@ -336,12 +356,14 @@ This function is only available in the generic version.
Returns the number of items in the branch. If {\it recursively} is {\tt true}, returns the total number
of descendants, otherwise only one level of children is counted.
\membersection{wxTreeCtrl::GetCount}\label{wxtreectrlgetcount}
\constfunc{int}{GetCount}{\void}
Returns the number of items in the control.
\membersection{wxTreeCtrl::GetEditControl}\label{wxtreectrlgeteditcontrol}
\constfunc{wxTextCtrl *}{GetEditControl}{\void}
@ -351,6 +373,7 @@ if no label is being edited.
{\bf NB:} It is currently only implemented for wxMSW.
\membersection{wxTreeCtrl::GetFirstChild}\label{wxtreectrlgetfirstchild}
\constfunc{wxTreeItemId}{GetFirstChild}{\param{const wxTreeItemId\&}{ item}, \param{wxTreeItemIdValue \& }{cookie}}
@ -376,30 +399,35 @@ value are both returned as a tuple containing the two values.}
\perlnote{In wxPerl this method only takes the {\tt item} parameter, and
returns a 2-element list {\tt ( item, cookie )}.}
\membersection{wxTreeCtrl::GetFirstVisibleItem}\label{wxtreectrlgetfirstvisibleitem}
\constfunc{wxTreeItemId}{GetFirstVisibleItem}{\void}
Returns the first visible item.
\membersection{wxTreeCtrl::GetImageList}\label{wxtreectrlgetimagelist}
\constfunc{wxImageList*}{GetImageList}{\void}
Returns the normal image list.
\membersection{wxTreeCtrl::GetIndent}\label{wxtreectrlgetindent}
\constfunc{int}{GetIndent}{\void}
Returns the current tree control indentation.
\membersection{wxTreeCtrl::GetItemBackgroundColour}\label{wxtreectrlgetitembackgroundcolour}
\constfunc{wxColour}{GetItemBackgroundColour}{\param{const wxTreeItemId\&}{ item}}
Returns the background colour of the item.
\membersection{wxTreeCtrl::GetItemData}\label{wxtreectrlgetitemdata}
\constfunc{wxTreeItemData*}{GetItemData}{\param{const wxTreeItemId\&}{ item}}
@ -427,12 +455,14 @@ tree->GetItemData( item )->GetData(); ).}
\end{twocollist}}
}
\membersection{wxTreeCtrl::GetItemFont}\label{wxtreectrlgetitemfont}
\constfunc{wxFont}{GetItemFont}{\param{const wxTreeItemId\&}{ item}}
Returns the font of the item label.
\membersection{wxTreeCtrl::GetItemImage}\label{wxtreectrlgetitemimage}
\constfunc{int}{GetItemImage}{\param{const wxTreeItemId\& }{item},
@ -451,18 +481,21 @@ item is expanded and the normal image is shown when it is collapsed)
(which is shown when an expanded item is currently selected)
\end{itemize}
\membersection{wxTreeCtrl::GetItemText}\label{wxtreectrlgetitemtext}
\constfunc{wxString}{GetItemText}{\param{const wxTreeItemId\&}{ item}}
Returns the item label.
\membersection{wxTreeCtrl::GetItemTextColour}\label{wxtreectrlgetitemtextcolour}
\constfunc{wxColour}{GetItemTextColour}{\param{const wxTreeItemId\&}{ item}}
Returns the colour of the item label.
\membersection{wxTreeCtrl::GetLastChild}\label{wxtreectrlgetlastchild}
\constfunc{wxTreeItemId}{GetLastChild}{\param{const wxTreeItemId\&}{ item}}
@ -475,6 +508,7 @@ Returns the last child of the item (or an invalid tree item if this item has no
\helpref{wxTreeCtrl::GetNextSibling}{wxtreectrlgetnextsibling},
\helpref{GetLastChild}{wxtreectrlgetlastchild}
\membersection{wxTreeCtrl::GetNextChild}\label{wxtreectrlgetnextchild}
\constfunc{wxTreeItemId}{GetNextChild}{\param{const wxTreeItemId\&}{ item}, \param{wxTreeItemIdValue \& }{cookie}}
@ -499,6 +533,7 @@ value are both returned as a tuple containing the two values.}
\perlnote{In wxPerl this method returns a 2-element list
{\tt ( item, cookie )}, instead of modifying its parameters.}
\membersection{wxTreeCtrl::GetNextSibling}\label{wxtreectrlgetnextsibling}
\constfunc{wxTreeItemId}{GetNextSibling}{\param{const wxTreeItemId\&}{ item}}
@ -511,18 +546,21 @@ Returns an invalid tree item if there are no further siblings.
\helpref{wxTreeCtrl::GetPrevSibling}{wxtreectrlgetprevsibling}
\membersection{wxTreeCtrl::GetNextVisible}\label{wxtreectrlgetnextvisible}
\constfunc{wxTreeItemId}{GetNextVisible}{\param{const wxTreeItemId\&}{ item}}
Returns the next visible item.
\membersection{wxTreeCtrl::GetItemParent}\label{wxtreectrlgetitemparent}
\constfunc{wxTreeItemId}{GetItemParent}{\param{const wxTreeItemId\&}{ item}}
Returns the item's parent.
\membersection{wxTreeCtrl::GetParent}\label{wxtreectrlgetparent}
\constfunc{wxTreeItemId}{GetParent}{\param{const wxTreeItemId\&}{ item}}
@ -535,6 +573,7 @@ Returns the item's parent.
\pythonnote{This method is named {\tt GetItemParent} to avoid a name
clash with wxWindow::GetParent.}
\membersection{wxTreeCtrl::GetPrevSibling}\label{wxtreectrlgetprevsibling}
\constfunc{wxTreeItemId}{GetPrevSibling}{\param{const wxTreeItemId\&}{ item}}
@ -547,18 +586,21 @@ Returns an invalid tree item if there are no further children.
\helpref{wxTreeCtrl::GetNextSibling}{wxtreectrlgetnextsibling}
\membersection{wxTreeCtrl::GetPrevVisible}\label{wxtreectrlgetprevvisible}
\constfunc{wxTreeItemId}{GetPrevVisible}{\param{const wxTreeItemId\&}{ item}}
Returns the previous visible item.
\membersection{wxTreeCtrl::GetRootItem}\label{wxtreectrlgetrootitem}
\constfunc{wxTreeItemId}{GetRootItem}{\void}
Returns the root item for the tree control.
\membersection{wxTreeCtrl::GetItemSelectedImage}\label{wxtreectrlgetitemselectedimage}
\constfunc{int}{GetItemSelectedImage}{\param{const wxTreeItemId\& }{item}}
@ -566,6 +608,7 @@ Returns the root item for the tree control.
Gets the selected item image (this function is obsolete, use
{\tt GetItemImage(item, wxTreeItemIcon\_Selected}) instead).
\membersection{wxTreeCtrl::GetSelection}\label{wxtreectrlgetselection}
\constfunc{wxTreeItemId}{GetSelection}{\void}
@ -575,6 +618,7 @@ This function only works with the controls without wxTR\_MULTIPLE style, use
\helpref{GetSelections}{wxtreectrlgetselections} for the controls which do have
this style.
\membersection{wxTreeCtrl::GetSelections}\label{wxtreectrlgetselections}
\constfunc{size\_t}{GetSelections}{\param{wxArrayTreeItemIds\& }{selection}}
@ -590,12 +634,14 @@ and returns a Python list of {\tt wxTreeItemId}s.}
\perlnote{In wxPerl this method takes no parameters and returns a list of
{\tt Wx::TreeItemId}s.}
\membersection{wxTreeCtrl::GetStateImageList}\label{wxtreectrlgetstateimagelist}
\constfunc{wxImageList*}{GetStateImageList}{\void}
Returns the state image list (from which application-defined state images are taken).
\membersection{wxTreeCtrl::HitTest}\label{wxtreectrlhittest}
\func{wxTreeItemId}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}}
@ -624,6 +670,7 @@ returned as a tuple.}
\perlnote{In wxPerl this method only takes the {\tt point} parameter
and returns a 2-element list {\tt ( item, flags )}.}
\membersection{wxTreeCtrl::InsertItem}\label{wxtreectrlinsertitem}
\func{wxTreeItemId}{InsertItem}{\param{const wxTreeItemId\& }{parent}, \param{const wxTreeItemId\& }{previous}, \param{const wxString\&}{ text},
@ -644,6 +691,7 @@ both selected and unselected items.
\pythonnote{The second form of this method is called
{\tt InsertItemBefore} in wxPython.}
\membersection{wxTreeCtrl::IsBold}\label{wxtreectrlisbold}
\constfunc{bool}{IsBold}{\param{const wxTreeItemId\& }{item}}
@ -652,30 +700,35 @@ Returns {\tt true} if the given item is in bold state.
See also: \helpref{SetItemBold}{wxtreectrlsetitembold}
\membersection{wxTreeCtrl::IsExpanded}\label{wxtreectrlisexpanded}
\constfunc{bool}{IsExpanded}{\param{const wxTreeItemId\&}{ item}}
Returns {\tt true} if the item is expanded (only makes sense if it has children).
\membersection{wxTreeCtrl::IsSelected}\label{wxtreectrlisselected}
\constfunc{bool}{IsSelected}{\param{const wxTreeItemId\&}{ item}}
Returns {\tt true} if the item is selected.
\membersection{wxTreeCtrl::IsVisible}\label{wxtreectrlisvisible}
\constfunc{bool}{IsVisible}{\param{const wxTreeItemId\&}{ item}}
Returns {\tt true} if the item is visible (it might be outside the view, or not expanded).
\membersection{wxTreeCtrl::ItemHasChildren}\label{wxtreectrlitemhaschildren}
\constfunc{bool}{ItemHasChildren}{\param{const wxTreeItemId\&}{ item}}
Returns {\tt true} if the item has children.
\membersection{wxTreeCtrl::OnCompareItems}\label{wxtreectrloncompareitems}
\func{int}{OnCompareItems}{\param{const wxTreeItemId\& }{item1}, \param{const wxTreeItemId\& }{item2}}
@ -689,6 +742,7 @@ The base class version compares items alphabetically.
See also: \helpref{SortChildren}{wxtreectrlsortchildren}
\membersection{wxTreeCtrl::PrependItem}\label{wxtreectrlprependitem}
\func{wxTreeItemId}{PrependItem}{\param{const wxTreeItemId\& }{parent}, \param{const wxString\&}{ text},
@ -702,17 +756,21 @@ selected items, respectively.
If {\it image} > -1 and {\it selImage} is -1, the same image is used for
both selected and unselected items.
\membersection{wxTreeCtrl::ScrollTo}\label{wxtreectrlscrollto}
\func{void}{ScrollTo}{\param{const wxTreeItemId\&}{ item}}
Scrolls the specified item into view.
\membersection{wxTreeCtrl::SelectItem}\label{wxtreectrlselectitem}
\func{bool}{SelectItem}{\param{const wxTreeItemId\&}{ item}}
\func{bool}{SelectItem}{\param{const wxTreeItemId\&}{ item}, \param{bool }{select = \true}}
Selects the given item. In multiple selection controls, can be also used to
deselect a currently selected item if the value of \arg{select} is false.
Selects the given item.
\membersection{wxTreeCtrl::SetButtonsImageList}\label{wxtreectrlsetbuttonsimagelist}
@ -730,12 +788,14 @@ This function is only available in the generic version.
See also \helpref{AssignButtonsImageList}{wxtreectrlassignbuttonsimagelist}.
\membersection{wxTreeCtrl::SetIndent}\label{wxtreectrlsetindent}
\func{void}{SetIndent}{\param{int }{indent}}
Sets the indentation for the tree control.
\membersection{wxTreeCtrl::SetImageList}\label{wxtreectrlsetimagelist}
\func{void}{SetImageList}{\param{wxImageList*}{ imageList}}
@ -746,12 +806,14 @@ Sets the normal image list. Image list assigned with this method will
See also \helpref{AssignImageList}{wxtreectrlassignimagelist}.
\membersection{wxTreeCtrl::SetItemBackgroundColour}\label{wxtreectrlsetitembackgroundcolour}
\func{void}{SetItemBackgroundColour}{\param{const wxTreeItemId\&}{ item}, \param{const wxColour\& }{col}}
Sets the colour of the item's background.
\membersection{wxTreeCtrl::SetItemBold}\label{wxtreectrlsetitembold}
\func{void}{SetItemBold}{\param{const wxTreeItemId\& }{item}, \param{bool}{ bold = {\tt true}}}
@ -761,6 +823,7 @@ the normal state.
See also: \helpref{IsBold}{wxtreectrlisbold}
\membersection{wxTreeCtrl::SetItemData}\label{wxtreectrlsetitemdata}
\func{void}{SetItemData}{\param{const wxTreeItemId\&}{ item}, \param{wxTreeItemData* }{data}}
@ -783,6 +846,7 @@ tree->GetItemData( item )->SetData( data ); ).}
\end{twocollist}}
}
\membersection{wxTreeCtrl::SetItemFont}\label{wxtreectrlsetitemfont}
\func{void}{SetItemFont}{\param{const wxTreeItemId\&}{ item}, \param{const wxFont\& }{font}}
@ -795,6 +859,7 @@ although font attributes may vary.
\helpref{SetItemBold}{wxtreectrlsetitembold}
\membersection{wxTreeCtrl::SetItemHasChildren}\label{wxtreectrlsetitemhaschildren}
\func{void}{SetItemHasChildren}{\param{const wxTreeItemId\&}{ item}, \param{bool }{hasChildren = {\tt true}}}
@ -804,6 +869,7 @@ allow the user to expand the items which don't have any children now,
but instead adding them only when needed, thus minimizing memory
usage and loading time.
\membersection{wxTreeCtrl::SetItemImage}\label{wxtreectrlsetitemimage}
\func{void}{SetItemImage}{\param{const wxTreeItemId\&}{ item},
@ -812,24 +878,28 @@ usage and loading time.
Sets the specified item image. See \helpref{GetItemImage}{wxtreectrlgetitemimage}
for the description of the {\it which} parameter.
\membersection{wxTreeCtrl::SetItemSelectedImage}\label{wxtreectrlsetitemselectedimage}
\func{void}{SetItemSelectedImage}{\param{const wxTreeItemId\&}{ item}, \param{int }{selImage}}
Sets the selected item image (this function is obsolete, use {\tt SetItemImage(item, wxTreeItemIcon\_Selected}) instead).
\membersection{wxTreeCtrl::SetItemText}\label{wxtreectrlsetitemtext}
\func{void}{SetItemText}{\param{const wxTreeItemId\&}{ item}, \param{const wxString\& }{text}}
Sets the item label.
\membersection{wxTreeCtrl::SetItemTextColour}\label{wxtreectrlsetitemtextcolour}
\func{void}{SetItemTextColour}{\param{const wxTreeItemId\&}{ item}, \param{const wxColour\& }{col}}
Sets the colour of the item's text.
\membersection{wxTreeCtrl::SetStateImageList}\label{wxtreectrlsetstateimagelist}
\func{void}{SetStateImageList}{\param{wxImageList*}{ imageList}}
@ -846,6 +916,7 @@ Sets the mode flags associated with the display of the tree control.
The new mode takes effect immediately.
(Generic only; MSW ignores changes.)
\membersection{wxTreeCtrl::SortChildren}\label{wxtreectrlsortchildren}
\func{void}{SortChildren}{\param{const wxTreeItemId\&}{ item}}
@ -859,18 +930,29 @@ case-sensitive alphabetical order).
\helpref{wxTreeItemData}{wxtreeitemdata}, \helpref{OnCompareItems}{wxtreectrloncompareitems}
\membersection{wxTreeCtrl::Toggle}\label{wxtreectrltoggle}
\func{void}{Toggle}{\param{const wxTreeItemId\&}{ item}}
Toggles the given item between collapsed and expanded states.
\membersection{wxTreeCtrl::ToggleItemSelection}\label{wxtreectrltoggleitemselection}
\func{void}{ToggleItemSelection}{\param{const wxTreeItemId\&}{ item}}
Toggles the given item between selected and unselected states. For
multiselection controls only.
\membersection{wxTreeCtrl::Unselect}\label{wxtreectrlunselect}
\func{void}{Unselect}{\void}
Removes the selection from the currently selected item (if any).
\membersection{wxTreeCtrl::UnselectAll}\label{wxtreectrlunselectall}
\func{void}{UnselectAll}{\void}
@ -879,3 +961,11 @@ This function either behaves the same as \helpref{Unselect}{wxtreectrlunselect}
if the control doesn't have wxTR\_MULTIPLE style, or removes the selection from
all items if it does have this style.
\membersection{wxTreeCtrl::UnselectItem}\label{wxtreectrlunselectitem}
\func{void}{UnselectItem}{\param{const wxTreeItemId\& }{item}}
Unselects the given item. This works in multiselection controls only.

View File

@ -317,7 +317,12 @@ public:
// unselect all items (only makes sense for multiple selection control)
void UnselectAll();
// select this item
void SelectItem(const wxTreeItemId& item);
void SelectItem(const wxTreeItemId& item, bool select = true);
// unselect this item
void UnselectItem(const wxTreeItemId& item);
// toggle item selection
void ToggleItemSelection(const wxTreeItemId& item);
// make sure this item is visible (expanding the parent item and/or
// scrolling to this item if necessary)
void EnsureVisible(const wxTreeItemId& item);

View File

@ -97,7 +97,7 @@ static bool IsItemSelected(HWND hwndTV, HTREEITEM hItem)
return (tvi.state & TVIS_SELECTED) != 0;
}
static void SelectItem(HWND hwndTV, HTREEITEM hItem, bool select = true)
static bool SelectItem(HWND hwndTV, HTREEITEM hItem, bool select = true)
{
TV_ITEM tvi;
tvi.mask = TVIF_STATE | TVIF_HANDLE;
@ -108,7 +108,10 @@ static void SelectItem(HWND hwndTV, HTREEITEM hItem, bool select = true)
if ( TreeView_SetItem(hwndTV, &tvi) == -1 )
{
wxLogLastError(wxT("TreeView_SetItem"));
return false;
}
return true;
}
static inline void UnselectItem(HWND hwndTV, HTREEITEM htItem)
@ -1864,19 +1867,22 @@ void wxTreeCtrl::UnselectAll()
}
}
void wxTreeCtrl::SelectItem(const wxTreeItemId& item)
void wxTreeCtrl::SelectItem(const wxTreeItemId& item, bool select)
{
if ( m_windowStyle & wxTR_MULTIPLE )
{
#if wxUSE_CHECKBOXES_IN_MULTI_SEL_TREE
// selecting the item means checking it
SetItemCheck(item);
SetItemCheck(item, select);
#else // !wxUSE_CHECKBOXES_IN_MULTI_SEL_TREE
::SelectItem(GetHwnd(), HITEM(item));
::SelectItem(GetHwnd(), HITEM(item), select);
#endif // wxUSE_CHECKBOXES_IN_MULTI_SEL_TREE/!wxUSE_CHECKBOXES_IN_MULTI_SEL_TREE
}
else
{
wxASSERT_MSG( select,
_T("SelectItem(false) works only for multiselect") );
// inspite of the docs (MSDN Jan 99 edition), we don't seem to receive
// the notification from the control (i.e. TVN_SELCHANG{ED|ING}), so
// send them ourselves
@ -1888,11 +1894,7 @@ void wxTreeCtrl::SelectItem(const wxTreeItemId& item)
event.SetEventType(wxEVT_COMMAND_TREE_SEL_CHANGING);
if ( !GetEventHandler()->ProcessEvent(event) || event.IsAllowed() )
{
if ( !TreeView_SelectItem(GetHwnd(), HITEM(item)) )
{
wxLogLastError(wxT("TreeView_SelectItem"));
}
else
if ( ::SelectItem(GetHwnd(), HITEM(item), select) )
{
event.SetEventType(wxEVT_COMMAND_TREE_SEL_CHANGED);
(void)GetEventHandler()->ProcessEvent(event);
@ -1902,6 +1904,16 @@ void wxTreeCtrl::SelectItem(const wxTreeItemId& item)
}
}
void wxTreeCtrl::UnselectItem(const wxTreeItemId& item)
{
SelectItem(item, false);
}
void wxTreeCtrl::ToggleItemSelection(const wxTreeItemId& item)
{
SelectItem(item, !IsSelected(item));
}
void wxTreeCtrl::EnsureVisible(const wxTreeItemId& item)
{
// no error return
@ -2162,7 +2174,7 @@ long wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
SetFocus();
// toggle selected state
ToggleItemSelection(GetHwnd(), htItem);
::ToggleItemSelection(GetHwnd(), htItem);
::SetFocus(GetHwnd(), htItem);
@ -2325,7 +2337,7 @@ long wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
if ( bCtrl )
{
ToggleItemSelection(GetHwnd(), htSel);
::ToggleItemSelection(GetHwnd(), htSel);
}
else
{