Hi,
Thanks for the wxTreeListCtrl.
There are two bugs in your code that break "Edit Label" functionality.
Bug 1. After several renames, I get either intermittent crashes or failure of
the Edit control to show and work properly.
The bug is due to the usage of a deleted object. Say, we're editing a label and
hit ENTER. In the OnChar handler, the edit control is marked for some
asynchronous deletion, and then m_finished flag is set.
void wxEditTextCtrl::OnChar( wxKeyEvent &event )
{
//...
if (event.GetKeyCode() == WXK_RETURN)
{
if (!wxPendingDelete.Member(this))
wxPendingDelete.Append(this);
m_finished = true;
// ...
}
// ...
}
At some point in time _later_, the destructor is called (because the object has
been pending for deletion), whicn in turn calls CancelEdit. CancelEdit exits
immediately, because m_finished is set. So there's no chance that
m_renameControl of the owner is reset to NULL.
void wxEditTextCtrl::CancelEdit() {
if (m_finished) return;
// ...
if (m_owner) {
m_owner->OnRenameAccept(true); // cancelled
if (m_owner->m_renameControl == this) {
m_owner->m_renameControl = NULL;
m_owner->m_editItem = NULL;
}
// ...
}
// ...
}
In the next EditLabel call, the following code will crash, because
m_renameControl pointer is dangling.
if (m_renameControl) {
m_renameControl->CancelEdit();
}
I patched this bug by moving the "m_owner->m_renameControl = NULL" above the "if
(m_finished) return;" in CancelEdit. The patch works for me but may be wrong in
some way; unfortunately, I don't have time to think it over and test it. So
please fix this major bug as you see fit.
Bug 2. After editing a label, I kill the focus of the edit control by clicking
outside. If the click happens to land on one of the other tree-list columns,
then that column gets updated with the new text, not the main column.
Since I only need to edit the main column, I changed this line (in
wxTreeListMainWindow::OnRenameAccept)
SetItemText (m_editItem, m_curColumn, m_renameRes);
to
SetItemText (m_editItem, 0, m_renameRes);
but this is not suitable when you need other columns, too. (I didn't investigate
this one.)
There are other bugs (like crashing when removing a node with selection), which
I will report when I have the details.
Thanks,
Regards,
Yaroslav.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
wxCode-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wxcode-users