Applied patch [ 651287 ] adds missing wxTreeCtrl::GetEditControl

This patch implements a missing member in the generic
version of the wxTreeCtrl. The GetEditControl member is
currently not implemented in the generic tree control
used by wxGTK. This patch implements the feature by

1. adding a pointer to the wxTextTreeControl as a
member (m_textCtrl) of the wxGenericTreeCtrl class
2. making sure pointer was initialized to 0
3. using the member variable instead of the stack
variable in the wxGenericTreeCtrl::Edit member
4. making sure the new wxGenericTreeCtrl class
member is set to 0 when the control is set up for
deletion in Finish by calling a new protected member
(ResetTextControl) of the wxGenericTreeCtrl class.

These modification were discussed on the wx-dev list
under the "wxGTK - wxTreeCtrl::GetEditControl status?"
subject.

I have tested, but I certainly welcome comments and
further testing.

Pete Stieber


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18192 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart 2002-12-11 09:08:46 +00:00
parent 03d1ae1799
commit fbb1226068
2 changed files with 28 additions and 2 deletions

View File

@ -33,6 +33,7 @@ class WXDLLEXPORT wxTreeItemData;
class WXDLLEXPORT wxTreeRenameTimer;
class WXDLLEXPORT wxTreeFindTimer;
class WXDLLEXPORT wxTreeTextCtrl;
class WXDLLEXPORT wxTextCtrl;
// -----------------------------------------------------------------------------
// wxGenericTreeCtrl - the tree control
@ -315,6 +316,10 @@ public:
// been before.
void EditLabel( const wxTreeItemId& item ) { Edit( item ); }
void Edit( const wxTreeItemId& item );
// returns a pointer to the text edit control if the item is being
// edited, NULL otherwise (it's assumed that no more than one item may
// be edited simultaneously)
wxTextCtrl* GetEditControl() const;
// sorting
// this function is called to compare 2 items and should return -1, 0
@ -385,6 +390,7 @@ protected:
wxGenericTreeItem *m_dropTarget;
wxCursor m_oldCursor; // cursor is changed while dragging
wxGenericTreeItem *m_oldSelection;
wxTreeTextCtrl *m_textCtrl;
wxTimer *m_renameTimer;
@ -411,6 +417,9 @@ protected:
int image, int selectedImage,
wxTreeItemData *data);
// called by wxTextTreeCtrl when it marks itself for deletion
void ResetTextControl();
// find the first item starting with the given prefix after the given item
wxTreeItemId FindItem(const wxTreeItemId& id, const wxString& prefix) const;

View File

@ -427,6 +427,8 @@ void wxTreeTextCtrl::Finish()
{
if ( !m_finished )
{
m_owner->ResetTextControl();
wxPendingDelete.Append(this);
m_finished = TRUE;
@ -755,6 +757,7 @@ void wxGenericTreeCtrl::Init()
m_dragCount = 0;
m_isDragging = FALSE;
m_dropTarget = m_oldSelection = (wxGenericTreeItem *)NULL;
m_textCtrl = NULL;
m_renameTimer = NULL;
m_findTimer = NULL;
@ -1265,6 +1268,12 @@ wxTreeItemId wxGenericTreeCtrl::GetPrevVisible(const wxTreeItemId& item) const
return wxTreeItemId();
}
// called by wxTextTreeCtrl when it marks itself for deletion
void wxGenericTreeCtrl::ResetTextControl()
{
m_textCtrl = NULL;
}
// find the first item starting with the given prefix after the given item
wxTreeItemId wxGenericTreeCtrl::FindItem(const wxTreeItemId& idParent,
const wxString& prefixOrig) const
@ -2809,9 +2818,17 @@ void wxGenericTreeCtrl::Edit( const wxTreeItemId& item )
if ( m_dirty )
wxYieldIfNeeded();
wxTreeTextCtrl *text = new wxTreeTextCtrl(this, itemEdit);
m_textCtrl = new wxTreeTextCtrl(this, itemEdit);
text->SetFocus();
m_textCtrl->SetFocus();
}
// returns a pointer to the text edit control if the item is being
// edited, NULL otherwise (it's assumed that no more than one item may
// be edited simultaneously)
wxTextCtrl* wxGenericTreeCtrl::GetEditControl() const
{
return m_textCtrl;
}
bool wxGenericTreeCtrl::OnRenameAccept(wxGenericTreeItem *item,