wxTreeControl::Get/SetSelection implemented

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@346 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1998-07-23 17:53:50 +00:00
parent 543e7dd22a
commit 389cdc7ae4
2 changed files with 64 additions and 43 deletions

View File

@@ -295,7 +295,7 @@ public:
long GetParent( long item ) const;
long GetRootItem() const;
long GetSelection() const;
bool SelectItem( long item ) const;
bool SelectItem( long item );
bool ItemHasChildren( long item ) const;
void SetIndent( int indent );
int GetIndent() const;
@@ -317,6 +317,10 @@ public:
void SetImageList(wxImageList *imageList, int which = wxIMAGE_LIST_NORMAL);
private:
// set the selection to the specified item generating appropriate event(s) if
// not disabled
void SelectItem(wxGenericTreeItem *item, bool bDoEvents = TRUE);
wxGenericTreeItem *m_anchor;
wxGenericTreeItem *m_current;
bool m_hasFocus;

View File

@@ -3,7 +3,7 @@
// Purpose:
// Author: Robert Roebling
// Created: 01/02/97
// Id:
// Id: $Id$
// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
@@ -14,6 +14,7 @@
#include "wx/treectrl.h"
#include "wx/settings.h"
#include "wx/log.h"
//-----------------------------------------------------------------------------
// wxTreeItem
@@ -701,14 +702,41 @@ long wxTreeCtrl::GetRootItem() const
long wxTreeCtrl::GetSelection() const
{
return 0;
return m_current ? m_current->GetItemId() : -1;
};
bool wxTreeCtrl::SelectItem( long WXUNUSED(item) ) const
bool wxTreeCtrl::SelectItem(long itemId)
{
wxGenericTreeItem *pItem = FindItem(itemId);
if ( !pItem ) {
wxLogDebug("Can't select an item %d which doesn't exist.", itemId);
return FALSE;
}
SelectItem(pItem, FALSE /* no events */);
return TRUE;
};
void wxTreeCtrl::SelectItem(wxGenericTreeItem *item, bool bDoEvents)
{
if (m_current != item)
{
if (m_current)
{
m_current->SetHilight( FALSE );
RefreshLine( m_current );
};
m_current = item;
m_current->SetHilight( TRUE );
RefreshLine( m_current );
if ( bDoEvents )
m_current->SendSelected( this );
}
}
bool wxTreeCtrl::ItemHasChildren( long item ) const
{
wxGenericTreeItem *i = FindItem( item );
@@ -948,18 +976,7 @@ void wxTreeCtrl::OnMouse( const wxMouseEvent &event )
if ((flag != wxTREE_HITTEST_ONITEMBUTTON) &&
(flag != wxTREE_HITTEST_ONITEMLABEL)) return;
if (m_current != item)
{
if (m_current)
{
m_current->SetHilight( FALSE );
RefreshLine( m_current );
};
m_current = item;
m_current->SetHilight( TRUE );
RefreshLine( m_current );
m_current->SendSelected( this );
};
SelectItem(item);
if (event.LeftDClick())
m_current->SendKeyDown( this );