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:
@@ -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;
|
||||
|
@@ -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)
|
||||
{
|
||||
return FALSE;
|
||||
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 );
|
||||
@@ -846,24 +874,24 @@ void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level,
|
||||
long tw, th;
|
||||
dc.GetTextExtent( item->m_text, &tw, &th );
|
||||
if (m_hasFocus)
|
||||
{
|
||||
{
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
dc.DrawRectangle( item->m_x-2, item->m_y-2, tw+4, th+4 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||
dc.DrawRectangle( item->m_x-2, item->m_y-2, tw+4, th+4 );
|
||||
}
|
||||
}
|
||||
dc.DrawText( item->m_text, item->m_x, item->m_y );
|
||||
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
dc.SetTextForeground( *wxBLACK );
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||
long tw, th;
|
||||
dc.GetTextExtent( item->m_text, &tw, &th );
|
||||
dc.DrawRectangle( item->m_x-2, item->m_y-2, tw+4, th+4 );
|
||||
@@ -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 );
|
||||
|
Reference in New Issue
Block a user