Fix for bug# 956875. Added some wxCHECK's to MSW's wxTreeCtrl to make
things more consistent with the generic version. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27417 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
3ca7ba7403
commit
05b2a432c6
@ -1878,6 +1878,8 @@ size_t wxGenericTreeCtrl::GetSelections(wxArrayTreeItemIds &array) const
|
||||
|
||||
void wxGenericTreeCtrl::EnsureVisible(const wxTreeItemId& item)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
if (!item.IsOk()) return;
|
||||
|
||||
wxGenericTreeItem *gitem = (wxGenericTreeItem*) item.m_pItem;
|
||||
|
@ -888,8 +888,9 @@ void wxTreeCtrl::AssignStateImageList(wxImageList *imageList)
|
||||
size_t wxTreeCtrl::GetChildrenCount(const wxTreeItemId& item,
|
||||
bool recursively) const
|
||||
{
|
||||
TraverseCounter counter(this, item, recursively);
|
||||
wxCHECK_MSG( item.IsOk(), 0u, wxT("invalid tree item") );
|
||||
|
||||
TraverseCounter counter(this, item, recursively);
|
||||
return counter.GetCount() - 1;
|
||||
}
|
||||
|
||||
@ -927,6 +928,8 @@ bool wxTreeCtrl::SetForegroundColour(const wxColour &colour)
|
||||
|
||||
wxString wxTreeCtrl::GetItemText(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), wxT(""), wxT("invalid tree item") );
|
||||
|
||||
wxChar buf[512]; // the size is arbitrary...
|
||||
|
||||
wxTreeViewItem tvItem(item, TVIF_TEXT);
|
||||
@ -943,6 +946,8 @@ wxString wxTreeCtrl::GetItemText(const wxTreeItemId& item) const
|
||||
|
||||
void wxTreeCtrl::SetItemText(const wxTreeItemId& item, const wxString& text)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
if ( IS_VIRTUAL_ROOT(item) )
|
||||
return;
|
||||
|
||||
@ -1018,6 +1023,8 @@ void wxTreeCtrl::DoSetItemImages(const wxTreeItemId& item,
|
||||
int wxTreeCtrl::GetItemImage(const wxTreeItemId& item,
|
||||
wxTreeItemIcon which) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), -1, wxT("invalid tree item") );
|
||||
|
||||
if ( (HITEM(item) == TVI_ROOT) && (m_windowStyle & wxTR_HIDE_ROOT) )
|
||||
{
|
||||
// TODO: Maybe a hidden root can still provide images?
|
||||
@ -1057,6 +1064,8 @@ int wxTreeCtrl::GetItemImage(const wxTreeItemId& item,
|
||||
void wxTreeCtrl::SetItemImage(const wxTreeItemId& item, int image,
|
||||
wxTreeItemIcon which)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
if ( IS_VIRTUAL_ROOT(item) )
|
||||
{
|
||||
// TODO: Maybe a hidden root can still store images?
|
||||
@ -1129,6 +1138,8 @@ void wxTreeCtrl::SetItemImage(const wxTreeItemId& item, int image,
|
||||
|
||||
wxTreeItemData *wxTreeCtrl::GetItemData(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), NULL, wxT("invalid tree item") );
|
||||
|
||||
wxTreeViewItem tvItem(item, TVIF_PARAM);
|
||||
|
||||
// Hidden root may have data.
|
||||
@ -1154,6 +1165,8 @@ wxTreeItemData *wxTreeCtrl::GetItemData(const wxTreeItemId& item) const
|
||||
|
||||
void wxTreeCtrl::SetItemData(const wxTreeItemId& item, wxTreeItemData *data)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
if ( IS_VIRTUAL_ROOT(item) )
|
||||
{
|
||||
GET_VIRTUAL_ROOT()->SetData(data);
|
||||
@ -1213,6 +1226,8 @@ bool wxTreeCtrl::HasIndirectData(const wxTreeItemId& item) const
|
||||
|
||||
void wxTreeCtrl::SetItemHasChildren(const wxTreeItemId& item, bool has)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
if ( IS_VIRTUAL_ROOT(item) )
|
||||
return;
|
||||
|
||||
@ -1223,6 +1238,8 @@ void wxTreeCtrl::SetItemHasChildren(const wxTreeItemId& item, bool has)
|
||||
|
||||
void wxTreeCtrl::SetItemBold(const wxTreeItemId& item, bool bold)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
if ( IS_VIRTUAL_ROOT(item) )
|
||||
return;
|
||||
|
||||
@ -1255,28 +1272,33 @@ void wxTreeCtrl::RefreshItem(const wxTreeItemId& item)
|
||||
|
||||
wxColour wxTreeCtrl::GetItemTextColour(const wxTreeItemId& item) const
|
||||
{
|
||||
wxMapTreeAttr::const_iterator it = m_attrs.find(item.m_pItem);
|
||||
wxCHECK_MSG( item.IsOk(), wxNullColour, wxT("invalid tree item") );
|
||||
|
||||
wxMapTreeAttr::const_iterator it = m_attrs.find(item.m_pItem);
|
||||
return it == m_attrs.end() ? wxNullColour : it->second->GetTextColour();
|
||||
}
|
||||
|
||||
wxColour wxTreeCtrl::GetItemBackgroundColour(const wxTreeItemId& item) const
|
||||
{
|
||||
wxMapTreeAttr::const_iterator it = m_attrs.find(item.m_pItem);
|
||||
wxCHECK_MSG( item.IsOk(), wxNullColour, wxT("invalid tree item") );
|
||||
|
||||
wxMapTreeAttr::const_iterator it = m_attrs.find(item.m_pItem);
|
||||
return it == m_attrs.end() ? wxNullColour : it->second->GetBackgroundColour();
|
||||
}
|
||||
|
||||
wxFont wxTreeCtrl::GetItemFont(const wxTreeItemId& item) const
|
||||
{
|
||||
wxMapTreeAttr::const_iterator it = m_attrs.find(item.m_pItem);
|
||||
wxCHECK_MSG( item.IsOk(), wxNullFont, wxT("invalid tree item") );
|
||||
|
||||
wxMapTreeAttr::const_iterator it = m_attrs.find(item.m_pItem);
|
||||
return it == m_attrs.end() ? wxNullFont : it->second->GetFont();
|
||||
}
|
||||
|
||||
void wxTreeCtrl::SetItemTextColour(const wxTreeItemId& item,
|
||||
const wxColour& col)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
wxTreeItemAttr *attr;
|
||||
wxMapTreeAttr::iterator it = m_attrs.find(item.m_pItem);
|
||||
if ( it == m_attrs.end() )
|
||||
@ -1299,6 +1321,8 @@ void wxTreeCtrl::SetItemTextColour(const wxTreeItemId& item,
|
||||
void wxTreeCtrl::SetItemBackgroundColour(const wxTreeItemId& item,
|
||||
const wxColour& col)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
wxTreeItemAttr *attr;
|
||||
wxMapTreeAttr::iterator it = m_attrs.find(item.m_pItem);
|
||||
if ( it == m_attrs.end() )
|
||||
@ -1320,6 +1344,8 @@ void wxTreeCtrl::SetItemBackgroundColour(const wxTreeItemId& item,
|
||||
|
||||
void wxTreeCtrl::SetItemFont(const wxTreeItemId& item, const wxFont& font)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
wxTreeItemAttr *attr;
|
||||
wxMapTreeAttr::iterator it = m_attrs.find(item.m_pItem);
|
||||
if ( it == m_attrs.end() )
|
||||
@ -1345,6 +1371,8 @@ void wxTreeCtrl::SetItemFont(const wxTreeItemId& item, const wxFont& font)
|
||||
|
||||
bool wxTreeCtrl::IsVisible(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
|
||||
|
||||
if ( item == wxTreeItemId(TVI_ROOT) )
|
||||
{
|
||||
// virtual (hidden) root is never visible
|
||||
@ -1374,6 +1402,8 @@ bool wxTreeCtrl::IsVisible(const wxTreeItemId& item) const
|
||||
|
||||
bool wxTreeCtrl::ItemHasChildren(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
|
||||
|
||||
wxTreeViewItem tvItem(item, TVIF_CHILDREN);
|
||||
DoGetItem(&tvItem);
|
||||
|
||||
@ -1382,8 +1412,7 @@ bool wxTreeCtrl::ItemHasChildren(const wxTreeItemId& item) const
|
||||
|
||||
bool wxTreeCtrl::IsExpanded(const wxTreeItemId& item) const
|
||||
{
|
||||
// probably not a good idea to put it here
|
||||
//wxASSERT( ItemHasChildren(item) );
|
||||
wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
|
||||
|
||||
wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_EXPANDED);
|
||||
DoGetItem(&tvItem);
|
||||
@ -1393,6 +1422,8 @@ bool wxTreeCtrl::IsExpanded(const wxTreeItemId& item) const
|
||||
|
||||
bool wxTreeCtrl::IsSelected(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
|
||||
|
||||
wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_SELECTED);
|
||||
DoGetItem(&tvItem);
|
||||
|
||||
@ -1401,6 +1432,8 @@ bool wxTreeCtrl::IsSelected(const wxTreeItemId& item) const
|
||||
|
||||
bool wxTreeCtrl::IsBold(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
|
||||
|
||||
wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_BOLD);
|
||||
DoGetItem(&tvItem);
|
||||
|
||||
@ -1430,6 +1463,8 @@ wxTreeItemId wxTreeCtrl::GetSelection() const
|
||||
|
||||
wxTreeItemId wxTreeCtrl::GetItemParent(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), wxTreeItemId(), wxT("invalid tree item") );
|
||||
|
||||
HTREEITEM hItem;
|
||||
|
||||
if ( IS_VIRTUAL_ROOT(item) )
|
||||
@ -1453,6 +1488,8 @@ wxTreeItemId wxTreeCtrl::GetItemParent(const wxTreeItemId& item) const
|
||||
wxTreeItemId wxTreeCtrl::GetFirstChild(const wxTreeItemId& item,
|
||||
wxTreeItemIdValue& cookie) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), wxTreeItemId(), wxT("invalid tree item") );
|
||||
|
||||
// remember the last child returned in 'cookie'
|
||||
cookie = TreeView_GetChild(GetHwnd(), HITEM(item));
|
||||
|
||||
@ -1474,6 +1511,8 @@ wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& WXUNUSED(item),
|
||||
wxTreeItemId wxTreeCtrl::GetFirstChild(const wxTreeItemId& item,
|
||||
long& cookie) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), wxTreeItemId(), wxT("invalid tree item") );
|
||||
|
||||
cookie = (long)TreeView_GetChild(GetHwnd(), HITEM(item));
|
||||
|
||||
return wxTreeItemId((void *)cookie);
|
||||
@ -1496,6 +1535,8 @@ wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& WXUNUSED(item),
|
||||
|
||||
wxTreeItemId wxTreeCtrl::GetLastChild(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), wxTreeItemId(), wxT("invalid tree item") );
|
||||
|
||||
// can this be done more efficiently?
|
||||
wxTreeItemIdValue cookie;
|
||||
|
||||
@ -1512,11 +1553,13 @@ wxTreeItemId wxTreeCtrl::GetLastChild(const wxTreeItemId& item) const
|
||||
|
||||
wxTreeItemId wxTreeCtrl::GetNextSibling(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), wxTreeItemId(), wxT("invalid tree item") );
|
||||
return wxTreeItemId(TreeView_GetNextSibling(GetHwnd(), HITEM(item)));
|
||||
}
|
||||
|
||||
wxTreeItemId wxTreeCtrl::GetPrevSibling(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), wxTreeItemId(), wxT("invalid tree item") );
|
||||
return wxTreeItemId(TreeView_GetPrevSibling(GetHwnd(), HITEM(item)));
|
||||
}
|
||||
|
||||
@ -1527,6 +1570,7 @@ wxTreeItemId wxTreeCtrl::GetFirstVisibleItem() const
|
||||
|
||||
wxTreeItemId wxTreeCtrl::GetNextVisible(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), wxTreeItemId(), wxT("invalid tree item") );
|
||||
wxASSERT_MSG( IsVisible(item), wxT("The item you call GetNextVisible() for must be visible itself!"));
|
||||
|
||||
return wxTreeItemId(TreeView_GetNextVisible(GetHwnd(), HITEM(item)));
|
||||
@ -1534,6 +1578,7 @@ wxTreeItemId wxTreeCtrl::GetNextVisible(const wxTreeItemId& item) const
|
||||
|
||||
wxTreeItemId wxTreeCtrl::GetPrevVisible(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), wxTreeItemId(), wxT("invalid tree item") );
|
||||
wxASSERT_MSG( IsVisible(item), wxT("The item you call GetPrevVisible() for must be visible itself!"));
|
||||
|
||||
return wxTreeItemId(TreeView_GetPrevVisible(GetHwnd(), HITEM(item)));
|
||||
@ -1545,6 +1590,8 @@ wxTreeItemId wxTreeCtrl::GetPrevVisible(const wxTreeItemId& item) const
|
||||
|
||||
bool wxTreeCtrl::IsItemChecked(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), FALSE, wxT("invalid tree item") );
|
||||
|
||||
// receive the desired information.
|
||||
wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_STATEIMAGEMASK);
|
||||
DoGetItem(&tvItem);
|
||||
@ -1555,6 +1602,8 @@ bool wxTreeCtrl::IsItemChecked(const wxTreeItemId& item) const
|
||||
|
||||
void wxTreeCtrl::SetItemCheck(const wxTreeItemId& item, bool check)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
// receive the desired information.
|
||||
wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_STATEIMAGEMASK);
|
||||
|
||||
@ -2103,6 +2152,8 @@ int wxTreeCtrl::OnCompareItems(const wxTreeItemId& item1,
|
||||
|
||||
void wxTreeCtrl::SortChildren(const wxTreeItemId& item)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
|
||||
|
||||
// rely on the fact that TreeView_SortChildren does the same thing as our
|
||||
// default behaviour, i.e. sorts items alphabetically and so call it
|
||||
// directly if we're not in derived class (much more efficient!)
|
||||
|
Loading…
Reference in New Issue
Block a user