]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/treectrl.tex
Always draw the selection of selected items, not just when they have
[wxWidgets.git] / docs / latex / wx / treectrl.tex
index c5d51fdeb0d5818517cc00390c3e28d3cbccf4fa..a7f028a967566e0b09dcce670d601a907a2206b2 100644 (file)
@@ -1,3 +1,14 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name:        treectrl.tex
+%% Purpose:     wxTreeCtrl documentation
+%% Author:      wxWidgets Team
+%% Modified by:
+%% Created:
+%% RCS-ID:      $Id$
+%% Copyright:   (c) wxWidgets Team
+%% License:     wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 \section{\class{wxTreeCtrl}}\label{wxtreectrl}
 
 A tree control presents information as a hierarchy, with items that may be expanded
@@ -27,15 +38,11 @@ if you wish the user to be able to edit labels in the tree control.}
 to document that no buttons are to be drawn.}
 \twocolitem{\windowstyle{wxTR\_HAS\_BUTTONS}}{Use this style
 to show + and - buttons to the left of parent items.}
-\twocolitem{\windowstyle{wxTR\_TWIST\_BUTTONS}}{Use this style
-to show Mac-style twister buttons to the left of parent items.
-If both wxTR\_HAS\_BUTTONS and wxTR\_TWIST\_BUTTONS are given,
-twister buttons are generated.  Generic only.}
 \twocolitem{\windowstyle{wxTR\_NO\_LINES}}{Use this style
 to hide vertical level connectors.}
 \twocolitem{\windowstyle{wxTR\_FULL\_ROW\_HIGHLIGHT}}{Use this style to have the background
 colour and the selection highlight extend over the entire horizontal
-row of the tree control window. (This flag is ignored under Windows unless you 
+row of the tree control window. (This flag is ignored under Windows unless you
 specify wxTR\_NO\_LINES as well.) }
 \twocolitem{\windowstyle{wxTR\_LINES\_AT\_ROOT}}{Use this style
 to show lines between root nodes.
@@ -75,6 +82,7 @@ functions that take a \helpref{wxTreeEvent}{wxtreeevent} argument.
 \begin{twocollist}\itemsep=0pt
 \twocolitem{{\bf EVT\_TREE\_BEGIN\_DRAG(id, func)}}{Begin dragging with the left mouse button.}
 \twocolitem{{\bf EVT\_TREE\_BEGIN\_RDRAG(id, func)}}{Begin dragging with the right mouse button.}
+\twocolitem{{\bf EVT\_TREE\_END\_DRAG(id, func)}}{End dragging with the left or right mouse button.}
 \twocolitem{{\bf EVT\_TREE\_BEGIN\_LABEL\_EDIT(id, func)}}{Begin editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
 \twocolitem{{\bf EVT\_TREE\_END\_LABEL\_EDIT(id, func)}}{Finish editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
 \twocolitem{{\bf EVT\_TREE\_DELETE\_ITEM(id, func)}}{Delete an item.}
@@ -85,9 +93,15 @@ functions that take a \helpref{wxTreeEvent}{wxtreeevent} argument.
 \twocolitem{{\bf EVT\_TREE\_ITEM\_COLLAPSING(id, func)}}{The item is being collapsed. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
 \twocolitem{{\bf EVT\_TREE\_ITEM\_EXPANDED(id, func)}}{The item has been expanded.}
 \twocolitem{{\bf EVT\_TREE\_ITEM\_EXPANDING(id, func)}}{The item is being expanded. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_RIGHT\_CLICK(id, func)}}{The user has clicked the item with the right mouse button.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_MIDDLE\_CLICK(id, func)}}{The user has clicked the item with the middle mouse button.}
 \twocolitem{{\bf EVT\_TREE\_SEL\_CHANGED(id, func)}}{Selection has changed.}
 \twocolitem{{\bf EVT\_TREE\_SEL\_CHANGING(id, func)}}{Selection is changing. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.}
 \twocolitem{{\bf EVT\_TREE\_KEY\_DOWN(id, func)}}{A key has been pressed.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_GETTOOLTIP(id, func)}}{The opportunity to set the item tooltip
+is being given to the application (call wxTreeEvent::SetToolTip). Windows only.}
+\twocolitem{{\bf EVT\_TREE\_ITEM\_MENU(id, func)}}{The context menu for the selected item has been requested, either by a right click or by using the menu key.}
+\twocolitem{{\bf EVT\_TREE\_STATE\_IMAGE\_CLICK(id, func)}}{The state image has been clicked. Windows only.}
 \end{twocollist}
 
 \wxheading{See also}
@@ -101,13 +115,13 @@ wxTreeCtrl class uses the standard common treeview control under Win32
 implemented in the system library {\tt comctl32.dll}. Some versions of this
 library are known to have bugs with handling the tree control colours: the
 usual symptom is that the expanded items leave black (or otherwise incorrectly
-coloured) background behind them, especially for the controls using non
-default background colour. The recommended solution is to upgrade the {\tt comctl32.dll}
+coloured) background behind them, especially for the controls using non-default background colour. The recommended solution is to upgrade the {\tt comctl32.dll}
 to a newer version: see
-\urlref{http://www.microsoft.com/msdownload/ieplatform/ie/comctrlx86.asp}{http://www.microsoft.com/msdownload/ieplatform/ie/comctrlx86.asp}.
+\urlref{http://www.microsoft.com/downloads/release.asp?ReleaseID=11916}{http://www.microsoft.com/downloads/release.asp?ReleaseID=11916}.
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
+
 \membersection{wxTreeCtrl::wxTreeCtrl}\label{wxtreectrlconstr}
 
 \func{}{wxTreeCtrl}{\void}
@@ -141,12 +155,14 @@ appropriately.}
 
 \helpref{wxTreeCtrl::Create}{wxtreectrlcreate}, \helpref{wxValidator}{wxvalidator}
 
-\membersection{wxTreeCtrl::\destruct{wxTreeCtrl}}
+
+\membersection{wxTreeCtrl::\destruct{wxTreeCtrl}}\label{wxtreectrldtor}
 
 \func{void}{\destruct{wxTreeCtrl}}{\void}
 
 Destructor, destroying the list control.
 
+
 \membersection{wxTreeCtrl::AddRoot}\label{wxtreectrladdroot}
 
 \func{wxTreeItemId}{AddRoot}{\param{const wxString\&}{ text},
@@ -160,6 +176,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},
@@ -173,6 +190,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}}
@@ -189,6 +207,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}}
@@ -199,6 +218,7 @@ be automatically deleted by wxTreeCtrl as appropriate
 
 See also \helpref{SetImageList}{wxtreectrlsetimagelist}.
 
+
 \membersection{wxTreeCtrl::AssignStateImageList}\label{wxtreectrlassignstateimagelist}
 
 \func{void}{AssignStateImageList}{\param{wxImageList*}{ imageList}}
@@ -210,18 +230,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
@@ -230,6 +253,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}}
@@ -239,26 +263,29 @@ generated.
 
 This function may cause a subsequent call to GetNextChild to fail.
 
+
 \membersection{wxTreeCtrl::DeleteAllItems}\label{wxtreectrldeleteallitems}
 
 \func{void}{DeleteAllItems}{\void}
 
-Deletes all the items in the control. Note that this may not generate 
+Deletes all 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}}
 
 Deletes all children of the given item (but not the item itself). Note that
-this will {\bf not} generate any events unlike 
+this will {\bf not} generate any events unlike
 \helpref{Delete}{wxtreectrldelete} method.
 
 If you have called \helpref{wxTreeCtrl::SetItemHasChildren}{wxtreectrlsetitemhaschildren}, you
 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}}
@@ -276,6 +303,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}}
@@ -288,18 +316,35 @@ 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::ExpandAll}\label{wxtreectrlexpandall}
+
+\func{void}{Expand}{\void}
+
+Expands all items in the tree.
+
+
+\membersection{wxTreeCtrl::ExpandAllChildren}\label{wxtreectrlexpandallchildren}
+
+\func{void}{ExpandAllChildren}{\param{const wxTreeItemId\&}{ item}}
+
+Expands the given item and all its children recursively.
+
+
 \membersection{wxTreeCtrl::GetBoundingRect}\label{wxtreectrlgetitemrect}
 
 \constfunc{bool}{GetBoundingRect}{\param{const wxTreeItemId\&}{ item}, \param{wxRect\& }{rect}, \param{bool }{textOnly = {\tt false}}}
@@ -309,16 +354,21 @@ only the rectangle around the item's label will be returned, otherwise the
 item's image is also taken into account.
 
 The return value is {\tt true} if the rectangle was successfully retrieved or {\tt false}
-if it was not (in this case {\it rect} is not changed) - for example, if the
+if it was not (in this case {\it rect} is not changed) -- for example, if the
 item is currently invisible.
 
+Notice that the rectangle coordinates are logical, not physical ones. So, for
+example, the x coordinate may be negative if the tree has a horizontal
+scrollbar and its position is not $0$.
+
 \pythonnote{The wxPython version of this method requires only the
 {\tt item} and {\tt textOnly} parameters.  The return value is either a
 {\tt wxRect} object or {\tt None}.}
 
-\perlnote{In wxPerl this method only takes the parameters {\tt item} and 
+\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}
@@ -327,19 +377,22 @@ 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}}}
+\constfunc{unsigned int}{GetChildrenCount}{\param{const wxTreeItemId\&}{ item}, \param{bool}{ recursively = {\tt true}}}
 
 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}
+\constfunc{unsigned int}{GetCount}{\void}
 
 Returns the number of items in the control.
 
+
 \membersection{wxTreeCtrl::GetEditControl}\label{wxtreectrlgeteditcontrol}
 
 \constfunc{wxTextCtrl *}{GetEditControl}{\void}
@@ -349,6 +402,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}}
@@ -361,7 +415,7 @@ to make these functions reentrant (i.e. allow more than one
 enumeration on one and the same object simultaneously). The cookie passed to
 GetFirstChild and GetNextChild should be the same variable.
 
-Returns an invalid tree item if there are no further children.
+Returns an invalid tree item (i.e. IsOk() returns {\tt false}) if there are no further children.
 
 \wxheading{See also}
 
@@ -374,30 +428,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}}
@@ -414,16 +473,16 @@ Returns the tree item data associated with the item.
 \twocolitem{{\bf GetPyData(item)}}{Returns the Python Object
 associated with the wxTreeItemData for the given item Id.}
 \end{twocollist}}
-}
+}%
 
 \perlnote{wxPerl provides the following shortcut method:
 \indented{2cm}{
 \begin{twocollist}\itemsep=0pt
 \twocolitem{{\bf GetPlData( item )}}{Returns the Perl data
-associated with the Wx::TreeItemData ( it is just the same as
-tree->GetItemData( item )->GetData(); ).}
+associated with the Wx::TreeItemData. It is just the same as
+tree->GetItemData(item)->GetData().}
 \end{twocollist}}
-}
+}%
 
 \membersection{wxTreeCtrl::GetItemFont}\label{wxtreectrlgetitemfont}
 
@@ -431,6 +490,7 @@ tree->GetItemData( item )->GetData(); ).}
 
 Returns the font of the item label.
 
+
 \membersection{wxTreeCtrl::GetItemImage}\label{wxtreectrlgetitemimage}
 
 \constfunc{int}{GetItemImage}{\param{const wxTreeItemId\& }{item},
@@ -449,18 +509,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}}
@@ -473,6 +536,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}}
@@ -497,6 +561,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}}
@@ -509,29 +574,20 @@ 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}}
-
-{\bf NOTE:} This function is deprecated and will only work if {\tt WXWIN\_COMPATIBILITY\_2\_2}
-is defined.  Use \helpref{wxTreeCtrl::GetItemParent}{wxtreectrlgetitemparent} instead.
-
-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}
 
@@ -545,18 +601,33 @@ 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::GetQuickBestSize}\label{wxtreectrlgetquickbestsize}
+
+\constfunc{bool}{GetQuickBestSize}{\void}
+
+Returns true if the control will use a quick calculation for the best size,
+looking only at the first and last items. The default is false.
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::SetQuickBestSize}{wxtreectrlsetquickbestsize}
+
+
 \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}}
@@ -564,6 +635,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}
@@ -573,9 +645,10 @@ 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}}
+\constfunc{unsigned int}{GetSelections}{\param{wxArrayTreeItemIds\& }{selection}}
 
 Fills the array of tree items passed in with the currently selected items. This
 function can be called only if the control has the wxTR\_MULTIPLE style.
@@ -588,15 +661,17 @@ 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}}
+\constfunc{wxTreeItemId}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}}
 
 Calculates which (if any) item is under the given point, returning the tree item
 id at this point plus extra information {\it flags}. {\it flags} is a bitlist of the following:
@@ -622,6 +697,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},
@@ -642,6 +718,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}}
@@ -650,30 +727,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}}
@@ -683,10 +765,16 @@ items in the tree control. The function should return a negative, zero or
 positive value if the first item is less than, equal to or greater than the
 second one.
 
-The base class version compares items alphabetically.
+Please note that you \textbf{must} use wxRTTI macros 
+\helpref{DECLARE\_DYNAMIC\_CLASS}{declaredynamicclass} and 
+\helpref{IMPLEMENT\_DYNAMIC\_CLASS}{implementdynamicclass} if you override this
+function because otherwise the base class considers that it is not overridden
+and uses the default comparison, i.e. sorts the items alphabetically, which
+allows it optimize away the calls to the virtual function completely.
 
 See also: \helpref{SortChildren}{wxtreectrlsortchildren}
 
+
 \membersection{wxTreeCtrl::PrependItem}\label{wxtreectrlprependitem}
 
 \func{wxTreeItemId}{PrependItem}{\param{const wxTreeItemId\& }{parent}, \param{const wxString\&}{ text},
@@ -700,17 +788,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{void}{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}
 
@@ -728,12 +820,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}}
@@ -744,12 +838,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}}}
@@ -759,6 +855,7 @@ the normal state.
 
 See also: \helpref{IsBold}{wxtreectrlisbold}
 
+
 \membersection{wxTreeCtrl::SetItemData}\label{wxtreectrlsetitemdata}
 
 \func{void}{SetItemData}{\param{const wxTreeItemId\&}{ item}, \param{wxTreeItemData* }{data}}
@@ -770,16 +867,25 @@ Sets the item client data.
 \twocolitem{{\bf SetPyData(item, obj)}}{Associate the given Python
 Object with the wxTreeItemData for the given item Id.}
 \end{twocollist}}
-}
+}%
 
 \perlnote{wxPerl provides the following shortcut method:
 \indented{2cm}{
 \begin{twocollist}\itemsep=0pt
 \twocolitem{{\bf SetPlData( item, data )}}{Sets the Perl data
-associated with the Wx::TreeItemData ( it is just the same as
-tree->GetItemData( item )->SetData( data ); ).}
+associated with the Wx::TreeItemData. It is just the same as
+tree->GetItemData(item)->SetData(data).}
 \end{twocollist}}
-}
+}%
+
+\membersection{wxTreeCtrl::SetItemDropHighlight}\label{wxtreectrlsetitemdrophighlight}
+
+\func{void}{SetItemDropHighlight}{\param{const wxTreeItemId\&}{ item}, \param{bool}{highlight = {\tt true}}}
+
+Gives the item the visual feedback for Drag'n'Drop actions, which is
+useful if something is dragged from the outside onto the tree control
+(as opposed to a DnD operation within the tree control, which already
+is implemented internally).
 
 \membersection{wxTreeCtrl::SetItemFont}\label{wxtreectrlsetitemfont}
 
@@ -793,6 +899,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}}}
@@ -802,6 +909,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},
@@ -810,24 +918,41 @@ 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::SetQuickBestSize}\label{wxtreectrlsetquickbestsize}
+
+\func{void}{SetQuickBestSize}{\param{bool}{ quickBestSize}}
+
+If true is passed, specifies that the control will use a quick calculation for the best size,
+looking only at the first and last items. Otherwise, it will look at all items.
+The default is false.
+
+\wxheading{See also}
+
+\helpref{wxTreeCtrl::GetQuickBestSize}{wxtreectrlgetquickbestsize}
+
+
 \membersection{wxTreeCtrl::SetStateImageList}\label{wxtreectrlsetstateimagelist}
 
 \func{void}{SetStateImageList}{\param{wxImageList*}{ imageList}}
@@ -838,12 +963,15 @@ Image list assigned with this method will
 
 See also \helpref{AssignStateImageList}{wxtreectrlassignstateimagelist}.
 
+\membersection{wxTreeCtrl::SetWindowStyle}\label{wxtreectrlsetwindowstyle}
+
 \func{void}{SetWindowStyle}{\param{long}{styles}}
 
 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}}
@@ -857,18 +985,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}
@@ -877,3 +1016,10 @@ 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.
+